diff --git a/docs/query-help-style-guide.md b/docs/query-help-style-guide.md
index 88b9844fc224..3ed9f439490b 100644
--- a/docs/query-help-style-guide.md
+++ b/docs/query-help-style-guide.md
@@ -16,11 +16,33 @@ When you contribute a new [supported query](supported-queries.md) to this reposi
 
 ### Location and file name
 
-Query help files must have the same base name as the query they describe and must be located in the same directory.  
+Query help files must have the same base name as the query they describe and must be located in the same directory.
 
 ### File structure and layout
 
-Query help files are written using a custom XML format, and stored in a file with a `.qhelp` extension. The basic structure is as follows:
+Query help files can be written in either a custom XML format (with a `.qhelp` extension) or in Markdown (with a `.md` extension). Both formats are supported by the CodeQL documentation tooling. There are a few minor differences, noted in the section `Differences between XML and markdown formats` below.
+
+#### Markdown query help files
+
+A Markdown query help file should use the following structure and section order (note that the `Implementation notes` section is optional):
+
+```
+## Overview
+
+## Recommendation
+
+## Example
+
+## Implementation notes
+
+## References
+```
+
+Each section should be clearly marked with the appropriate heading. See the other Markdown files in this repository for examples.
+
+#### XML query help files
+
+Query help files can also be written using a custom XML format, and stored in a file with a `.qhelp` extension. The basic structure is as follows:
 
 ```xml
 <!DOCTYPE qhelp SYSTEM "qhelp.dtd">
@@ -33,7 +55,7 @@ The header and single top-level `<qhelp>` element are both mandatory.
 
 ### Section-level elements
 
-Section-level elements are used to group the information within the query help file. All query help files should include at least the following section elements, in the order specified:
+Section-level elements are used to group the information within the query help file. For both Markdown and XML formats, the following sections should be included, in the order specified:
 
 1. `overview`—a short summary of the issue that the query identifies, including an explanation of how it could affect the behavior of the program.
 2. `recommendation`—information on how to fix the issue highlighted by the query.
@@ -42,10 +64,9 @@ Section-level elements are used to group the information within the query help f
 
 For further information about the other section-level, block, list and table elements supported by query help files, see [Query help files](https://codeql.github.com/docs/writing-codeql-queries/query-help-files/) on codeql.github.com.
 
-
 ## English style
 
-You should write the overview and recommendation elements in simple English that is easy to follow. You should:
+You should write the overview and recommendation sections in simple English that is easy to follow. You should:
 
 * Use simple sentence structures and avoid complex or academic language.
 * Avoid colloquialisms and contractions.
@@ -57,10 +78,11 @@ You should write the overview and recommendation elements in simple English that
 Whenever possible, you should include a code example that helps to explain the issue you are highlighting. Any code examples that you include should adhere to the following guidelines:
 
 * The example should be less than 20 lines, but it should still clearly illustrate the issue that the query identifies.  If appropriate, then the example may also be runnable.
-* Put the code example after the recommendation element where possible. Only include an example in the description element if absolutely necessary.
+* Put the code example after the recommendation section where possible. Only include an example in the description section if absolutely necessary.
 * If you are using an example to illustrate the solution to a problem, and the change required is minor, avoid repeating the whole example. It is preferable to either describe the change required or to include a smaller snippet of the corrected code.
 * Clearly indicate which of the samples is an example of bad coding practice and which is recommended practice.
-* Define the code examples in `src` files. The language is inferred from the file extension:
+* For Markdown files, use fenced code blocks with the appropriate language identifier (for example, <code> ```java </code>).
+* For XML files, define the code examples in `src` files. The language is inferred from the file extension:
 
   ```xml
   <example>
@@ -74,11 +96,11 @@ Whenever possible, you should include a code example that helps to explain the i
   </example>
   ```
 
-Note, if any code words are included in the `overview` and `recommendation` sections, they should be formatted with `<code> ... </code>` for emphasis.
+Note, if any code words are included in the `overview` and `recommendation` sections, in Markdown they should be formatted with backticks (<code>`...`</code>) and in XML they should be formatted with`<code> ... </code>` for emphasis.
 
 ## Including references
 
-You should include one or more references, list formatted with `<li> ... </li>` for each item, to provide further information about the problem that your query is designed to find. References can be of the following types:
+You should include one or more references, formatted as an unordered list (`- ...` or `* ...`) in Markdown or with `<li> ... </li>` for each item in XML, to provide further information about the problem that your query is designed to find. References can be of the following types:
 
 ### Books
 
@@ -90,7 +112,7 @@ For example:
 
 >W. C. Wake, _Refactoring Workbook_, pp. 93 – 94, Addison-Wesley Professional, 2004.
 
-Note, & symbols need to be replaced by \&amp;. The symbol will be displayed correctly in the HTML files generated from the query help files.
+Note, & symbols need to be replaced by \&amp; in XML. The symbol will be displayed correctly in the HTML files generated from the query help files.
 
 ### Academic papers
 
@@ -98,7 +120,6 @@ If you are citing an academic paper, we recommend adopting the reference style o
 
 >S. R. Chidamber and C. F. Kemerer, _A metrics suite for object-oriented design_. IEEE Transactions on Software Engineering, 20(6):476-493, 1994.
 
-
 ### Websites
 
 If you are citing a website, please use the following format, without breadcrumb trails:
@@ -111,28 +132,123 @@ For example:
 
 ### Referencing potential security weaknesses
 
-If your query checks code for a CWE weakness, you should use the `@tags` element in the query file to reference the associated CWEs, as explained [here](query-metadata-style-guide.md). When you use these tags, a link to the appropriate entry from the [MITRE.org](https://cwe.mitre.org/scoring/index.html) site will automatically appear as a reference in the output HTML file.
+If your query checks code for a CWE weakness, you should use the `@tags` element in the query file to reference the associated CWEs, as explained [here](query-metadata-style-guide.md). When you use these tags in a query help file in the custom XML format, a link to the appropriate entry from the [MITRE.org](https://cwe.mitre.org/scoring/index.html) site will automatically appear as a reference in the output HTML file.
 
-## Validating qhelp files
+## Validating query help files
 
-Before making a pull request, please ensure the `.qhelp` files are well-formed and can be generated without errors. This can be done locally with the CodeQL CLI, as shown in the following example:
+Before making a pull request, please ensure the `.qhelp` or `.md` files are well-formed and can be generated without errors. This can be done locally with the CodeQL CLI, as shown in the following example:
 
 ```bash
 # codeql generate query-help <path_to_your_qhelp_file> --format=<format>
 # For example:
 codeql generate query-help ./myCustomQuery.qhelp --format=markdown
+codeql generate query-help ./myCustomQuery.md --format=markdown
 ```
 
+Please include the query help files (and any associated code snippets) in your pull request, but do not commit the generated Markdown.
 
-Please include the `.qhelp` files (and any associated code snippets) in your pull request, but do not commit the generated Markdown.
+More information on how to test your query help files can be found [within the documentation](https://docs.github.com/en/code-security/codeql-cli/using-the-codeql-cli/testing-query-help-files)
 
-More information on how to test your `.qhelp` files can be found [within the documentation](https://docs.github.com/en/code-security/codeql-cli/using-the-codeql-cli/testing-query-help-files)
+## Differences between XML and markdown formats
+
+1. The XML format allows for the contents of other files to be included in the output generated by processing the file, as mentioned in the section `Code examples`. This is not possible with the Markdown format.
+2. When using the XML format, references are added to the output HTML file based on CWE tags, as mentioned in the section `Referencing potential security weaknesses`.
+3. For custom queries and custom query packs, only the Markdown format is supported.
 
 ## Query help example
 
-The following example is a query help file for a query from the standard query suite for Java:
+The following example is a query help file for a query from the standard query suite for Java, shown in both Markdown and XML formats.
 
-```xml
+### Markdown example
+
+````markdown
+# Overview
+
+A control structure (an `if` statement or a loop) has a body that is either a block
+of statements surrounded by curly braces or a single statement.
+
+If you omit braces, it is particularly important to ensure that the indentation of the code
+matches the control flow of the code.
+
+## Recommendation
+
+It is usually considered good practice to include braces for all control
+structures in Java. This is because it makes it easier to maintain the code
+later. For example, it's easy to see at a glance which part of the code is in the
+scope of an `if` statement, and adding more statements to the body of the `if`
+statement is less error-prone.
+
+You should also ensure that the indentation of the code is consistent with the actual flow of
+control, so that it does not confuse programmers.
+
+## Example
+
+In the example below, the original version of `Cart` is missing braces. This means
+that the code triggers a `NullPointerException` at runtime if `i`
+is `null`.
+
+```java
+class Cart {
+    Map<Integer, Integer> items = ...
+    public void addItem(Item i) {
+        // No braces and misleading indentation.
+        if (i != null)
+            log("Adding item: " + i);
+            // Indentation suggests that the following statements
+            // are in the body of the 'if'.
+            Integer curQuantity = items.get(i.getID());
+            if (curQuantity == null) curQuantity = 0;
+            items.put(i.getID(), curQuantity+1);
+    }
+}
+```
+
+The corrected version of `Cart` does include braces, so
+that the code executes as the indentation suggests.
+
+```java
+class Cart {
+    Map<Integer, Integer> items = ...
+    public void addItem(Item i) {
+        // Braces included.
+        if (i != null) {
+            log("Adding item: " + i);
+            Integer curQuantity = items.get(i.getID());
+            if (curQuantity == null) curQuantity = 0;
+            items.put(i.getID(), curQuantity+1);
+        }
+    }
+}
+```
+
+In the following example the indentation may or may not be misleading depending on your tab width
+settings. As such, mixing tabs and spaces in this way is not recommended, since what looks fine in
+one context can be very misleading in another.
+
+```java
+// Tab width 8
+        if (b)       // Indentation: 1 tab
+                f(); // Indentation: 2 tabs
+        g();         // Indentation: 8 spaces
+
+// Tab width 4
+    if (b)   // Indentation: 1 tab
+        f(); // Indentation: 2 tabs
+        g(); // Indentation: 8 spaces
+```
+
+If you mix tabs and spaces in this way, then you might get seemingly false positives, since your
+tab width settings cannot be taken into account.
+
+## References
+
+* Java SE Documentation: [Compound Statements](https://www.oracle.com/java/technologies/javase/codeconventions-statements.html#15395)
+* Wikipedia: [Indentation style](https://en.wikipedia.org/wiki/Indentation_style)
+````
+
+### XML example
+
+````xml
 <!DOCTYPE qhelp PUBLIC
   "-//Semmle//qhelp//EN"
   "qhelp.dtd">
@@ -154,13 +270,13 @@ later. For example, it's easy to see at a glance which part of the code is in th
 scope of an <code>if</code> statement, and adding more statements to the body of the <code>if</code>
 statement is less error-prone.</p>
 
-<p>You should also ensure that the indentation of the code is consistent with the actual flow of 
+<p>You should also ensure that the indentation of the code is consistent with the actual flow of
 control, so that it does not confuse programmers.</p>
 
 </recommendation>
 <example>
 
-<p>In the example below, the original version of <code>Cart</code> is missing braces. This means 
+<p>In the example below, the original version of <code>Cart</code> is missing braces. This means
 that the code triggers a <code>NullPointerException</code> at runtime if <code>i</code>
 is <code>null</code>.</p>
 
@@ -198,4 +314,4 @@ tab width settings cannot be taken into account.
 
 </references>
 </qhelp>
-```
+````
diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java
index 22d008637c9a..f96211bd5c41 100644
--- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java
+++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java
@@ -39,6 +39,8 @@
 
 import com.google.gson.Gson;
 import com.google.gson.JsonParseException;
+import com.semmle.js.extractor.tsconfig.TsConfigJson;
+import com.semmle.js.extractor.tsconfig.CompilerOptions;
 import com.semmle.js.dependencies.AsyncFetcher;
 import com.semmle.js.dependencies.DependencyResolver;
 import com.semmle.js.dependencies.packument.PackageJson;
@@ -745,6 +747,26 @@ private CompletableFuture<?> extractSource() throws IOException {
         .filter(p -> !isFileTooLarge(p))
         .sorted(PATH_ORDERING)
         .collect(Collectors.toCollection(() -> new LinkedHashSet<>()));
+    // gather all output directories specified in tsconfig.json files
+    final List<Path> outDirs = new ArrayList<>();
+    for (Path cfg : tsconfigFiles) {
+      try {
+        String txt = new WholeIO().read(cfg);
+        TsConfigJson root = new Gson().fromJson(txt, TsConfigJson.class);
+        if (root != null && root.getCompilerOptions() != null) {
+          if (root.getCompilerOptions().getOutDir() == null) {
+            // no outDir specified, so skip this tsconfig.json
+            continue;
+          }
+          Path odir = cfg.getParent().resolve(root.getCompilerOptions().getOutDir()).toAbsolutePath().normalize();
+          outDirs.add(odir);
+        }
+      } catch (Exception e) {
+        // ignore malformed tsconfig or missing fields
+      }
+    }
+    // exclude files in output directories as configured in tsconfig.json
+    filesToExtract.removeIf(f -> outDirs.stream().anyMatch(od -> f.startsWith(od)));
 
     DependencyInstallationResult dependencyInstallationResult = DependencyInstallationResult.empty;
     if (!tsconfigFiles.isEmpty()) {
@@ -796,9 +818,19 @@ private CompletableFuture<?> extractFiles(
    */
   private boolean isFileDerivedFromTypeScriptFile(Path path, Set<Path> extractedFiles) {
     String name = path.getFileName().toString();
-    if (!name.endsWith(".js"))
+    // only skip JS variants when a corresponding TS/TSX file was already extracted
+    if (!(name.endsWith(".js")
+          || name.endsWith(".cjs")
+          || name.endsWith(".mjs")
+          || name.endsWith(".jsx")
+          || name.endsWith(".cjsx")
+          || name.endsWith(".mjsx"))) {
       return false;
-    String stem = name.substring(0, name.length() - ".js".length());
+    }
+    // strip off extension
+    int dot = name.lastIndexOf('.');
+    String stem = dot != -1 ? name.substring(0, dot) : name;
+    // if a TS/TSX file with same base name was extracted, skip this file
     for (String ext : FileType.TYPESCRIPT.getExtensions()) {
       if (extractedFiles.contains(path.getParent().resolve(stem + ext))) {
         return true;
@@ -1154,7 +1186,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
             }
 
             // extract TypeScript projects from 'tsconfig.json'
-            if (typeScriptMode == TypeScriptMode.FULL
+            if (typeScriptMode != TypeScriptMode.NONE
                 && treatAsTSConfig(file.getFileName().toString())
                 && !excludes.contains(file)
                 && isFileIncluded(file)) {
diff --git a/javascript/extractor/src/com/semmle/js/extractor/tsconfig/CompilerOptions.java b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/CompilerOptions.java
new file mode 100644
index 000000000000..fa7b664f2eb0
--- /dev/null
+++ b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/CompilerOptions.java
@@ -0,0 +1,13 @@
+package com.semmle.js.extractor.tsconfig;
+
+public class CompilerOptions {
+  private String outDir;
+
+  public String getOutDir() {
+    return outDir;
+  }
+
+  public void setOutDir(String outDir) {
+    this.outDir = outDir;
+  }
+}
diff --git a/javascript/extractor/src/com/semmle/js/extractor/tsconfig/TsConfigJson.java b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/TsConfigJson.java
new file mode 100644
index 000000000000..9e12d5cc0aa9
--- /dev/null
+++ b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/TsConfigJson.java
@@ -0,0 +1,13 @@
+package com.semmle.js.extractor.tsconfig;
+
+public class TsConfigJson {
+  private CompilerOptions compilerOptions;
+
+  public CompilerOptions getCompilerOptions() {
+    return compilerOptions;
+  }
+
+  public void setCompilerOptions(CompilerOptions compilerOptions) {
+    this.compilerOptions = compilerOptions;
+  }
+}
diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java
index 0a924d54319a..28c8e593dcd1 100644
--- a/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java
+++ b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java
@@ -135,6 +135,7 @@ public void extractTypeScriptFiles(
             FileExtractors extractors) {
           for (Path f : files) {
             actual.add(f.toString());
+            extractedFiles.add(f);
           }
         }
 
@@ -175,7 +176,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
 
   @Test
   public void basicTest() throws IOException {
-    addFile(true, LGTM_SRC, "tst.js");
+    addFile(false, LGTM_SRC, "tst.js");
     addFile(true, LGTM_SRC, "tst.ts");
     addFile(true, LGTM_SRC, "tst.html");
     addFile(true, LGTM_SRC, "tst.xsjs");
@@ -203,6 +204,43 @@ public void typescriptWrongConfig() throws IOException {
     runTest();
   }
 
+  @Test
+  public void skipJsFilesDerivedFromTypeScriptFiles() throws IOException {
+    // JS-derived files (.js, .cjs, .mjs, .jsx, .cjsx, .mjsx) should be skipped when TS indexing
+    envVars.put("LGTM_INDEX_TYPESCRIPT", "basic");
+    // Add TypeScript sources
+    addFile(true, LGTM_SRC, "foo.ts");
+    addFile(true, LGTM_SRC, "bar.tsx");
+    // Add derived JS variants (should be skipped)
+    addFile(false, LGTM_SRC, "foo.js");
+    addFile(false, LGTM_SRC, "bar.jsx");
+    addFile(false, LGTM_SRC, "foo.cjs");
+    addFile(false, LGTM_SRC, "foo.mjs");
+    addFile(false, LGTM_SRC, "bar.cjsx");
+    addFile(false, LGTM_SRC, "bar.mjsx");
+    // A normal JS file without TS counterpart should be extracted
+    addFile(true, LGTM_SRC, "normal.js");
+    runTest();
+  }
+
+  @Test
+  public void skipFilesInTsconfigOutDir() throws IOException {
+    envVars.put("LGTM_INDEX_TYPESCRIPT", "basic");
+    // Files under outDir in tsconfig.json should be excluded
+    // Create tsconfig.json with outDir set to "dist"
+    addFile(true, LGTM_SRC, "tsconfig.json");
+    Path config = Paths.get(LGTM_SRC.toString(), "tsconfig.json");
+    Files.write(config,
+        "{\"compilerOptions\":{\"outDir\":\"dist\"}}".getBytes(StandardCharsets.UTF_8));
+    // Add files outside outDir (should be extracted)
+    addFile(true, LGTM_SRC, "src", "app.ts");
+    addFile(true, LGTM_SRC, "main.js");
+    // Add files under dist/outDir (should be skipped)
+    addFile(false, LGTM_SRC, "dist", "generated.js");
+    addFile(false, LGTM_SRC, "dist", "sub", "x.js");
+    runTest();
+  }
+
   @Test
   public void includeFile() throws IOException {
     envVars.put("LGTM_INDEX_INCLUDE", "tst.js");
diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected
index bf646822ddc4..6894a776b379 100644
--- a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected
+++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected
@@ -1,9 +1,99 @@
+ql/javascript/ql/src/AngularJS/DependencyMismatch.ql
+ql/javascript/ql/src/AngularJS/DuplicateDependency.ql
+ql/javascript/ql/src/AngularJS/IncompatibleService.ql
+ql/javascript/ql/src/AngularJS/MissingExplicitInjection.ql
+ql/javascript/ql/src/AngularJS/RepeatedInjection.ql
+ql/javascript/ql/src/AngularJS/UseNgSrc.ql
+ql/javascript/ql/src/DOM/DuplicateAttributes.ql
+ql/javascript/ql/src/DOM/MalformedIdAttribute.ql
+ql/javascript/ql/src/DOM/PseudoEval.ql
+ql/javascript/ql/src/Declarations/ArgumentsRedefined.ql
+ql/javascript/ql/src/Declarations/AssignmentToConst.ql
+ql/javascript/ql/src/Declarations/ClobberingVarInit.ql
+ql/javascript/ql/src/Declarations/ConflictingFunctions.ql
+ql/javascript/ql/src/Declarations/DeadStoreOfLocal.ql
+ql/javascript/ql/src/Declarations/DeadStoreOfProperty.ql
+ql/javascript/ql/src/Declarations/DeclBeforeUse.ql
+ql/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql
+ql/javascript/ql/src/Declarations/DuplicateVarDecl.ql
 ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql
+ql/javascript/ql/src/Declarations/MissingThisQualifier.ql
+ql/javascript/ql/src/Declarations/MissingVarDecl.ql
+ql/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql
 ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql
+ql/javascript/ql/src/Declarations/TemporalDeadZone.ql
+ql/javascript/ql/src/Declarations/UniqueParameterNames.ql
+ql/javascript/ql/src/Declarations/UniquePropertyNames.ql
+ql/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql
+ql/javascript/ql/src/Declarations/UnusedVariable.ql
+ql/javascript/ql/src/Expressions/ComparisonWithNaN.ql
+ql/javascript/ql/src/Expressions/DuplicateCondition.ql
+ql/javascript/ql/src/Expressions/DuplicateProperty.ql
+ql/javascript/ql/src/Expressions/DuplicateSwitchCase.ql
 ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql
+ql/javascript/ql/src/Expressions/HeterogeneousComparison.ql
+ql/javascript/ql/src/Expressions/ImplicitOperandConversion.ql
 ql/javascript/ql/src/Expressions/MissingAwait.ql
+ql/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql
+ql/javascript/ql/src/Expressions/MissingSpaceInAppend.ql
+ql/javascript/ql/src/Expressions/MisspelledVariableName.ql
+ql/javascript/ql/src/Expressions/RedundantExpression.ql
+ql/javascript/ql/src/Expressions/SelfAssignment.ql
+ql/javascript/ql/src/Expressions/ShiftOutOfRange.ql
+ql/javascript/ql/src/Expressions/StringInsteadOfRegex.ql
+ql/javascript/ql/src/Expressions/SuspiciousInvocation.ql
+ql/javascript/ql/src/Expressions/SuspiciousPropAccess.ql
+ql/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql
+ql/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql
+ql/javascript/ql/src/Expressions/UnknownDirective.ql
+ql/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql
+ql/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql
+ql/javascript/ql/src/LanguageFeatures/BadTypeof.ql
+ql/javascript/ql/src/LanguageFeatures/ConditionalComments.ql
+ql/javascript/ql/src/LanguageFeatures/DeleteVar.ql
+ql/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql
+ql/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql
+ql/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql
+ql/javascript/ql/src/LanguageFeatures/InconsistentNew.ql
+ql/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql
+ql/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql
+ql/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql
+ql/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql
+ql/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql
+ql/javascript/ql/src/LanguageFeatures/SetterReturn.ql
 ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql
+ql/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql
+ql/javascript/ql/src/LanguageFeatures/SyntaxError.ql
 ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql
+ql/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql
+ql/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql
+ql/javascript/ql/src/LanguageFeatures/WithStatement.ql
+ql/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql
+ql/javascript/ql/src/NodeJS/InvalidExport.ql
+ql/javascript/ql/src/NodeJS/MissingExports.ql
 ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql
+ql/javascript/ql/src/React/DirectStateMutation.ql
+ql/javascript/ql/src/React/InconsistentStateUpdate.ql
+ql/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql
+ql/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql
+ql/javascript/ql/src/RegExp/BackrefBeforeGroup.ql
+ql/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql
 ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql
+ql/javascript/ql/src/RegExp/EmptyCharacterClass.ql
 ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql
+ql/javascript/ql/src/RegExp/UnboundBackref.ql
+ql/javascript/ql/src/RegExp/UnmatchableCaret.ql
+ql/javascript/ql/src/RegExp/UnmatchableDollar.ql
+ql/javascript/ql/src/Statements/DanglingElse.ql
+ql/javascript/ql/src/Statements/IgnoreArrayResult.ql
+ql/javascript/ql/src/Statements/InconsistentLoopOrientation.ql
+ql/javascript/ql/src/Statements/LabelInCase.ql
+ql/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql
+ql/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql
+ql/javascript/ql/src/Statements/ReturnAssignsLocal.ql
+ql/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql
+ql/javascript/ql/src/Statements/UnreachableStatement.ql
+ql/javascript/ql/src/Statements/UseOfReturnlessFunction.ql
+ql/javascript/ql/src/Statements/UselessComparisonTest.ql
+ql/javascript/ql/src/Statements/UselessConditional.ql
+ql/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql
diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected
index bf646822ddc4..6894a776b379 100644
--- a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected
+++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected
@@ -1,9 +1,99 @@
+ql/javascript/ql/src/AngularJS/DependencyMismatch.ql
+ql/javascript/ql/src/AngularJS/DuplicateDependency.ql
+ql/javascript/ql/src/AngularJS/IncompatibleService.ql
+ql/javascript/ql/src/AngularJS/MissingExplicitInjection.ql
+ql/javascript/ql/src/AngularJS/RepeatedInjection.ql
+ql/javascript/ql/src/AngularJS/UseNgSrc.ql
+ql/javascript/ql/src/DOM/DuplicateAttributes.ql
+ql/javascript/ql/src/DOM/MalformedIdAttribute.ql
+ql/javascript/ql/src/DOM/PseudoEval.ql
+ql/javascript/ql/src/Declarations/ArgumentsRedefined.ql
+ql/javascript/ql/src/Declarations/AssignmentToConst.ql
+ql/javascript/ql/src/Declarations/ClobberingVarInit.ql
+ql/javascript/ql/src/Declarations/ConflictingFunctions.ql
+ql/javascript/ql/src/Declarations/DeadStoreOfLocal.ql
+ql/javascript/ql/src/Declarations/DeadStoreOfProperty.ql
+ql/javascript/ql/src/Declarations/DeclBeforeUse.ql
+ql/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql
+ql/javascript/ql/src/Declarations/DuplicateVarDecl.ql
 ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql
+ql/javascript/ql/src/Declarations/MissingThisQualifier.ql
+ql/javascript/ql/src/Declarations/MissingVarDecl.ql
+ql/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql
 ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql
+ql/javascript/ql/src/Declarations/TemporalDeadZone.ql
+ql/javascript/ql/src/Declarations/UniqueParameterNames.ql
+ql/javascript/ql/src/Declarations/UniquePropertyNames.ql
+ql/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql
+ql/javascript/ql/src/Declarations/UnusedVariable.ql
+ql/javascript/ql/src/Expressions/ComparisonWithNaN.ql
+ql/javascript/ql/src/Expressions/DuplicateCondition.ql
+ql/javascript/ql/src/Expressions/DuplicateProperty.ql
+ql/javascript/ql/src/Expressions/DuplicateSwitchCase.ql
 ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql
+ql/javascript/ql/src/Expressions/HeterogeneousComparison.ql
+ql/javascript/ql/src/Expressions/ImplicitOperandConversion.ql
 ql/javascript/ql/src/Expressions/MissingAwait.ql
+ql/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql
+ql/javascript/ql/src/Expressions/MissingSpaceInAppend.ql
+ql/javascript/ql/src/Expressions/MisspelledVariableName.ql
+ql/javascript/ql/src/Expressions/RedundantExpression.ql
+ql/javascript/ql/src/Expressions/SelfAssignment.ql
+ql/javascript/ql/src/Expressions/ShiftOutOfRange.ql
+ql/javascript/ql/src/Expressions/StringInsteadOfRegex.ql
+ql/javascript/ql/src/Expressions/SuspiciousInvocation.ql
+ql/javascript/ql/src/Expressions/SuspiciousPropAccess.ql
+ql/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql
+ql/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql
+ql/javascript/ql/src/Expressions/UnknownDirective.ql
+ql/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql
+ql/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql
+ql/javascript/ql/src/LanguageFeatures/BadTypeof.ql
+ql/javascript/ql/src/LanguageFeatures/ConditionalComments.ql
+ql/javascript/ql/src/LanguageFeatures/DeleteVar.ql
+ql/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql
+ql/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql
+ql/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql
+ql/javascript/ql/src/LanguageFeatures/InconsistentNew.ql
+ql/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql
+ql/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql
+ql/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql
+ql/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql
+ql/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql
+ql/javascript/ql/src/LanguageFeatures/SetterReturn.ql
 ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql
+ql/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql
+ql/javascript/ql/src/LanguageFeatures/SyntaxError.ql
 ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql
+ql/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql
+ql/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql
+ql/javascript/ql/src/LanguageFeatures/WithStatement.ql
+ql/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql
+ql/javascript/ql/src/NodeJS/InvalidExport.ql
+ql/javascript/ql/src/NodeJS/MissingExports.ql
 ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql
+ql/javascript/ql/src/React/DirectStateMutation.ql
+ql/javascript/ql/src/React/InconsistentStateUpdate.ql
+ql/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql
+ql/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql
+ql/javascript/ql/src/RegExp/BackrefBeforeGroup.ql
+ql/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql
 ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql
+ql/javascript/ql/src/RegExp/EmptyCharacterClass.ql
 ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql
+ql/javascript/ql/src/RegExp/UnboundBackref.ql
+ql/javascript/ql/src/RegExp/UnmatchableCaret.ql
+ql/javascript/ql/src/RegExp/UnmatchableDollar.ql
+ql/javascript/ql/src/Statements/DanglingElse.ql
+ql/javascript/ql/src/Statements/IgnoreArrayResult.ql
+ql/javascript/ql/src/Statements/InconsistentLoopOrientation.ql
+ql/javascript/ql/src/Statements/LabelInCase.ql
+ql/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql
+ql/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql
+ql/javascript/ql/src/Statements/ReturnAssignsLocal.ql
+ql/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql
+ql/javascript/ql/src/Statements/UnreachableStatement.ql
+ql/javascript/ql/src/Statements/UseOfReturnlessFunction.ql
+ql/javascript/ql/src/Statements/UselessComparisonTest.ql
+ql/javascript/ql/src/Statements/UselessConditional.ql
+ql/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql
diff --git a/javascript/ql/lib/change-notes/2025-06-05-skip-obviously-generated-files.md b/javascript/ql/lib/change-notes/2025-06-05-skip-obviously-generated-files.md
new file mode 100644
index 000000000000..16d81cb4cc30
--- /dev/null
+++ b/javascript/ql/lib/change-notes/2025-06-05-skip-obviously-generated-files.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The JavaScript extractor now skips generated JavaScript files if the original TypeScript files are already present. It also skips any files in the output directory specified in the `compilerOptions` part of the `tsconfig.json` file.
diff --git a/javascript/ql/lib/change-notes/2025-06-16-middleware-express.md b/javascript/ql/lib/change-notes/2025-06-16-middleware-express.md
new file mode 100644
index 000000000000..600aad8bafcf
--- /dev/null
+++ b/javascript/ql/lib/change-notes/2025-06-16-middleware-express.md
@@ -0,0 +1,5 @@
+---
+category: minorAnalysis
+---
+* Improved data flow tracking through middleware to handle default value and similar patterns.
+* Added `req._parsedUrl` as a remote input source.
diff --git a/javascript/ql/lib/semmle/javascript/Routing.qll b/javascript/ql/lib/semmle/javascript/Routing.qll
index 530322a2d2c4..8fe9f79d8623 100644
--- a/javascript/ql/lib/semmle/javascript/Routing.qll
+++ b/javascript/ql/lib/semmle/javascript/Routing.qll
@@ -925,7 +925,7 @@ module Routing {
   private DataFlow::Node getAnAccessPathRhs(Node base, int n, string path) {
     // Assigned in the body of a route handler function, which is a middleware
     exists(RouteHandler handler | base = handler |
-      result = AccessPath::getAnAssignmentTo(handler.getParameter(n).ref(), path) and
+      result = AccessPath::getAnAssignmentTo(handler.getParameter(n).ref(), path).getALocalSource() and
       (
         exists(handler.getAContinuationInvocation())
         or
diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Express.qll b/javascript/ql/lib/semmle/javascript/frameworks/Express.qll
index ffeee7df73ee..bcfcffb82a0f 100644
--- a/javascript/ql/lib/semmle/javascript/frameworks/Express.qll
+++ b/javascript/ql/lib/semmle/javascript/frameworks/Express.qll
@@ -618,9 +618,9 @@ module Express {
         kind = "body" and
         this = ref.getAPropertyRead("body")
         or
-        // `req.path`
+        // `req.path` and `req._parsedUrl`
         kind = "url" and
-        this = ref.getAPropertyRead("path")
+        this = ref.getAPropertyRead(["path", "_parsedUrl"])
       )
     }
 
diff --git a/javascript/ql/src/AngularJS/DependencyMismatch.ql b/javascript/ql/src/AngularJS/DependencyMismatch.ql
index 83f9b1cb73ac..a6990a444779 100644
--- a/javascript/ql/src/AngularJS/DependencyMismatch.ql
+++ b/javascript/ql/src/AngularJS/DependencyMismatch.ql
@@ -7,8 +7,9 @@
  * @problem.severity warning
  * @precision very-high
  * @id js/angular/dependency-injection-mismatch
- * @tags correctness
- *       maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/angularjs
  */
 
diff --git a/javascript/ql/src/AngularJS/DuplicateDependency.ql b/javascript/ql/src/AngularJS/DuplicateDependency.ql
index 12036e03339a..38f46d8acf96 100644
--- a/javascript/ql/src/AngularJS/DuplicateDependency.ql
+++ b/javascript/ql/src/AngularJS/DuplicateDependency.ql
@@ -5,7 +5,9 @@
  * @problem.severity warning
  * @precision very-high
  * @id js/angular/duplicate-dependency
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       readability
  *       frameworks/angularjs
  */
 
diff --git a/javascript/ql/src/AngularJS/IncompatibleService.ql b/javascript/ql/src/AngularJS/IncompatibleService.ql
index c22eccc2dd43..511f5c72cdc5 100644
--- a/javascript/ql/src/AngularJS/IncompatibleService.ql
+++ b/javascript/ql/src/AngularJS/IncompatibleService.ql
@@ -5,7 +5,9 @@
  * @problem.severity error
  * @precision high
  * @id js/angular/incompatible-service
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/angularjs
  */
 
diff --git a/javascript/ql/src/AngularJS/MissingExplicitInjection.ql b/javascript/ql/src/AngularJS/MissingExplicitInjection.ql
index f7ff51fb5475..4b007974bcfe 100644
--- a/javascript/ql/src/AngularJS/MissingExplicitInjection.ql
+++ b/javascript/ql/src/AngularJS/MissingExplicitInjection.ql
@@ -6,8 +6,9 @@
  * @problem.severity warning
  * @precision high
  * @id js/angular/missing-explicit-injection
- * @tags correctness
- *         maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/angularjs
  */
 
diff --git a/javascript/ql/src/AngularJS/RepeatedInjection.ql b/javascript/ql/src/AngularJS/RepeatedInjection.ql
index 27fb0dc2f621..8c1d1379893e 100644
--- a/javascript/ql/src/AngularJS/RepeatedInjection.ql
+++ b/javascript/ql/src/AngularJS/RepeatedInjection.ql
@@ -5,7 +5,9 @@
  * @problem.severity warning
  * @precision high
  * @id js/angular/repeated-dependency-injection
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       readability
  *       frameworks/angularjs
  */
 
diff --git a/javascript/ql/src/AngularJS/UseNgSrc.ql b/javascript/ql/src/AngularJS/UseNgSrc.ql
index 333b36722f53..51255af80710 100644
--- a/javascript/ql/src/AngularJS/UseNgSrc.ql
+++ b/javascript/ql/src/AngularJS/UseNgSrc.ql
@@ -7,7 +7,9 @@
  * @problem.severity warning
  * @precision very-high
  * @id js/angular/expression-in-url-attribute
- * @tags maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/angularjs
  */
 
diff --git a/javascript/ql/src/DOM/DuplicateAttributes.ql b/javascript/ql/src/DOM/DuplicateAttributes.ql
index 77c1ddea93bd..a6f73982f73f 100644
--- a/javascript/ql/src/DOM/DuplicateAttributes.ql
+++ b/javascript/ql/src/DOM/DuplicateAttributes.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/duplicate-html-attribute
- * @tags maintainability
+ * @tags quality
+ *       maintainability
  *       readability
  * @precision very-high
  */
diff --git a/javascript/ql/src/DOM/MalformedIdAttribute.ql b/javascript/ql/src/DOM/MalformedIdAttribute.ql
index d9a99aa1937e..dea9d25f9179 100644
--- a/javascript/ql/src/DOM/MalformedIdAttribute.ql
+++ b/javascript/ql/src/DOM/MalformedIdAttribute.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/malformed-html-id
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-758
  * @precision very-high
diff --git a/javascript/ql/src/DOM/PseudoEval.ql b/javascript/ql/src/DOM/PseudoEval.ql
index c6bed6ed75bf..9ea1e9d2fb40 100644
--- a/javascript/ql/src/DOM/PseudoEval.ql
+++ b/javascript/ql/src/DOM/PseudoEval.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/eval-like-call
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       readability
  *       external/cwe/cwe-676
  * @precision very-high
  */
diff --git a/javascript/ql/src/Declarations/ArgumentsRedefined.ql b/javascript/ql/src/Declarations/ArgumentsRedefined.ql
index dc1ca153062f..01d0451d6f41 100644
--- a/javascript/ql/src/Declarations/ArgumentsRedefined.ql
+++ b/javascript/ql/src/Declarations/ArgumentsRedefined.ql
@@ -6,8 +6,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/arguments-redefinition
- * @tags efficiency
- *       maintainability
+ * @tags quality
+ *       reliability
+ *       performance
  * @precision very-high
  */
 
diff --git a/javascript/ql/src/Declarations/AssignmentToConst.ql b/javascript/ql/src/Declarations/AssignmentToConst.ql
index f2a24832c6a3..2aebfad0054e 100644
--- a/javascript/ql/src/Declarations/AssignmentToConst.ql
+++ b/javascript/ql/src/Declarations/AssignmentToConst.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/assignment-to-constant
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision very-high
  */
diff --git a/javascript/ql/src/Declarations/ClobberingVarInit.ql b/javascript/ql/src/Declarations/ClobberingVarInit.ql
index 2ae7a8910354..5a3fe406d7e0 100644
--- a/javascript/ql/src/Declarations/ClobberingVarInit.ql
+++ b/javascript/ql/src/Declarations/ClobberingVarInit.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/variable-initialization-conflict
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-563
  * @precision very-high
diff --git a/javascript/ql/src/Declarations/ConflictingFunctions.ql b/javascript/ql/src/Declarations/ConflictingFunctions.ql
index 60f3200c369f..e15f49acd93f 100644
--- a/javascript/ql/src/Declarations/ConflictingFunctions.ql
+++ b/javascript/ql/src/Declarations/ConflictingFunctions.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/function-declaration-conflict
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-563
  * @precision high
diff --git a/javascript/ql/src/Declarations/DeadStoreOfLocal.ql b/javascript/ql/src/Declarations/DeadStoreOfLocal.ql
index 70b3ba0e2e2b..b09e1435739f 100644
--- a/javascript/ql/src/Declarations/DeadStoreOfLocal.ql
+++ b/javascript/ql/src/Declarations/DeadStoreOfLocal.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/useless-assignment-to-local
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       useless-code
  *       external/cwe/cwe-563
  * @precision very-high
  */
diff --git a/javascript/ql/src/Declarations/DeadStoreOfProperty.ql b/javascript/ql/src/Declarations/DeadStoreOfProperty.ql
index c8cb0d8536e8..8930a13dfa4e 100644
--- a/javascript/ql/src/Declarations/DeadStoreOfProperty.ql
+++ b/javascript/ql/src/Declarations/DeadStoreOfProperty.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/useless-assignment-to-property
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       useless-code
  * @precision high
  */
 
diff --git a/javascript/ql/src/Declarations/DeclBeforeUse.ql b/javascript/ql/src/Declarations/DeclBeforeUse.ql
index b58fab9e465f..ddf715cefdb9 100644
--- a/javascript/ql/src/Declarations/DeclBeforeUse.ql
+++ b/javascript/ql/src/Declarations/DeclBeforeUse.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/use-before-declaration
- * @tags maintainability
+ * @tags quality
+ *       maintainability
  *       readability
  * @precision very-high
  */
diff --git a/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql b/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql
index cd13314095c1..934d2d6ddd3b 100644
--- a/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql
+++ b/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/nested-function-reference-in-default-parameter
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision very-high
  */
diff --git a/javascript/ql/src/Declarations/DuplicateVarDecl.ql b/javascript/ql/src/Declarations/DuplicateVarDecl.ql
index 4a1c1bdb38fc..03dd4bb75173 100644
--- a/javascript/ql/src/Declarations/DuplicateVarDecl.ql
+++ b/javascript/ql/src/Declarations/DuplicateVarDecl.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/duplicate-variable-declaration
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       readability
  * @precision very-high
  */
 
diff --git a/javascript/ql/src/Declarations/IneffectiveParameterType.ql b/javascript/ql/src/Declarations/IneffectiveParameterType.ql
index 18899bd0c4e6..58480a84bf21 100644
--- a/javascript/ql/src/Declarations/IneffectiveParameterType.ql
+++ b/javascript/ql/src/Declarations/IneffectiveParameterType.ql
@@ -5,9 +5,10 @@
  * @problem.severity warning
  * @id js/ineffective-parameter-type
  * @precision high
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       typescript
- *       quality
  */
 
 import javascript
diff --git a/javascript/ql/src/Declarations/MissingThisQualifier.ql b/javascript/ql/src/Declarations/MissingThisQualifier.ql
index 0d41cf19b19a..3bdf1080b11e 100644
--- a/javascript/ql/src/Declarations/MissingThisQualifier.ql
+++ b/javascript/ql/src/Declarations/MissingThisQualifier.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/missing-this-qualifier
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       methods
  * @precision high
diff --git a/javascript/ql/src/Declarations/MissingVarDecl.ql b/javascript/ql/src/Declarations/MissingVarDecl.ql
index 8dd40cb064a2..390fc0af51cd 100644
--- a/javascript/ql/src/Declarations/MissingVarDecl.ql
+++ b/javascript/ql/src/Declarations/MissingVarDecl.ql
@@ -5,8 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/missing-variable-declaration
- * @tags reliability
- *       maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
diff --git a/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql b/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql
index a8f771706f17..5941e51d3b03 100644
--- a/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql
+++ b/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/mixed-static-instance-this-access
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       methods
  * @precision high
  */
diff --git a/javascript/ql/src/Declarations/TemporalDeadZone.ql b/javascript/ql/src/Declarations/TemporalDeadZone.ql
index dbb5f7275d35..f51303ee3921 100644
--- a/javascript/ql/src/Declarations/TemporalDeadZone.ql
+++ b/javascript/ql/src/Declarations/TemporalDeadZone.ql
@@ -5,8 +5,10 @@
  * @kind problem
  * @problem.severity error
  * @id js/variable-use-in-temporal-dead-zone
- * @tags portability
+ * @tags quality
+ *       reliability
  *       correctness
+ *       portability
  * @precision very-high
  */
 
diff --git a/javascript/ql/src/Declarations/UniqueParameterNames.ql b/javascript/ql/src/Declarations/UniqueParameterNames.ql
index bb595cbe6070..53b3657b9661 100644
--- a/javascript/ql/src/Declarations/UniqueParameterNames.ql
+++ b/javascript/ql/src/Declarations/UniqueParameterNames.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/duplicate-parameter-name
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision very-high
  */
diff --git a/javascript/ql/src/Declarations/UniquePropertyNames.ql b/javascript/ql/src/Declarations/UniquePropertyNames.ql
index e98857945ad8..f168b46c54ec 100644
--- a/javascript/ql/src/Declarations/UniquePropertyNames.ql
+++ b/javascript/ql/src/Declarations/UniquePropertyNames.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/overwritten-property
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-563
  * @precision very-high
diff --git a/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql b/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql
index 23406eb0b72a..a68617ea2f11 100644
--- a/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql
+++ b/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql
@@ -7,7 +7,9 @@
  * @problem.severity warning
  * @id js/unreachable-method-overloads
  * @precision high
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       typescript
  */
 
diff --git a/javascript/ql/src/Declarations/UnusedVariable.ql b/javascript/ql/src/Declarations/UnusedVariable.ql
index 7346b58c0494..66e15cdbf81a 100644
--- a/javascript/ql/src/Declarations/UnusedVariable.ql
+++ b/javascript/ql/src/Declarations/UnusedVariable.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/unused-local-variable
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       useless-code
  * @precision very-high
  */
 
diff --git a/javascript/ql/src/Expressions/ComparisonWithNaN.ql b/javascript/ql/src/Expressions/ComparisonWithNaN.ql
index 82a45a3a5629..1fb61b489651 100644
--- a/javascript/ql/src/Expressions/ComparisonWithNaN.ql
+++ b/javascript/ql/src/Expressions/ComparisonWithNaN.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/comparison-with-nan
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-570
  *       external/cwe/cwe-571
diff --git a/javascript/ql/src/Expressions/DuplicateCondition.ql b/javascript/ql/src/Expressions/DuplicateCondition.ql
index a13a0f158104..1f58d9d200a3 100644
--- a/javascript/ql/src/Expressions/DuplicateCondition.ql
+++ b/javascript/ql/src/Expressions/DuplicateCondition.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/duplicate-condition
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-561
  * @precision very-high
diff --git a/javascript/ql/src/Expressions/DuplicateProperty.ql b/javascript/ql/src/Expressions/DuplicateProperty.ql
index af518842a618..febdfe5b8826 100644
--- a/javascript/ql/src/Expressions/DuplicateProperty.ql
+++ b/javascript/ql/src/Expressions/DuplicateProperty.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/duplicate-property
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       readability
  *       external/cwe/cwe-563
  * @precision very-high
  */
diff --git a/javascript/ql/src/Expressions/DuplicateSwitchCase.ql b/javascript/ql/src/Expressions/DuplicateSwitchCase.ql
index 56cb848dba14..1ef8aa76a4ba 100644
--- a/javascript/ql/src/Expressions/DuplicateSwitchCase.ql
+++ b/javascript/ql/src/Expressions/DuplicateSwitchCase.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/duplicate-switch-case
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-561
  * @precision very-high
diff --git a/javascript/ql/src/Expressions/ExprHasNoEffect.ql b/javascript/ql/src/Expressions/ExprHasNoEffect.ql
index 9cdb22b8ecf0..fd613d3aa9f8 100644
--- a/javascript/ql/src/Expressions/ExprHasNoEffect.ql
+++ b/javascript/ql/src/Expressions/ExprHasNoEffect.ql
@@ -7,10 +7,9 @@
  * @id js/useless-expression
  * @tags quality
  *       maintainability
- *       correctness
+ *       useless-code
  *       external/cwe/cwe-480
  *       external/cwe/cwe-561
- *       useless-code
  * @precision very-high
  */
 
diff --git a/javascript/ql/src/Expressions/HeterogeneousComparison.ql b/javascript/ql/src/Expressions/HeterogeneousComparison.ql
index 3b4c59f08b68..e99adad21cdb 100644
--- a/javascript/ql/src/Expressions/HeterogeneousComparison.ql
+++ b/javascript/ql/src/Expressions/HeterogeneousComparison.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/comparison-between-incompatible-types
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-570
  *       external/cwe/cwe-571
diff --git a/javascript/ql/src/Expressions/ImplicitOperandConversion.ql b/javascript/ql/src/Expressions/ImplicitOperandConversion.ql
index 5d3f16e0eb8b..eda12e9d98b3 100644
--- a/javascript/ql/src/Expressions/ImplicitOperandConversion.ql
+++ b/javascript/ql/src/Expressions/ImplicitOperandConversion.ql
@@ -5,8 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/implicit-operand-conversion
- * @tags reliability
- *       readability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       external/cwe/cwe-704
  * @precision very-high
  */
diff --git a/javascript/ql/src/Expressions/MissingAwait.ql b/javascript/ql/src/Expressions/MissingAwait.ql
index a16d31ee2a57..a537156da015 100644
--- a/javascript/ql/src/Expressions/MissingAwait.ql
+++ b/javascript/ql/src/Expressions/MissingAwait.ql
@@ -4,8 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/missing-await
- * @tags correctness
- *       quality
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
diff --git a/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql b/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql
index 705b3eedfc07..1d16bb346fc7 100644
--- a/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql
+++ b/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql
@@ -6,7 +6,9 @@
  * @problem.severity warning
  * @id js/missing-dot-length-in-comparison
  * @precision high
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  */
 
 import javascript
diff --git a/javascript/ql/src/Expressions/MissingSpaceInAppend.ql b/javascript/ql/src/Expressions/MissingSpaceInAppend.ql
index 7589c0d54f32..d4c2bcb18ac6 100644
--- a/javascript/ql/src/Expressions/MissingSpaceInAppend.ql
+++ b/javascript/ql/src/Expressions/MissingSpaceInAppend.ql
@@ -7,7 +7,9 @@
  * @problem.severity warning
  * @precision very-high
  * @id js/missing-space-in-concatenation
- * @tags readability
+ * @tags quality
+ *       maintainability
+ *       readability
  */
 
 import javascript
diff --git a/javascript/ql/src/Expressions/MisspelledVariableName.ql b/javascript/ql/src/Expressions/MisspelledVariableName.ql
index b6f0ad88e3ed..7444ba3a5d92 100644
--- a/javascript/ql/src/Expressions/MisspelledVariableName.ql
+++ b/javascript/ql/src/Expressions/MisspelledVariableName.ql
@@ -6,8 +6,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/misspelled-variable-name
- * @tags maintainability
- *       readability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision very-high
  */
diff --git a/javascript/ql/src/Expressions/RedundantExpression.ql b/javascript/ql/src/Expressions/RedundantExpression.ql
index bf668bd649f1..35b86a9f0256 100644
--- a/javascript/ql/src/Expressions/RedundantExpression.ql
+++ b/javascript/ql/src/Expressions/RedundantExpression.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/redundant-operation
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-480
  *       external/cwe/cwe-561
diff --git a/javascript/ql/src/Expressions/SelfAssignment.ql b/javascript/ql/src/Expressions/SelfAssignment.ql
index 784f01fa7426..603762b5952f 100644
--- a/javascript/ql/src/Expressions/SelfAssignment.ql
+++ b/javascript/ql/src/Expressions/SelfAssignment.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/redundant-assignment
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-480
  *       external/cwe/cwe-561
diff --git a/javascript/ql/src/Expressions/ShiftOutOfRange.ql b/javascript/ql/src/Expressions/ShiftOutOfRange.ql
index ec8b801cbe67..395baaff11f5 100644
--- a/javascript/ql/src/Expressions/ShiftOutOfRange.ql
+++ b/javascript/ql/src/Expressions/ShiftOutOfRange.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/shift-out-of-range
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-197
  * @precision very-high
diff --git a/javascript/ql/src/Expressions/StringInsteadOfRegex.ql b/javascript/ql/src/Expressions/StringInsteadOfRegex.ql
index c00088abcd91..44d07ee98e6a 100644
--- a/javascript/ql/src/Expressions/StringInsteadOfRegex.ql
+++ b/javascript/ql/src/Expressions/StringInsteadOfRegex.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/string-instead-of-regex
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
diff --git a/javascript/ql/src/Expressions/SuspiciousInvocation.ql b/javascript/ql/src/Expressions/SuspiciousInvocation.ql
index ca7281eba5cd..1472e2dbe2ff 100644
--- a/javascript/ql/src/Expressions/SuspiciousInvocation.ql
+++ b/javascript/ql/src/Expressions/SuspiciousInvocation.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/call-to-non-callable
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       external/cwe/cwe-476
  * @precision high
  */
diff --git a/javascript/ql/src/Expressions/SuspiciousPropAccess.ql b/javascript/ql/src/Expressions/SuspiciousPropAccess.ql
index f51674a04187..88ce9dda7c43 100644
--- a/javascript/ql/src/Expressions/SuspiciousPropAccess.ql
+++ b/javascript/ql/src/Expressions/SuspiciousPropAccess.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/property-access-on-non-object
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       external/cwe/cwe-476
  * @precision high
  */
diff --git a/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql b/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql
index fa10e4786c46..4cc94c5852b1 100644
--- a/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql
+++ b/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/unbound-event-handler-receiver
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
diff --git a/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql b/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql
index 869971f5f1fb..104e7188e7e7 100644
--- a/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql
+++ b/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql
@@ -5,8 +5,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/unclear-operator-precedence
- * @tags maintainability
- *       correctness
+ * @tags quality
+ *       maintainability
+ *       readability
  *       statistical
  *       non-attributable
  *       external/cwe/cwe-783
diff --git a/javascript/ql/src/Expressions/UnknownDirective.ql b/javascript/ql/src/Expressions/UnknownDirective.ql
index 331b61cafda9..be91cf5ff896 100644
--- a/javascript/ql/src/Expressions/UnknownDirective.ql
+++ b/javascript/ql/src/Expressions/UnknownDirective.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/unknown-directive
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
diff --git a/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql b/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql
index 8e5cd8cf431e..3b06187a2074 100644
--- a/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql
+++ b/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/unneeded-defensive-code
- * @tags correctness
+ * @tags quality
+ *       maintainability
+ *       useless-code
  *       external/cwe/cwe-570
  *       external/cwe/cwe-571
  * @precision very-high
diff --git a/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql b/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql
index 36d9f7737083..bb3d14846588 100644
--- a/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql
+++ b/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/whitespace-contradicts-precedence
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       statistical
  *       non-attributable
diff --git a/javascript/ql/src/LanguageFeatures/BadTypeof.ql b/javascript/ql/src/LanguageFeatures/BadTypeof.ql
index d287a0a1b6d2..97492d3562ad 100644
--- a/javascript/ql/src/LanguageFeatures/BadTypeof.ql
+++ b/javascript/ql/src/LanguageFeatures/BadTypeof.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/useless-type-test
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       language-features
  *       external/cwe/cwe-570
diff --git a/javascript/ql/src/LanguageFeatures/ConditionalComments.ql b/javascript/ql/src/LanguageFeatures/ConditionalComments.ql
index 255415c05640..8ded33afe59c 100644
--- a/javascript/ql/src/LanguageFeatures/ConditionalComments.ql
+++ b/javascript/ql/src/LanguageFeatures/ConditionalComments.ql
@@ -4,8 +4,10 @@
  * @kind problem
  * @problem.severity warning
  * @id js/conditional-comment
- * @tags portability
- *       maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
+ *       portability
  *       language-features
  *       external/cwe/cwe-758
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/DeleteVar.ql b/javascript/ql/src/LanguageFeatures/DeleteVar.ql
index ed3940a1c70c..715f314381b1 100644
--- a/javascript/ql/src/LanguageFeatures/DeleteVar.ql
+++ b/javascript/ql/src/LanguageFeatures/DeleteVar.ql
@@ -4,8 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/deletion-of-non-property
- * @tags reliability
- *       maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  *       external/cwe/cwe-480
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql b/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql
index db33566a7585..2e67bfb6e2b9 100644
--- a/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql
+++ b/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql
@@ -5,8 +5,10 @@
  * @kind problem
  * @problem.severity warning
  * @id js/non-standard-language-feature
- * @tags portability
+ * @tags quality
  *       maintainability
+ *       readability
+ *       portability
  *       language-features
  *       external/cwe/cwe-758
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql b/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql
index 0c13ff724371..c5f5e8bfe12a 100644
--- a/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql
+++ b/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql
@@ -5,8 +5,10 @@
  * @kind problem
  * @problem.severity error
  * @id js/for-in-comprehension
- * @tags portability
+ * @tags quality
  *       maintainability
+ *       readability
+ *       portability
  *       language-features
  *       external/cwe/cwe-758
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql b/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql
index 4c8939c41804..06f50bb60dc7 100644
--- a/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql
+++ b/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql
@@ -6,7 +6,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/illegal-invocation
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  * @precision high
  */
diff --git a/javascript/ql/src/LanguageFeatures/InconsistentNew.ql b/javascript/ql/src/LanguageFeatures/InconsistentNew.ql
index 8a14dbe37c19..9044e851496d 100644
--- a/javascript/ql/src/LanguageFeatures/InconsistentNew.ql
+++ b/javascript/ql/src/LanguageFeatures/InconsistentNew.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/inconsistent-use-of-new
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       language-features
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql b/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql
index 89dc7535c60b..8770d8dc2713 100644
--- a/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql
+++ b/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/invalid-prototype-value
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  *       external/cwe/cwe-704
  * @precision high
diff --git a/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql b/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql
index e3935386289a..4f3815d6fc6b 100644
--- a/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql
+++ b/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql
@@ -5,9 +5,11 @@
  * @kind problem
  * @problem.severity warning
  * @id js/index-out-of-bounds
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       logic
+ *       language-features
  *       external/cwe/cwe-193
  * @precision high
  */
diff --git a/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql b/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql
index 9e3c42353506..090f6b078456 100644
--- a/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql
+++ b/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/non-linear-pattern
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       language-features
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql b/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql
index 19d372f65290..cb5446256487 100644
--- a/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql
+++ b/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/property-assignment-on-primitive
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  *       external/cwe/cwe-704
  * @precision high
diff --git a/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql b/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql
index 3f99062112da..17a9da64cc0a 100644
--- a/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql
+++ b/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/automatic-semicolon-insertion
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       readability
  *       language-features
  *       statistical
  *       non-attributable
diff --git a/javascript/ql/src/LanguageFeatures/SetterReturn.ql b/javascript/ql/src/LanguageFeatures/SetterReturn.ql
index 0333246a4391..b90541d39129 100644
--- a/javascript/ql/src/LanguageFeatures/SetterReturn.ql
+++ b/javascript/ql/src/LanguageFeatures/SetterReturn.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/setter-return
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       useless-code
  *       language-features
  * @precision very-high
  */
diff --git a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql
index fd493a247a4c..82c69a1732a3 100644
--- a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql
+++ b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql
@@ -4,10 +4,10 @@
  * @kind problem
  * @problem.severity warning
  * @id js/superfluous-trailing-arguments
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       language-features
- *       quality
  *       external/cwe/cwe-685
  * @precision very-high
  */
diff --git a/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql b/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql
index b29844d90b97..7c285c45ec70 100644
--- a/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql
+++ b/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql
@@ -6,7 +6,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/strict-mode-call-stack-introspection
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  * @precision high
  */
diff --git a/javascript/ql/src/LanguageFeatures/SyntaxError.ql b/javascript/ql/src/LanguageFeatures/SyntaxError.ql
index d4428c75774e..0c9a69490f7c 100644
--- a/javascript/ql/src/LanguageFeatures/SyntaxError.ql
+++ b/javascript/ql/src/LanguageFeatures/SyntaxError.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity recommendation
  * @id js/syntax-error
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       language-features
  * @precision very-high
diff --git a/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql b/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql
index 77ce3e5e8587..e93700bdccf9 100644
--- a/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql
+++ b/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/incomplete-object-initialization
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  * @precision high
  */
diff --git a/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql b/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql
index ba39738a7774..7a8f3bdf948f 100644
--- a/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql
+++ b/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql
@@ -6,7 +6,9 @@
  * @problem.severity warning
  * @id js/unused-index-variable
  * @precision high
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  */
 
 import javascript
diff --git a/javascript/ql/src/LanguageFeatures/WithStatement.ql b/javascript/ql/src/LanguageFeatures/WithStatement.ql
index cb2cfc728d8b..25f6c4e8fc46 100644
--- a/javascript/ql/src/LanguageFeatures/WithStatement.ql
+++ b/javascript/ql/src/LanguageFeatures/WithStatement.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/with-statement
- * @tags maintainability
+ * @tags quality
+ *       maintainability
+ *       complexity
  *       language-features
  * @precision very-high
  */
diff --git a/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql b/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql
index 4f9241e7303f..8cd18991d02a 100644
--- a/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql
+++ b/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/yield-outside-generator
- * @tags maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       language-features
  *       external/cwe/cwe-758
  * @precision very-high
diff --git a/javascript/ql/src/NodeJS/InvalidExport.ql b/javascript/ql/src/NodeJS/InvalidExport.ql
index e0b4a73fd69d..95d945bc0483 100644
--- a/javascript/ql/src/NodeJS/InvalidExport.ql
+++ b/javascript/ql/src/NodeJS/InvalidExport.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/node/assignment-to-exports-variable
- * @tags maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/node.js
  *       external/cwe/cwe-563
  * @precision very-high
diff --git a/javascript/ql/src/NodeJS/MissingExports.ql b/javascript/ql/src/NodeJS/MissingExports.ql
index 15badce359ff..f10fac15b7a3 100644
--- a/javascript/ql/src/NodeJS/MissingExports.ql
+++ b/javascript/ql/src/NodeJS/MissingExports.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/node/missing-exports-qualifier
- * @tags maintainability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/node.js
  * @precision high
  */
diff --git a/javascript/ql/src/React/DirectStateMutation.ql b/javascript/ql/src/React/DirectStateMutation.ql
index 6e3d63a52148..a00f55524cd1 100644
--- a/javascript/ql/src/React/DirectStateMutation.ql
+++ b/javascript/ql/src/React/DirectStateMutation.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/react/direct-state-mutation
- * @tags reliability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/react
  * @precision very-high
  */
diff --git a/javascript/ql/src/React/InconsistentStateUpdate.ql b/javascript/ql/src/React/InconsistentStateUpdate.ql
index 31625b2187af..f46427b9c595 100644
--- a/javascript/ql/src/React/InconsistentStateUpdate.ql
+++ b/javascript/ql/src/React/InconsistentStateUpdate.ql
@@ -6,7 +6,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/react/inconsistent-state-update
- * @tags reliability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/react
  * @precision very-high
  */
diff --git a/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql b/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql
index e14b880b1b11..da49bd43ab90 100644
--- a/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql
+++ b/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/react/unsupported-state-update-in-lifecycle-method
- * @tags reliability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/react
  * @precision high
  */
diff --git a/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql b/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql
index 721d6639ac7e..24d5590185ba 100644
--- a/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql
+++ b/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql
@@ -4,8 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/react/unused-or-undefined-state-property
- * @tags correctness
+ * @tags quality
  *       reliability
+ *       correctness
  *       frameworks/react
  * @precision high
  */
diff --git a/javascript/ql/src/RegExp/BackrefBeforeGroup.ql b/javascript/ql/src/RegExp/BackrefBeforeGroup.ql
index abbc95e40b94..3572bf2cbc6e 100644
--- a/javascript/ql/src/RegExp/BackrefBeforeGroup.ql
+++ b/javascript/ql/src/RegExp/BackrefBeforeGroup.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/regex/back-reference-before-group
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       regular-expressions
  * @precision very-high
diff --git a/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql b/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql
index b2ad4722011b..6a5e1528d6d5 100644
--- a/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql
+++ b/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql
@@ -5,7 +5,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/regex/back-reference-to-negative-lookahead
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       regular-expressions
  * @precision very-high
diff --git a/javascript/ql/src/RegExp/EmptyCharacterClass.ql b/javascript/ql/src/RegExp/EmptyCharacterClass.ql
index f991de9759d2..fb336c3fbe8b 100644
--- a/javascript/ql/src/RegExp/EmptyCharacterClass.ql
+++ b/javascript/ql/src/RegExp/EmptyCharacterClass.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/regex/empty-character-class
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       regular-expressions
  * @precision very-high
diff --git a/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql b/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql
index 1d063534903e..0a9a37120d76 100644
--- a/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql
+++ b/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql
@@ -4,9 +4,10 @@
  * @kind problem
  * @problem.severity warning
  * @id js/regex/always-matches
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       regular-expressions
- *       quality
  * @precision high
  */
 
diff --git a/javascript/ql/src/RegExp/UnboundBackref.ql b/javascript/ql/src/RegExp/UnboundBackref.ql
index 00cc9536f12b..026c5472fb5e 100644
--- a/javascript/ql/src/RegExp/UnboundBackref.ql
+++ b/javascript/ql/src/RegExp/UnboundBackref.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/regex/unbound-back-reference
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       regular-expressions
  * @precision very-high
diff --git a/javascript/ql/src/RegExp/UnmatchableCaret.ql b/javascript/ql/src/RegExp/UnmatchableCaret.ql
index 4dd5a6dc26b0..401b8db73c5b 100644
--- a/javascript/ql/src/RegExp/UnmatchableCaret.ql
+++ b/javascript/ql/src/RegExp/UnmatchableCaret.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/regex/unmatchable-caret
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       regular-expressions
  *       external/cwe/cwe-561
diff --git a/javascript/ql/src/RegExp/UnmatchableDollar.ql b/javascript/ql/src/RegExp/UnmatchableDollar.ql
index 59005b454107..c5b8cd9781f9 100644
--- a/javascript/ql/src/RegExp/UnmatchableDollar.ql
+++ b/javascript/ql/src/RegExp/UnmatchableDollar.ql
@@ -6,7 +6,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/regex/unmatchable-dollar
- * @tags reliability
+ * @tags quality
+ *       reliability
  *       correctness
  *       regular-expressions
  *       external/cwe/cwe-561
diff --git a/javascript/ql/src/Statements/DanglingElse.ql b/javascript/ql/src/Statements/DanglingElse.ql
index bd9ea782db78..fdea5f67a863 100644
--- a/javascript/ql/src/Statements/DanglingElse.ql
+++ b/javascript/ql/src/Statements/DanglingElse.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/misleading-indentation-of-dangling-else
- * @tags readability
+ * @tags quality
+ *       maintainability
+ *       readability
  *       statistical
  *       non-attributable
  *       external/cwe/cwe-483
diff --git a/javascript/ql/src/Statements/IgnoreArrayResult.ql b/javascript/ql/src/Statements/IgnoreArrayResult.ql
index 9123b520f6f6..dbf035cdb647 100644
--- a/javascript/ql/src/Statements/IgnoreArrayResult.ql
+++ b/javascript/ql/src/Statements/IgnoreArrayResult.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/ignore-array-result
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision high
  */
diff --git a/javascript/ql/src/Statements/InconsistentLoopOrientation.ql b/javascript/ql/src/Statements/InconsistentLoopOrientation.ql
index 7692a9d3d201..42d8912e0154 100644
--- a/javascript/ql/src/Statements/InconsistentLoopOrientation.ql
+++ b/javascript/ql/src/Statements/InconsistentLoopOrientation.ql
@@ -8,7 +8,9 @@
  * @kind problem
  * @problem.severity error
  * @id js/inconsistent-loop-direction
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       external/cwe/cwe-835
  * @precision very-high
  */
diff --git a/javascript/ql/src/Statements/LabelInCase.ql b/javascript/ql/src/Statements/LabelInCase.ql
index e88d366136f6..15690c83bcc3 100644
--- a/javascript/ql/src/Statements/LabelInCase.ql
+++ b/javascript/ql/src/Statements/LabelInCase.ql
@@ -5,8 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/label-in-switch
- * @tags reliability
- *       readability
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision very-high
  */
 
diff --git a/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql b/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql
index 08ed90777467..d36884e15a32 100644
--- a/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql
+++ b/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/loop-iteration-skipped-due-to-shifting
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
@@ -146,7 +148,12 @@ class ArrayIterationLoop extends ForStmt {
     or
     this.hasPathThrough(splice, cfg.getAPredecessor()) and
     this.getLoopEntry().dominates(cfg.getBasicBlock()) and
-    not this.hasIndexingManipulation(cfg)
+    not this.hasIndexingManipulation(cfg) and
+    // Don't continue through a branch that tests the splice call's return value
+    not exists(ConditionGuardNode guard | cfg = guard |
+      guard.getTest() = splice.asExpr() and
+      guard.getOutcome() = false
+    )
   }
 }
 
diff --git a/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql b/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql
index 91ee1bd4c005..abfd9cde4ac9 100644
--- a/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql
+++ b/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/misleading-indentation-after-control-statement
- * @tags correctness
+ * @tags quality
+ *       maintainability
+ *       readability
  *       statistical
  *       non-attributable
  *       external/cwe/cwe-483
diff --git a/javascript/ql/src/Statements/ReturnAssignsLocal.ql b/javascript/ql/src/Statements/ReturnAssignsLocal.ql
index 6056914fd80a..e0e60e689a37 100644
--- a/javascript/ql/src/Statements/ReturnAssignsLocal.ql
+++ b/javascript/ql/src/Statements/ReturnAssignsLocal.ql
@@ -5,8 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/useless-assignment-in-return
- * @tags maintainability
- *       readability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       external/cwe/cwe-563
  * @precision very-high
  */
diff --git a/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql b/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql
index ba0d523ae752..e472c8e0dcec 100644
--- a/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql
+++ b/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity error
  * @id js/unused-loop-variable
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision high
  */
diff --git a/javascript/ql/src/Statements/UnreachableStatement.ql b/javascript/ql/src/Statements/UnreachableStatement.ql
index 092189609c02..b7d8e48980b1 100644
--- a/javascript/ql/src/Statements/UnreachableStatement.ql
+++ b/javascript/ql/src/Statements/UnreachableStatement.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/unreachable-statement
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  *       external/cwe/cwe-561
  * @precision very-high
diff --git a/javascript/ql/src/Statements/UseOfReturnlessFunction.ql b/javascript/ql/src/Statements/UseOfReturnlessFunction.ql
index 818f0d922d48..4a381f4c2df5 100644
--- a/javascript/ql/src/Statements/UseOfReturnlessFunction.ql
+++ b/javascript/ql/src/Statements/UseOfReturnlessFunction.ql
@@ -4,7 +4,8 @@
  * @kind problem
  * @problem.severity warning
  * @id js/use-of-returnless-function
- * @tags maintainability
+ * @tags quality
+ *       reliability
  *       correctness
  * @precision high
  */
diff --git a/javascript/ql/src/Statements/UselessComparisonTest.ql b/javascript/ql/src/Statements/UselessComparisonTest.ql
index 6066d7c4329b..dd87ed42b14c 100644
--- a/javascript/ql/src/Statements/UselessComparisonTest.ql
+++ b/javascript/ql/src/Statements/UselessComparisonTest.ql
@@ -5,7 +5,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/useless-comparison-test
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  * @precision high
  */
 
diff --git a/javascript/ql/src/Statements/UselessConditional.ql b/javascript/ql/src/Statements/UselessConditional.ql
index cc70defa7b22..210f27bb1db3 100644
--- a/javascript/ql/src/Statements/UselessConditional.ql
+++ b/javascript/ql/src/Statements/UselessConditional.ql
@@ -6,7 +6,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/trivial-conditional
- * @tags correctness
+ * @tags quality
+ *       reliability
+ *       correctness
  *       external/cwe/cwe-570
  *       external/cwe/cwe-571
  * @precision very-high
diff --git a/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql b/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql
index 828ee373696f..c7c97173d8bd 100644
--- a/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql
+++ b/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql
@@ -4,7 +4,9 @@
  * @kind problem
  * @problem.severity warning
  * @id js/vue/arrow-method-on-vue-instance
- * @tags reliability
+ * @tags quality
+ *       reliability
+ *       correctness
  *       frameworks/vue
  * @precision high
  */
diff --git a/javascript/ql/src/change-notes/2025-06-12-loop-iteration-fix.md b/javascript/ql/src/change-notes/2025-06-12-loop-iteration-fix.md
new file mode 100644
index 000000000000..2716069fb711
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-06-12-loop-iteration-fix.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Fixed false positives in the `js/loop-iteration-skipped-due-to-shifting` query when the return value of `splice` is used to decide whether to adjust the loop counter.
diff --git a/javascript/ql/src/change-notes/2025-06-12-loop-iteration.md b/javascript/ql/src/change-notes/2025-06-12-loop-iteration.md
new file mode 100644
index 000000000000..13b9fcf592aa
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-06-12-loop-iteration.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The `js/loop-iteration-skipped-due-to-shifting` query now has the `reliability` tag.
diff --git a/javascript/ql/src/change-notes/2025-06-16-mass-promotion.md b/javascript/ql/src/change-notes/2025-06-16-mass-promotion.md
new file mode 100644
index 000000000000..dedaba09d1d6
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-06-16-mass-promotion.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* The `quality` tag has been added to multiple JavaScript quality queries, with tags for `reliability` or `maintainability` categories and their sub-categories. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories.
diff --git a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected
index 58762ae23d70..f7ff324b4018 100644
--- a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected
+++ b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected
@@ -6,6 +6,10 @@
 | apollo.serverSide.ts:8:39:8:64 | get(fil ...  => {}) | apollo.serverSide.ts:7:36:7:44 | { files } | apollo.serverSide.ts:8:43:8:50 | file.url | The $@ of this request depends on a $@. | apollo.serverSide.ts:8:43:8:50 | file.url | URL | apollo.serverSide.ts:7:36:7:44 | { files } | user-provided value |
 | apollo.serverSide.ts:18:37:18:62 | get(fil ...  => {}) | apollo.serverSide.ts:17:34:17:42 | { files } | apollo.serverSide.ts:18:41:18:48 | file.url | The $@ of this request depends on a $@. | apollo.serverSide.ts:18:41:18:48 | file.url | URL | apollo.serverSide.ts:17:34:17:42 | { files } | user-provided value |
 | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | The $@ of this request depends on a $@. | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | endpoint | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | user-provided value |
+| serverSide2.js:17:28:17:47 | axios.get(targetUrl) | serverSide2.js:10:25:10:31 | req.url | serverSide2.js:17:38:17:46 | targetUrl | The $@ of this request depends on a $@. | serverSide2.js:17:38:17:46 | targetUrl | URL | serverSide2.js:10:25:10:31 | req.url | user-provided value |
+| serverSide2.js:20:29:20:49 | axios.g ... etUrl1) | serverSide2.js:9:43:9:56 | req._parsedUrl | serverSide2.js:20:39:20:48 | targetUrl1 | The $@ of this request depends on a $@. | serverSide2.js:20:39:20:48 | targetUrl1 | URL | serverSide2.js:9:43:9:56 | req._parsedUrl | user-provided value |
+| serverSide2.js:23:29:23:49 | axios.g ... etUrl2) | serverSide2.js:22:24:22:30 | req.url | serverSide2.js:23:39:23:48 | targetUrl2 | The $@ of this request depends on a $@. | serverSide2.js:23:39:23:48 | targetUrl2 | URL | serverSide2.js:22:24:22:30 | req.url | user-provided value |
+| serverSide2.js:26:29:26:49 | axios.g ... etUrl3) | serverSide2.js:11:24:11:30 | req.url | serverSide2.js:26:39:26:48 | targetUrl3 | The $@ of this request depends on a $@. | serverSide2.js:26:39:26:48 | targetUrl3 | URL | serverSide2.js:11:24:11:30 | req.url | user-provided value |
 | serverSide.js:18:5:18:20 | request(tainted) | serverSide.js:14:29:14:35 | req.url | serverSide.js:18:13:18:19 | tainted | The $@ of this request depends on a $@. | serverSide.js:18:13:18:19 | tainted | URL | serverSide.js:14:29:14:35 | req.url | user-provided value |
 | serverSide.js:20:5:20:24 | request.get(tainted) | serverSide.js:14:29:14:35 | req.url | serverSide.js:20:17:20:23 | tainted | The $@ of this request depends on a $@. | serverSide.js:20:17:20:23 | tainted | URL | serverSide.js:14:29:14:35 | req.url | user-provided value |
 | serverSide.js:24:5:24:20 | request(options) | serverSide.js:14:29:14:35 | req.url | serverSide.js:23:19:23:25 | tainted | The $@ of this request depends on a $@. | serverSide.js:23:19:23:25 | tainted | URL | serverSide.js:14:29:14:35 | req.url | user-provided value |
@@ -63,6 +67,18 @@ edges
 | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | axiosInterceptors.serverSide.js:19:11:19:17 | { url } | provenance |  |
 | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | provenance |  |
 | axiosInterceptors.serverSide.js:20:23:20:25 | url | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | provenance |  |
+| serverSide2.js:9:34:9:63 | qs.pars ... .query) | serverSide2.js:19:24:19:51 | req.par ... rsedUrl | provenance |  |
+| serverSide2.js:9:43:9:56 | req._parsedUrl | serverSide2.js:9:34:9:63 | qs.pars ... .query) | provenance |  |
+| serverSide2.js:10:25:10:31 | req.url | serverSide2.js:16:23:16:41 | req.parsedQuery.url | provenance |  |
+| serverSide2.js:11:24:11:30 | req.url | serverSide2.js:25:24:25:41 | req.SomeObject.url | provenance |  |
+| serverSide2.js:16:11:16:41 | targetUrl | serverSide2.js:17:38:17:46 | targetUrl | provenance |  |
+| serverSide2.js:16:23:16:41 | req.parsedQuery.url | serverSide2.js:16:11:16:41 | targetUrl | provenance |  |
+| serverSide2.js:19:11:19:55 | targetUrl1 | serverSide2.js:20:39:20:48 | targetUrl1 | provenance |  |
+| serverSide2.js:19:24:19:51 | req.par ... rsedUrl | serverSide2.js:19:11:19:55 | targetUrl1 | provenance |  |
+| serverSide2.js:22:11:22:36 | targetUrl2 | serverSide2.js:23:39:23:48 | targetUrl2 | provenance |  |
+| serverSide2.js:22:24:22:30 | req.url | serverSide2.js:22:11:22:36 | targetUrl2 | provenance |  |
+| serverSide2.js:25:11:25:47 | targetUrl3 | serverSide2.js:26:39:26:48 | targetUrl3 | provenance |  |
+| serverSide2.js:25:24:25:41 | req.SomeObject.url | serverSide2.js:25:11:25:47 | targetUrl3 | provenance |  |
 | serverSide.js:14:9:14:52 | tainted | serverSide.js:18:13:18:19 | tainted | provenance |  |
 | serverSide.js:14:9:14:52 | tainted | serverSide.js:20:17:20:23 | tainted | provenance |  |
 | serverSide.js:14:9:14:52 | tainted | serverSide.js:23:19:23:25 | tainted | provenance |  |
@@ -163,6 +179,22 @@ nodes
 | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | semmle.label | req.body |
 | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | semmle.label | userProvidedUrl |
 | axiosInterceptors.serverSide.js:20:23:20:25 | url | semmle.label | url |
+| serverSide2.js:9:34:9:63 | qs.pars ... .query) | semmle.label | qs.pars ... .query) |
+| serverSide2.js:9:43:9:56 | req._parsedUrl | semmle.label | req._parsedUrl |
+| serverSide2.js:10:25:10:31 | req.url | semmle.label | req.url |
+| serverSide2.js:11:24:11:30 | req.url | semmle.label | req.url |
+| serverSide2.js:16:11:16:41 | targetUrl | semmle.label | targetUrl |
+| serverSide2.js:16:23:16:41 | req.parsedQuery.url | semmle.label | req.parsedQuery.url |
+| serverSide2.js:17:38:17:46 | targetUrl | semmle.label | targetUrl |
+| serverSide2.js:19:11:19:55 | targetUrl1 | semmle.label | targetUrl1 |
+| serverSide2.js:19:24:19:51 | req.par ... rsedUrl | semmle.label | req.par ... rsedUrl |
+| serverSide2.js:20:39:20:48 | targetUrl1 | semmle.label | targetUrl1 |
+| serverSide2.js:22:11:22:36 | targetUrl2 | semmle.label | targetUrl2 |
+| serverSide2.js:22:24:22:30 | req.url | semmle.label | req.url |
+| serverSide2.js:23:39:23:48 | targetUrl2 | semmle.label | targetUrl2 |
+| serverSide2.js:25:11:25:47 | targetUrl3 | semmle.label | targetUrl3 |
+| serverSide2.js:25:24:25:41 | req.SomeObject.url | semmle.label | req.SomeObject.url |
+| serverSide2.js:26:39:26:48 | targetUrl3 | semmle.label | targetUrl3 |
 | serverSide.js:14:9:14:52 | tainted | semmle.label | tainted |
 | serverSide.js:14:19:14:42 | url.par ... , true) | semmle.label | url.par ... , true) |
 | serverSide.js:14:29:14:35 | req.url | semmle.label | req.url |
diff --git a/javascript/ql/test/query-tests/Security/CWE-918/serverSide2.js b/javascript/ql/test/query-tests/Security/CWE-918/serverSide2.js
new file mode 100644
index 000000000000..7743d0eec38d
--- /dev/null
+++ b/javascript/ql/test/query-tests/Security/CWE-918/serverSide2.js
@@ -0,0 +1,27 @@
+const express = require('express');
+const axios = require('axios');
+const qs = require('qs');
+
+const app = express();
+const PORT = 3000;
+
+app.use((req, res, next) => {
+  req.parsedQueryFromParsedUrl = qs.parse(req._parsedUrl.query);  // $Source[js/request-forgery]
+  req.parsedQuery.url = req.url || {}; // $Source[js/request-forgery]
+  req.SomeObject.url = req.url; // $Source[js/request-forgery]
+  next();
+});
+
+app.get('/proxy', async (req, res) => {
+    const targetUrl = req.parsedQuery.url;  
+    const response = await axios.get(targetUrl); // $Alert[js/request-forgery]
+
+    const targetUrl1 = req.parsedQueryFromParsedUrl.url;  
+    const response1 = await axios.get(targetUrl1); // $Alert[js/request-forgery]
+ 
+    const targetUrl2 = req.url || {};  // $Source[js/request-forgery]
+    const response2 = await axios.get(targetUrl2);  // $Alert[js/request-forgery]
+
+    const targetUrl3 = req.SomeObject.url || {};
+    const response3 = await axios.get(targetUrl3);  // $Alert[js/request-forgery]
+});
diff --git a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected
index 4b7becd8e163..cfe2b5f4f58d 100644
--- a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected
+++ b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected
@@ -1,3 +1,5 @@
 | tst.js:4:27:4:44 | parts.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. |
 | tst.js:13:29:13:46 | parts.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. |
 | tst.js:24:9:24:26 | parts.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. |
+| tst.js:128:11:128:33 | pending ... e(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. |
+| tst.js:153:11:153:26 | toc.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. |
diff --git a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js
index 68c50516da04..01f046d1c1e2 100644
--- a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js
+++ b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js
@@ -121,3 +121,38 @@ function inspectNextElement(string) {
   }
   return parts.join('/');
 }
+
+function withTryCatch(pendingCSS) {
+  for (let i = 0; i < pendingCSS.length; ++i) {
+      try {
+          pendingCSS.splice(i, 1); // $ SPURIOUS:Alert
+          i -= 1;
+      } catch (ex) {}
+  }
+}
+
+function andOperand(toc) {
+  for (let i = 0; i < toc.length; i++) {
+    toc[i].ignoreSubHeading && toc.splice(i, 1) && i--;
+  }
+}
+
+function ifStatement(toc) {
+  for (let i = 0; i < toc.length; i++) {
+    if(toc[i].ignoreSubHeading){
+      if(toc.splice(i, 1)){
+        i--; 
+      }
+    }
+  }
+}
+
+function ifStatement2(toc) {
+  for (let i = 0; i < toc.length; i++) {
+    if(toc[i].ignoreSubHeading){
+      if(!toc.splice(i, 1)){ // $Alert
+        i--;
+      }
+    }
+  }
+}
diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs
index a2a74420b5d8..8108dec032fb 100644
--- a/rust/extractor/src/config.rs
+++ b/rust/extractor/src/config.rs
@@ -62,6 +62,7 @@ pub struct Config {
     pub qltest: bool,
     pub qltest_cargo_check: bool,
     pub qltest_dependencies: Vec<String>,
+    pub qltest_use_nightly: bool,
     pub sysroot: Option<PathBuf>,
     pub sysroot_src: Option<PathBuf>,
     pub rustc_src: Option<PathBuf>,
diff --git a/rust/extractor/src/main.rs b/rust/extractor/src/main.rs
index bae83c99fbfc..6832019870ce 100644
--- a/rust/extractor/src/main.rs
+++ b/rust/extractor/src/main.rs
@@ -103,6 +103,7 @@ impl<'a> Extractor<'a> {
             }
         }
         translator.emit_source_file(&ast);
+        translator.emit_truncated_diagnostics_message();
         translator.trap.commit().unwrap_or_else(|err| {
             error!(
                 "Failed to write trap file for: {}: {}",
diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs
index d21e1d816f2c..f989ecf2eaa6 100644
--- a/rust/extractor/src/qltest.rs
+++ b/rust/extractor/src/qltest.rs
@@ -8,6 +8,9 @@ use std::path::Path;
 use std::process::Command;
 use tracing::info;
 
+const EDITION: &str = "2021";
+const NIGHTLY: &str = "nightly-2025-06-01";
+
 fn dump_lib() -> anyhow::Result<()> {
     let path_iterator = glob("*.rs").context("globbing test sources")?;
     let paths = path_iterator
@@ -29,8 +32,11 @@ enum TestCargoManifest<'a> {
         uses_proc_macro: bool,
         uses_main: bool,
         dependencies: &'a [String],
+        edition: &'a str,
+    },
+    Macro {
+        edition: &'a str,
     },
-    Macro {},
 }
 
 impl TestCargoManifest<'_> {
@@ -56,16 +62,26 @@ fn dump_cargo_manifest(dependencies: &[String]) -> anyhow::Result<()> {
         uses_proc_macro,
         uses_main: fs::exists("main.rs").context("checking existence of main.rs")?,
         dependencies,
+        edition: EDITION,
     };
     if uses_proc_macro {
         TestCargoManifest::Workspace {}.dump("")?;
         lib_manifest.dump(".lib")?;
-        TestCargoManifest::Macro {}.dump(".proc_macro")
+        TestCargoManifest::Macro { edition: EDITION }.dump(".proc_macro")
     } else {
         lib_manifest.dump("")
     }
 }
 
+fn dump_nightly_toolchain() -> anyhow::Result<()> {
+    fs::write(
+        "rust-toolchain.toml",
+        format!("[toolchain]\nchannel = \"{NIGHTLY}\"\n"),
+    )
+    .context("writing rust-toolchain.toml")?;
+    Ok(())
+}
+
 fn set_sources(config: &mut Config) -> anyhow::Result<()> {
     let path_iterator = glob("**/*.rs").context("globbing test sources")?;
     config.inputs = path_iterator
@@ -79,6 +95,9 @@ pub(crate) fn prepare(config: &mut Config) -> anyhow::Result<()> {
     dump_lib()?;
     set_sources(config)?;
     dump_cargo_manifest(&config.qltest_dependencies)?;
+    if config.qltest_use_nightly {
+        dump_nightly_toolchain()?;
+    }
     if config.qltest_cargo_check {
         let status = Command::new("cargo")
             .env("RUSTFLAGS", "-Awarnings")
diff --git a/rust/extractor/src/qltest_cargo.mustache b/rust/extractor/src/qltest_cargo.mustache
index 38db2ca02bf1..ed405bae05d6 100644
--- a/rust/extractor/src/qltest_cargo.mustache
+++ b/rust/extractor/src/qltest_cargo.mustache
@@ -11,7 +11,7 @@ members = [".lib", ".proc_macro"]
 [package]
 name = "test"
 version = "0.0.1"
-edition = "2021"
+edition = "{{ edition }}"
 [lib]
 path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}lib.rs"
 {{#uses_main}}
@@ -32,7 +32,7 @@ proc_macro = { path = "../.proc_macro" }
 [package]
 name = "proc_macro"
 version = "0.0.1"
-edition = "2021"
+edition = "{{ edition }}"
 [lib]
 path = "../proc_macro.rs"
 proc_macro = true
diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs
index 9e9123c45709..3ceef6de28a9 100644
--- a/rust/extractor/src/translate/base.rs
+++ b/rust/extractor/src/translate/base.rs
@@ -26,12 +26,38 @@ use ra_ap_syntax::{
 macro_rules! pre_emit {
     (Item, $self:ident, $node:ident) => {
         if let Some(label) = $self.prepare_item_expansion($node) {
-            return Some(label);
+            return Some(label.into());
+        }
+    };
+    (AssocItem, $self:ident, $node:ident) => {
+        if let Some(label) = $self.prepare_item_expansion(&$node.clone().into()) {
+            return Some(label.into());
+        }
+    };
+    (ExternItem, $self:ident, $node:ident) => {
+        if let Some(label) = $self.prepare_item_expansion(&$node.clone().into()) {
+            return Some(label.into());
         }
     };
     ($($_:tt)*) => {};
 }
 
+// TODO: remove the mannually written Label conversions. These can be auto-generated by
+// changing the base class of AssocItem from AstNode to Item
+impl From<crate::trap::Label<generated::AssocItem>> for crate::trap::Label<generated::Item> {
+    fn from(value: crate::trap::Label<generated::AssocItem>) -> Self {
+        // SAFETY: this is safe because every concrete instance of `@assoc_item` is also an instance of `@item`
+        unsafe { Self::from_untyped(value.as_untyped()) }
+    }
+}
+// TODO: remove the mannually written Label conversions. These can be auto-generated by
+// changing the base class of ExternItem from AstNode to Item
+impl From<crate::trap::Label<generated::ExternItem>> for crate::trap::Label<generated::Item> {
+    fn from(value: crate::trap::Label<generated::ExternItem>) -> Self {
+        // SAFETY: this is safe because every concrete instance of `@extern_item` is also an instance of `@item`
+        unsafe { Self::from_untyped(value.as_untyped()) }
+    }
+}
 #[macro_export]
 macro_rules! post_emit {
     (MacroCall, $self:ident, $node:ident, $label:ident) => {
@@ -62,6 +88,18 @@ macro_rules! post_emit {
     (Item, $self:ident, $node:ident, $label:ident) => {
         $self.emit_item_expansion($node, $label);
     };
+    (AssocItem, $self:ident, $node:ident, $label:ident) => {
+        $self.emit_item_expansion(
+            &$node.clone().into(),
+            From::<Label<generated::AssocItem>>::from($label),
+        );
+    };
+    (ExternItem, $self:ident, $node:ident, $label:ident) => {
+        $self.emit_item_expansion(
+            &$node.clone().into(),
+            From::<Label<generated::ExternItem>>::from($label),
+        );
+    };
     // TODO canonical origin of other items
     (PathExpr, $self:ident, $node:ident, $label:ident) => {
         $self.extract_path_canonical_destination($node, $label.into());
@@ -123,11 +161,14 @@ pub struct Translator<'a> {
     resolve_paths: bool,
     source_kind: SourceKind,
     macro_context_depth: usize,
+    diagnostic_count: usize,
 }
 
 const UNKNOWN_LOCATION: (LineCol, LineCol) =
     (LineCol { line: 0, col: 0 }, LineCol { line: 0, col: 0 });
 
+const DIAGNOSTIC_LIMIT_PER_FILE: usize = 100;
+
 impl<'a> Translator<'a> {
     pub fn new(
         trap: TrapFile,
@@ -148,6 +189,7 @@ impl<'a> Translator<'a> {
             resolve_paths: resolve_paths == ResolvePaths::Yes,
             source_kind,
             macro_context_depth: 0,
+            diagnostic_count: 0,
         }
     }
     fn location(&self, range: TextRange) -> Option<(LineCol, LineCol)> {
@@ -234,6 +276,36 @@ impl<'a> Translator<'a> {
         } else {
             severity
         };
+        if severity > DiagnosticSeverity::Debug {
+            self.diagnostic_count += 1;
+            if self.diagnostic_count > DIAGNOSTIC_LIMIT_PER_FILE {
+                return;
+            }
+        }
+        self.emit_diagnostic_unchecked(severity, tag, message, full_message, location);
+    }
+    pub fn emit_truncated_diagnostics_message(&mut self) {
+        if self.diagnostic_count > DIAGNOSTIC_LIMIT_PER_FILE {
+            let count = self.diagnostic_count - DIAGNOSTIC_LIMIT_PER_FILE;
+            self.emit_diagnostic_unchecked(
+                DiagnosticSeverity::Warning,
+                "diagnostics".to_owned(),
+                "Too many diagnostic messages".to_owned(),
+                format!(
+                    "Too many diagnostic messages, {count} diagnostic messages were suppressed"
+                ),
+                UNKNOWN_LOCATION,
+            );
+        }
+    }
+    fn emit_diagnostic_unchecked(
+        &mut self,
+        severity: DiagnosticSeverity,
+        tag: String,
+        message: String,
+        full_message: String,
+        location: (LineCol, LineCol),
+    ) {
         let (start, end) = location;
         dispatch_to_tracing!(
             severity,
@@ -694,10 +766,21 @@ impl<'a> Translator<'a> {
         }
     }
 
+    fn is_attribute_macro_target(&self, node: &ast::Item) -> bool {
+        // rust-analyzer considers as an `attr_macro_call` also a plain macro call, but we want to
+        // process that differently (in `extract_macro_call_expanded`)
+        !matches!(node, ast::Item::MacroCall(_))
+            && self.semantics.is_some_and(|semantics| {
+                let file = semantics.hir_file_for(node.syntax());
+                let node = InFile::new(file, node);
+                semantics.is_attr_macro_call(node)
+            })
+    }
+
     pub(crate) fn prepare_item_expansion(
         &mut self,
         node: &ast::Item,
-    ) -> Option<Label<generated::Item>> {
+    ) -> Option<Label<generated::MacroCall>> {
         if self.source_kind == SourceKind::Library {
             // if the item expands via an attribute macro, we want to only emit the expansion
             if let Some(expanded) = self.emit_attribute_macro_expansion(node) {
@@ -714,13 +797,10 @@ impl<'a> Translator<'a> {
                     expanded.into(),
                     &mut self.trap.writer,
                 );
-                return Some(label.into());
+                return Some(label);
             }
         }
-        let semantics = self.semantics.as_ref()?;
-        let file = semantics.hir_file_for(node.syntax());
-        let node = InFile::new(file, node);
-        if semantics.is_attr_macro_call(node) {
+        if self.is_attribute_macro_target(node) {
             self.macro_context_depth += 1;
         }
         None
@@ -730,10 +810,7 @@ impl<'a> Translator<'a> {
         &mut self,
         node: &ast::Item,
     ) -> Option<Label<generated::MacroItems>> {
-        let semantics = self.semantics?;
-        let file = semantics.hir_file_for(node.syntax());
-        let infile_node = InFile::new(file, node);
-        if !semantics.is_attr_macro_call(infile_node) {
+        if !self.is_attribute_macro_target(node) {
             return None;
         }
         self.macro_context_depth -= 1;
@@ -743,7 +820,7 @@ impl<'a> Translator<'a> {
         }
         let ExpandResult {
             value: expanded, ..
-        } = semantics.expand_attr_macro(node)?;
+        } = self.semantics.and_then(|s| s.expand_attr_macro(node))?;
         self.emit_macro_expansion_parse_errors(node, &expanded);
         let macro_items = ast::MacroItems::cast(expanded).or_else(|| {
             let message = "attribute macro expansion cannot be cast to MacroItems".to_owned();
diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll
index 84d9aaab5ef1..f350e88efad8 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll
@@ -35,7 +35,7 @@ module Impl {
    */
   abstract class Call extends ExprImpl::Expr {
     /** Holds if the receiver of this call is implicitly borrowed. */
-    predicate receiverImplicitlyBorrowed() { this.implicitBorrowAt(TSelfArgumentPosition()) }
+    predicate receiverImplicitlyBorrowed() { this.implicitBorrowAt(TSelfArgumentPosition(), _) }
 
     /** Gets the trait targeted by this call, if any. */
     abstract Trait getTrait();
@@ -47,7 +47,7 @@ module Impl {
     abstract Expr getArgument(ArgumentPosition pos);
 
     /** Holds if the argument at `pos` might be implicitly borrowed. */
-    abstract predicate implicitBorrowAt(ArgumentPosition pos);
+    abstract predicate implicitBorrowAt(ArgumentPosition pos, boolean certain);
 
     /** Gets the number of arguments _excluding_ any `self` argument. */
     int getNumberOfArguments() { result = count(this.getArgument(TPositionalArgumentPosition(_))) }
@@ -85,7 +85,7 @@ module Impl {
 
     override Trait getTrait() { none() }
 
-    override predicate implicitBorrowAt(ArgumentPosition pos) { none() }
+    override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { none() }
 
     override Expr getArgument(ArgumentPosition pos) {
       result = super.getArgList().getArg(pos.asPosition())
@@ -109,7 +109,7 @@ module Impl {
       qualifier.toString() != "Self"
     }
 
-    override predicate implicitBorrowAt(ArgumentPosition pos) { none() }
+    override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { none() }
 
     override Expr getArgument(ArgumentPosition pos) {
       pos.isSelf() and result = super.getArgList().getArg(0)
@@ -123,7 +123,9 @@ module Impl {
 
     override Trait getTrait() { none() }
 
-    override predicate implicitBorrowAt(ArgumentPosition pos) { pos.isSelf() }
+    override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) {
+      pos.isSelf() and certain = false
+    }
 
     override Expr getArgument(ArgumentPosition pos) {
       pos.isSelf() and result = this.(MethodCallExpr).getReceiver()
@@ -143,10 +145,13 @@ module Impl {
 
     override Trait getTrait() { result = trait }
 
-    override predicate implicitBorrowAt(ArgumentPosition pos) {
-      pos.isSelf() and borrows >= 1
-      or
-      pos.asPosition() = 0 and borrows = 2
+    override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) {
+      (
+        pos.isSelf() and borrows >= 1
+        or
+        pos.asPosition() = 0 and borrows = 2
+      ) and
+      certain = true
     }
 
     override Expr getArgument(ArgumentPosition pos) {
diff --git a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll
index a65f99f7952b..ea76293a1bd9 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll
@@ -22,7 +22,7 @@ private predicate isOverloaded(string op, int arity, string path, string method,
     op = "!" and path = "core::ops::bit::Not" and method = "not" and borrows = 0
     or
     // Dereference
-    op = "*" and path = "core::ops::deref::Deref" and method = "deref" and borrows = 0
+    op = "*" and path = "core::ops::deref::Deref" and method = "deref" and borrows = 1
   )
   or
   arity = 2 and
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index c10cdc0140eb..f2c487598de6 100644
--- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll
+++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
@@ -205,7 +205,11 @@ abstract class ItemNode extends Locatable {
     else result = this.getImmediateParentModule().getImmediateParentModule()
     or
     name = "self" and
-    if this instanceof Module or this instanceof Enum or this instanceof Struct
+    if
+      this instanceof Module or
+      this instanceof Enum or
+      this instanceof Struct or
+      this instanceof Crate
     then result = this
     else result = this.getImmediateParentModule()
     or
diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll
index 34fce3082396..b560ac5ec8c1 100644
--- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll
+++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll
@@ -273,10 +273,6 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat
   prefix1.isEmpty() and
   prefix2 = TypePath::singleton(TRefTypeParameter())
   or
-  n1 = n2.(DerefExpr).getExpr() and
-  prefix1 = TypePath::singleton(TRefTypeParameter()) and
-  prefix2.isEmpty()
-  or
   exists(BlockExpr be |
     n1 = be and
     n2 = be.getStmtList().getTailExpr() and
@@ -640,20 +636,20 @@ private module CallExprBaseMatchingInput implements MatchingInputSig {
   }
 
   private newtype TAccessPosition =
-    TArgumentAccessPosition(ArgumentPosition pos, Boolean borrowed) or
+    TArgumentAccessPosition(ArgumentPosition pos, Boolean borrowed, Boolean certain) or
     TReturnAccessPosition()
 
   class AccessPosition extends TAccessPosition {
-    ArgumentPosition getArgumentPosition() { this = TArgumentAccessPosition(result, _) }
+    ArgumentPosition getArgumentPosition() { this = TArgumentAccessPosition(result, _, _) }
 
-    predicate isBorrowed() { this = TArgumentAccessPosition(_, true) }
+    predicate isBorrowed(boolean certain) { this = TArgumentAccessPosition(_, true, certain) }
 
     predicate isReturn() { this = TReturnAccessPosition() }
 
     string toString() {
-      exists(ArgumentPosition pos, boolean borrowed |
-        this = TArgumentAccessPosition(pos, borrowed) and
-        result = pos + ":" + borrowed
+      exists(ArgumentPosition pos, boolean borrowed, boolean certain |
+        this = TArgumentAccessPosition(pos, borrowed, certain) and
+        result = pos + ":" + borrowed + ":" + certain
       )
       or
       this.isReturn() and
@@ -674,10 +670,15 @@ private module CallExprBaseMatchingInput implements MatchingInputSig {
     }
 
     AstNode getNodeAt(AccessPosition apos) {
-      exists(ArgumentPosition pos, boolean borrowed |
-        apos = TArgumentAccessPosition(pos, borrowed) and
-        result = this.getArgument(pos) and
-        if this.implicitBorrowAt(pos) then borrowed = true else borrowed = false
+      exists(ArgumentPosition pos, boolean borrowed, boolean certain |
+        apos = TArgumentAccessPosition(pos, borrowed, certain) and
+        result = this.getArgument(pos)
+      |
+        if this.implicitBorrowAt(pos, _)
+        then borrowed = true and this.implicitBorrowAt(pos, certain)
+        else (
+          borrowed = false and certain = true
+        )
       )
       or
       result = this and apos.isReturn()
@@ -705,51 +706,54 @@ private module CallExprBaseMatchingInput implements MatchingInputSig {
   predicate adjustAccessType(
     AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj
   ) {
-    if apos.isBorrowed()
-    then
-      exists(Type selfParamType |
-        selfParamType =
-          target
-              .getParameterType(TArgumentDeclarationPosition(apos.getArgumentPosition()),
-                TypePath::nil())
-      |
-        if selfParamType = TRefType()
+    apos.isBorrowed(true) and
+    pathAdj = TypePath::cons(TRefTypeParameter(), path) and
+    tAdj = t
+    or
+    apos.isBorrowed(false) and
+    exists(Type selfParamType |
+      selfParamType =
+        target
+            .getParameterType(TArgumentDeclarationPosition(apos.getArgumentPosition()),
+              TypePath::nil())
+    |
+      if selfParamType = TRefType()
+      then
+        if t != TRefType() and path.isEmpty()
         then
-          if t != TRefType() and path.isEmpty()
+          // adjust for implicit borrow
+          pathAdj.isEmpty() and
+          tAdj = TRefType()
+          or
+          // adjust for implicit borrow
+          pathAdj = TypePath::singleton(TRefTypeParameter()) and
+          tAdj = t
+        else
+          if path.isCons(TRefTypeParameter(), _)
           then
+            pathAdj = path and
+            tAdj = t
+          else (
             // adjust for implicit borrow
-            pathAdj.isEmpty() and
-            tAdj = TRefType()
-            or
-            // adjust for implicit borrow
-            pathAdj = TypePath::singleton(TRefTypeParameter()) and
+            not (t = TRefType() and path.isEmpty()) and
+            pathAdj = TypePath::cons(TRefTypeParameter(), path) and
             tAdj = t
-          else
-            if path.isCons(TRefTypeParameter(), _)
-            then
-              pathAdj = path and
-              tAdj = t
-            else (
-              // adjust for implicit borrow
-              not (t = TRefType() and path.isEmpty()) and
-              pathAdj = TypePath::cons(TRefTypeParameter(), path) and
-              tAdj = t
-            )
-        else (
-          // adjust for implicit deref
-          path.isCons(TRefTypeParameter(), pathAdj) and
-          tAdj = t
-          or
-          not path.isCons(TRefTypeParameter(), _) and
-          not (t = TRefType() and path.isEmpty()) and
-          pathAdj = path and
-          tAdj = t
-        )
+          )
+      else (
+        // adjust for implicit deref
+        path.isCons(TRefTypeParameter(), pathAdj) and
+        tAdj = t
+        or
+        not path.isCons(TRefTypeParameter(), _) and
+        not (t = TRefType() and path.isEmpty()) and
+        pathAdj = path and
+        tAdj = t
       )
-    else (
-      pathAdj = path and
-      tAdj = t
     )
+    or
+    not apos.isBorrowed(_) and
+    pathAdj = path and
+    tAdj = t
   }
 }
 
@@ -766,35 +770,47 @@ private Type inferCallExprBaseType(AstNode n, TypePath path) {
     TypePath path0
   |
     n = a.getNodeAt(apos) and
-    result = CallExprBaseMatching::inferAccessType(a, apos, path0) and
-    if apos.isBorrowed()
-    then
-      exists(Type argType | argType = inferType(n) |
-        if argType = TRefType()
-        then
-          path = path0 and
-          path0.isCons(TRefTypeParameter(), _)
-          or
-          // adjust for implicit deref
+    result = CallExprBaseMatching::inferAccessType(a, apos, path0)
+  |
+    (
+      apos.isBorrowed(true)
+      or
+      // The desugaring of the unary `*e` is `*Deref::deref(&e)`. To handle the
+      // deref expression after the call we must strip a `&` from the type at
+      // the return position.
+      apos.isReturn() and a instanceof DerefExpr
+    ) and
+    path0.isCons(TRefTypeParameter(), path)
+    or
+    apos.isBorrowed(false) and
+    exists(Type argType | argType = inferType(n) |
+      if argType = TRefType()
+      then
+        path = path0 and
+        path0.isCons(TRefTypeParameter(), _)
+        or
+        // adjust for implicit deref
+        not path0.isCons(TRefTypeParameter(), _) and
+        not (path0.isEmpty() and result = TRefType()) and
+        path = TypePath::cons(TRefTypeParameter(), path0)
+      else (
+        not (
+          argType.(StructType).asItemNode() instanceof StringStruct and
+          result.(StructType).asItemNode() instanceof Builtins::Str
+        ) and
+        (
           not path0.isCons(TRefTypeParameter(), _) and
           not (path0.isEmpty() and result = TRefType()) and
-          path = TypePath::cons(TRefTypeParameter(), path0)
-        else (
-          not (
-            argType.(StructType).asItemNode() instanceof StringStruct and
-            result.(StructType).asItemNode() instanceof Builtins::Str
-          ) and
-          (
-            not path0.isCons(TRefTypeParameter(), _) and
-            not (path0.isEmpty() and result = TRefType()) and
-            path = path0
-            or
-            // adjust for implicit borrow
-            path0.isCons(TRefTypeParameter(), path)
-          )
+          path = path0
+          or
+          // adjust for implicit borrow
+          path0.isCons(TRefTypeParameter(), path)
         )
       )
-    else path = path0
+    )
+    or
+    not apos.isBorrowed(_) and
+    path = path0
   )
 }
 
@@ -1141,8 +1157,15 @@ final class MethodCall extends Call {
         (
           path0.isCons(TRefTypeParameter(), path)
           or
-          not path0.isCons(TRefTypeParameter(), _) and
-          not (path0.isEmpty() and result = TRefType()) and
+          (
+            not path0.isCons(TRefTypeParameter(), _) and
+            not (path0.isEmpty() and result = TRefType())
+            or
+            // Ideally we should find all methods on reference types, but as
+            // that currently causes a blowup we limit this to the `deref`
+            // method in order to make dereferencing work.
+            this.getMethodName() = "deref"
+          ) and
           path = path0
         )
       |
@@ -1389,7 +1412,7 @@ private module Cached {
   predicate receiverHasImplicitDeref(AstNode receiver) {
     exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos |
       apos.getArgumentPosition().isSelf() and
-      apos.isBorrowed() and
+      apos.isBorrowed(_) and
       receiver = a.getNodeAt(apos) and
       inferType(receiver) = TRefType() and
       CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) != TRefType()
@@ -1401,7 +1424,7 @@ private module Cached {
   predicate receiverHasImplicitBorrow(AstNode receiver) {
     exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos |
       apos.getArgumentPosition().isSelf() and
-      apos.isBorrowed() and
+      apos.isBorrowed(_) and
       receiver = a.getNodeAt(apos) and
       CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) = TRefType() and
       inferType(receiver) != TRefType()
diff --git a/rust/ql/test/.gitignore b/rust/ql/test/.gitignore
index 3c36d8c77974..65baed5837a4 100644
--- a/rust/ql/test/.gitignore
+++ b/rust/ql/test/.gitignore
@@ -1,6 +1,9 @@
+target/
+
+# these are all generated, see `rust/extractor/src/qltest.rs` for details
 Cargo.toml
+rust-toolchain.toml
 lib.rs
-target/
 .proc_macro/
 .lib/
 
diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected
index 092c26051d65..a89072531ccc 100644
--- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected
+++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected
@@ -406,6 +406,151 @@ macro_expansion.rs:
 #   30|   getItem(6): [Impl] impl S { ... }
 #   30|     getAssocItemList(): [AssocItemList] AssocItemList
 #   31|       getAssocItem(0): [Function] fn bzz
+#   32|         getAttributeMacroExpansion(): [MacroItems] MacroItems
+#   32|           getItem(0): [Function] fn bzz_0
+#   32|             getParamList(): [ParamList] ParamList
+#   32|             getBody(): [BlockExpr] { ... }
+#   32|               getStmtList(): [StmtList] StmtList
+#   33|                 getStatement(0): [ExprStmt] ExprStmt
+#   33|                   getExpr(): [MacroExpr] MacroExpr
+#   33|                     getMacroCall(): [MacroCall] hello!...
+#   33|                       getPath(): [Path] hello
+#   33|                         getSegment(): [PathSegment] hello
+#   33|                           getIdentifier(): [NameRef] hello
+#   33|                       getTokenTree(): [TokenTree] TokenTree
+#   31|                       getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
+#   31|                         getStatement(0): [ExprStmt] ExprStmt
+#   31|                           getExpr(): [MacroExpr] MacroExpr
+#   31|                             getMacroCall(): [MacroCall] println!...
+#   31|                               getPath(): [Path] println
+#   31|                                 getSegment(): [PathSegment] println
+#   31|                                   getIdentifier(): [NameRef] println
+#   31|                               getTokenTree(): [TokenTree] TokenTree
+#   31|                               getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
+#   31|                                 getTailExpr(): [BlockExpr] { ... }
+#   31|                                   getStmtList(): [StmtList] StmtList
+#   31|                                     getStatement(0): [ExprStmt] ExprStmt
+#   31|                                       getExpr(): [CallExpr] ...::_print(...)
+#   31|                                         getArgList(): [ArgList] ArgList
+#   31|                                           getArg(0): [MacroExpr] MacroExpr
+#   31|                                             getMacroCall(): [MacroCall] ...::format_args_nl!...
+#   31|                                               getPath(): [Path] ...::format_args_nl
+#   31|                                                 getQualifier(): [Path] $crate
+#   31|                                                   getSegment(): [PathSegment] $crate
+#   31|                                                     getIdentifier(): [NameRef] $crate
+#   31|                                                 getSegment(): [PathSegment] format_args_nl
+#   31|                                                   getIdentifier(): [NameRef] format_args_nl
+#   31|                                               getTokenTree(): [TokenTree] TokenTree
+#   31|                                               getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
+#   31|                                                 getTemplate(): [StringLiteralExpr] "hello!\n"
+#   31|                                         getFunction(): [PathExpr] ...::_print
+#   31|                                           getPath(): [Path] ...::_print
+#   31|                                             getQualifier(): [Path] ...::io
+#   31|                                               getQualifier(): [Path] $crate
+#   31|                                                 getSegment(): [PathSegment] $crate
+#   31|                                                   getIdentifier(): [NameRef] $crate
+#   31|                                               getSegment(): [PathSegment] io
+#   31|                                                 getIdentifier(): [NameRef] io
+#   31|                                             getSegment(): [PathSegment] _print
+#   31|                                               getIdentifier(): [NameRef] _print
+#   32|             getName(): [Name] bzz_0
+#   32|             getVisibility(): [Visibility] Visibility
+#   32|           getItem(1): [Function] fn bzz_1
+#   32|             getParamList(): [ParamList] ParamList
+#   32|             getBody(): [BlockExpr] { ... }
+#   32|               getStmtList(): [StmtList] StmtList
+#   33|                 getStatement(0): [ExprStmt] ExprStmt
+#   33|                   getExpr(): [MacroExpr] MacroExpr
+#   33|                     getMacroCall(): [MacroCall] hello!...
+#   33|                       getPath(): [Path] hello
+#   33|                         getSegment(): [PathSegment] hello
+#   33|                           getIdentifier(): [NameRef] hello
+#   33|                       getTokenTree(): [TokenTree] TokenTree
+#   31|                       getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
+#   31|                         getStatement(0): [ExprStmt] ExprStmt
+#   31|                           getExpr(): [MacroExpr] MacroExpr
+#   31|                             getMacroCall(): [MacroCall] println!...
+#   31|                               getPath(): [Path] println
+#   31|                                 getSegment(): [PathSegment] println
+#   31|                                   getIdentifier(): [NameRef] println
+#   31|                               getTokenTree(): [TokenTree] TokenTree
+#   31|                               getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
+#   31|                                 getTailExpr(): [BlockExpr] { ... }
+#   31|                                   getStmtList(): [StmtList] StmtList
+#   31|                                     getStatement(0): [ExprStmt] ExprStmt
+#   31|                                       getExpr(): [CallExpr] ...::_print(...)
+#   31|                                         getArgList(): [ArgList] ArgList
+#   31|                                           getArg(0): [MacroExpr] MacroExpr
+#   31|                                             getMacroCall(): [MacroCall] ...::format_args_nl!...
+#   31|                                               getPath(): [Path] ...::format_args_nl
+#   31|                                                 getQualifier(): [Path] $crate
+#   31|                                                   getSegment(): [PathSegment] $crate
+#   31|                                                     getIdentifier(): [NameRef] $crate
+#   31|                                                 getSegment(): [PathSegment] format_args_nl
+#   31|                                                   getIdentifier(): [NameRef] format_args_nl
+#   31|                                               getTokenTree(): [TokenTree] TokenTree
+#   31|                                               getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
+#   31|                                                 getTemplate(): [StringLiteralExpr] "hello!\n"
+#   31|                                         getFunction(): [PathExpr] ...::_print
+#   31|                                           getPath(): [Path] ...::_print
+#   31|                                             getQualifier(): [Path] ...::io
+#   31|                                               getQualifier(): [Path] $crate
+#   31|                                                 getSegment(): [PathSegment] $crate
+#   31|                                                   getIdentifier(): [NameRef] $crate
+#   31|                                               getSegment(): [PathSegment] io
+#   31|                                                 getIdentifier(): [NameRef] io
+#   31|                                             getSegment(): [PathSegment] _print
+#   31|                                               getIdentifier(): [NameRef] _print
+#   32|             getName(): [Name] bzz_1
+#   32|             getVisibility(): [Visibility] Visibility
+#   32|           getItem(2): [Function] fn bzz_2
+#   32|             getParamList(): [ParamList] ParamList
+#   32|             getBody(): [BlockExpr] { ... }
+#   32|               getStmtList(): [StmtList] StmtList
+#   33|                 getStatement(0): [ExprStmt] ExprStmt
+#   33|                   getExpr(): [MacroExpr] MacroExpr
+#   33|                     getMacroCall(): [MacroCall] hello!...
+#   33|                       getPath(): [Path] hello
+#   33|                         getSegment(): [PathSegment] hello
+#   33|                           getIdentifier(): [NameRef] hello
+#   33|                       getTokenTree(): [TokenTree] TokenTree
+#   31|                       getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
+#   31|                         getStatement(0): [ExprStmt] ExprStmt
+#   31|                           getExpr(): [MacroExpr] MacroExpr
+#   31|                             getMacroCall(): [MacroCall] println!...
+#   31|                               getPath(): [Path] println
+#   31|                                 getSegment(): [PathSegment] println
+#   31|                                   getIdentifier(): [NameRef] println
+#   31|                               getTokenTree(): [TokenTree] TokenTree
+#   31|                               getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
+#   31|                                 getTailExpr(): [BlockExpr] { ... }
+#   31|                                   getStmtList(): [StmtList] StmtList
+#   31|                                     getStatement(0): [ExprStmt] ExprStmt
+#   31|                                       getExpr(): [CallExpr] ...::_print(...)
+#   31|                                         getArgList(): [ArgList] ArgList
+#   31|                                           getArg(0): [MacroExpr] MacroExpr
+#   31|                                             getMacroCall(): [MacroCall] ...::format_args_nl!...
+#   31|                                               getPath(): [Path] ...::format_args_nl
+#   31|                                                 getQualifier(): [Path] $crate
+#   31|                                                   getSegment(): [PathSegment] $crate
+#   31|                                                     getIdentifier(): [NameRef] $crate
+#   31|                                                 getSegment(): [PathSegment] format_args_nl
+#   31|                                                   getIdentifier(): [NameRef] format_args_nl
+#   31|                                               getTokenTree(): [TokenTree] TokenTree
+#   31|                                               getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
+#   31|                                                 getTemplate(): [StringLiteralExpr] "hello!\n"
+#   31|                                         getFunction(): [PathExpr] ...::_print
+#   31|                                           getPath(): [Path] ...::_print
+#   31|                                             getQualifier(): [Path] ...::io
+#   31|                                               getQualifier(): [Path] $crate
+#   31|                                                 getSegment(): [PathSegment] $crate
+#   31|                                                   getIdentifier(): [NameRef] $crate
+#   31|                                               getSegment(): [PathSegment] io
+#   31|                                                 getIdentifier(): [NameRef] io
+#   31|                                             getSegment(): [PathSegment] _print
+#   31|                                               getIdentifier(): [NameRef] _print
+#   32|             getName(): [Name] bzz_2
+#   32|             getVisibility(): [Visibility] Visibility
 #   32|         getParamList(): [ParamList] ParamList
 #   31|         getAttr(0): [Attr] Attr
 #   31|           getMeta(): [Meta] Meta
@@ -422,41 +567,6 @@ macro_expansion.rs:
 #   33|                     getSegment(): [PathSegment] hello
 #   33|                       getIdentifier(): [NameRef] hello
 #   33|                   getTokenTree(): [TokenTree] TokenTree
-#   33|                   getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
-#   33|                     getStatement(0): [ExprStmt] ExprStmt
-#   33|                       getExpr(): [MacroExpr] MacroExpr
-#   33|                         getMacroCall(): [MacroCall] println!...
-#   33|                           getPath(): [Path] println
-#   33|                             getSegment(): [PathSegment] println
-#   33|                               getIdentifier(): [NameRef] println
-#   33|                           getTokenTree(): [TokenTree] TokenTree
-#   33|                           getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
-#   33|                             getTailExpr(): [BlockExpr] { ... }
-#   33|                               getStmtList(): [StmtList] StmtList
-#   33|                                 getStatement(0): [ExprStmt] ExprStmt
-#   33|                                   getExpr(): [CallExpr] ...::_print(...)
-#   33|                                     getArgList(): [ArgList] ArgList
-#   33|                                       getArg(0): [MacroExpr] MacroExpr
-#   33|                                         getMacroCall(): [MacroCall] ...::format_args_nl!...
-#   33|                                           getPath(): [Path] ...::format_args_nl
-#   33|                                             getQualifier(): [Path] $crate
-#   33|                                               getSegment(): [PathSegment] $crate
-#   33|                                                 getIdentifier(): [NameRef] $crate
-#   33|                                             getSegment(): [PathSegment] format_args_nl
-#   33|                                               getIdentifier(): [NameRef] format_args_nl
-#   33|                                           getTokenTree(): [TokenTree] TokenTree
-#   33|                                           getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
-#   33|                                             getTemplate(): [StringLiteralExpr] "hello!\n"
-#   33|                                     getFunction(): [PathExpr] ...::_print
-#   33|                                       getPath(): [Path] ...::_print
-#   33|                                         getQualifier(): [Path] ...::io
-#   33|                                           getQualifier(): [Path] $crate
-#   33|                                             getSegment(): [PathSegment] $crate
-#   33|                                               getIdentifier(): [NameRef] $crate
-#   33|                                           getSegment(): [PathSegment] io
-#   33|                                             getIdentifier(): [NameRef] io
-#   33|                                         getSegment(): [PathSegment] _print
-#   33|                                           getIdentifier(): [NameRef] _print
 #   32|         getName(): [Name] bzz
 #   32|         getVisibility(): [Visibility] Visibility
 #   30|     getSelfTy(): [PathTypeRepr] S
diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected
index 10a73fd947c8..5940c63da2b4 100644
--- a/rust/ql/test/extractor-tests/macro-expansion/test.expected
+++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected
@@ -11,13 +11,22 @@ attribute_macros
 | macro_expansion.rs:15:1:16:14 | fn bar_0 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_0_new |
 | macro_expansion.rs:15:1:16:14 | fn bar_1 | 0 | macro_expansion.rs:16:1:16:14 | fn bar_1 |
 | macro_expansion.rs:15:1:16:14 | fn bar_1 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_1_new |
+| macro_expansion.rs:31:5:34:5 | fn bzz | 0 | macro_expansion.rs:32:5:33:17 | fn bzz_0 |
+| macro_expansion.rs:31:5:34:5 | fn bzz | 1 | macro_expansion.rs:32:5:33:17 | fn bzz_1 |
+| macro_expansion.rs:31:5:34:5 | fn bzz | 2 | macro_expansion.rs:32:5:33:17 | fn bzz_2 |
 macro_calls
 | included/included.rs:2:9:2:39 | concat!... | included/included.rs:2:17:2:38 | "Hello world!" |
 | macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" |
 | macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" |
-| macro_expansion.rs:33:9:33:16 | ...::format_args_nl!... | macro_expansion.rs:33:9:33:16 | FormatArgsExpr |
-| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:33:9:33:16 | MacroBlockExpr |
-| macro_expansion.rs:33:9:33:16 | println!... | macro_expansion.rs:33:9:33:16 | MacroBlockExpr |
+| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr |
+| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr |
+| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr |
+| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
+| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
+| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
+| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
+| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
+| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
 | macro_expansion.rs:44:5:44:13 | def_x!... | macro_expansion.rs:44:5:44:13 | MacroItems |
 | macro_expansion.rs:53:9:53:25 | concat!... | macro_expansion.rs:53:17:53:24 | "xy" |
 | macro_expansion.rs:55:9:58:5 | my_macro!... | macro_expansion.rs:56:9:57:13 | MacroExpr |
@@ -34,4 +43,5 @@ macro_calls
 | macro_expansion.rs:79:12:79:20 | my_int!... | macro_expansion.rs:79:12:79:20 | i32 |
 unexpanded_macro_calls
 | macro_expansion.rs:5:9:5:35 | concat!... |
+| macro_expansion.rs:33:9:33:16 | hello!... |
 warnings
diff --git a/rust/ql/test/library-tests/dataflow/global/main.rs b/rust/ql/test/library-tests/dataflow/global/main.rs
index 6ca8f20f027c..fb5acfb7c606 100644
--- a/rust/ql/test/library-tests/dataflow/global/main.rs
+++ b/rust/ql/test/library-tests/dataflow/global/main.rs
@@ -227,7 +227,7 @@ fn test_operator_overloading() {
 
     let a = MyInt { value: source(28) };
     let c = *a;
-    sink(c); // $ MISSING: hasValueFlow=28
+    sink(c); // $ hasTaintFlow=28 MISSING: hasValueFlow=28
 }
 
 trait MyTrait {
diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected
index be147a36ed3f..6fdac9700b6c 100644
--- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected
+++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected
@@ -40,6 +40,8 @@
 | main.rs:165:13:165:34 | ...::new(...) | main.rs:158:5:161:5 | fn new |
 | main.rs:165:24:165:33 | source(...) | main.rs:1:1:3:1 | fn source |
 | main.rs:167:5:167:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
+| main.rs:181:10:181:14 | * ... | main.rs:188:5:190:5 | fn deref |
+| main.rs:189:11:189:15 | * ... | main.rs:188:5:190:5 | fn deref |
 | main.rs:195:28:195:36 | source(...) | main.rs:1:1:3:1 | fn source |
 | main.rs:197:13:197:17 | ... + ... | main.rs:173:5:176:5 | fn add |
 | main.rs:198:5:198:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
index dd9bb4ae810e..10fe084f0a2b 100644
--- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
+++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
@@ -114,6 +114,8 @@ localStep
 | main.rs:89:9:89:9 | i | main.rs:89:9:89:9 | [SSA] i |
 | main.rs:89:9:89:9 | i | main.rs:89:9:89:9 | i |
 | main.rs:89:13:89:31 | ...::new(...) | main.rs:89:9:89:9 | i |
+| main.rs:90:11:90:11 | [post] receiver for i | main.rs:90:11:90:11 | [post] i |
+| main.rs:90:11:90:11 | i | main.rs:90:11:90:11 | receiver for i |
 | main.rs:97:9:97:9 | [SSA] a | main.rs:98:10:98:10 | a |
 | main.rs:97:9:97:9 | a | main.rs:97:9:97:9 | [SSA] a |
 | main.rs:97:9:97:9 | a | main.rs:97:9:97:9 | a |
@@ -732,6 +734,8 @@ localStep
 | main.rs:482:11:482:19 | vs.iter() | main.rs:482:11:482:19 | receiver for vs.iter() |
 | main.rs:482:11:482:26 | ... .next() | main.rs:482:11:482:26 | receiver for ... .next() |
 | main.rs:482:11:482:26 | [post] receiver for ... .next() | main.rs:482:11:482:26 | [post] ... .next() |
+| main.rs:482:11:482:35 | ... .unwrap() | main.rs:482:11:482:35 | receiver for ... .unwrap() |
+| main.rs:482:11:482:35 | [post] receiver for ... .unwrap() | main.rs:482:11:482:35 | [post] ... .unwrap() |
 | main.rs:483:11:483:12 | [post] receiver for vs | main.rs:483:11:483:12 | [post] vs |
 | main.rs:483:11:483:12 | [post] vs | main.rs:485:14:485:15 | vs |
 | main.rs:483:11:483:12 | vs | main.rs:483:11:483:12 | receiver for vs |
@@ -740,6 +744,8 @@ localStep
 | main.rs:483:11:483:19 | vs.iter() | main.rs:483:11:483:19 | receiver for vs.iter() |
 | main.rs:483:11:483:26 | ... .nth(...) | main.rs:483:11:483:26 | receiver for ... .nth(...) |
 | main.rs:483:11:483:26 | [post] receiver for ... .nth(...) | main.rs:483:11:483:26 | [post] ... .nth(...) |
+| main.rs:483:11:483:35 | ... .unwrap() | main.rs:483:11:483:35 | receiver for ... .unwrap() |
+| main.rs:483:11:483:35 | [post] receiver for ... .unwrap() | main.rs:483:11:483:35 | [post] ... .unwrap() |
 | main.rs:485:9:485:9 | [SSA] v | main.rs:486:14:486:14 | v |
 | main.rs:485:9:485:9 | v | main.rs:485:9:485:9 | [SSA] v |
 | main.rs:485:9:485:9 | v | main.rs:485:9:485:9 | v |
@@ -774,6 +780,8 @@ localStep
 | main.rs:497:20:497:20 | [SSA] x | main.rs:497:29:497:29 | x |
 | main.rs:497:20:497:20 | x | main.rs:497:20:497:20 | [SSA] x |
 | main.rs:497:20:497:20 | x | main.rs:497:20:497:20 | x |
+| main.rs:497:29:497:29 | [post] receiver for x | main.rs:497:29:497:29 | [post] x |
+| main.rs:497:29:497:29 | x | main.rs:497:29:497:29 | receiver for x |
 | main.rs:498:5:498:6 | [post] receiver for vs | main.rs:498:5:498:6 | [post] vs |
 | main.rs:498:5:498:6 | [post] vs | main.rs:500:14:500:15 | vs |
 | main.rs:498:5:498:6 | vs | main.rs:498:5:498:6 | receiver for vs |
@@ -784,6 +792,8 @@ localStep
 | main.rs:498:25:498:25 | [SSA] x | main.rs:498:34:498:34 | x |
 | main.rs:498:25:498:25 | x | main.rs:498:25:498:25 | [SSA] x |
 | main.rs:498:25:498:25 | x | main.rs:498:25:498:25 | x |
+| main.rs:498:34:498:34 | [post] receiver for x | main.rs:498:34:498:34 | [post] x |
+| main.rs:498:34:498:34 | x | main.rs:498:34:498:34 | receiver for x |
 | main.rs:500:9:500:9 | [SSA] v | main.rs:501:14:501:14 | v |
 | main.rs:500:9:500:9 | v | main.rs:500:9:500:9 | [SSA] v |
 | main.rs:500:9:500:9 | v | main.rs:500:9:500:9 | v |
@@ -809,6 +819,8 @@ localStep
 | main.rs:507:11:507:23 | vs_mut.iter() | main.rs:507:11:507:23 | receiver for vs_mut.iter() |
 | main.rs:507:11:507:30 | ... .next() | main.rs:507:11:507:30 | receiver for ... .next() |
 | main.rs:507:11:507:30 | [post] receiver for ... .next() | main.rs:507:11:507:30 | [post] ... .next() |
+| main.rs:507:11:507:39 | ... .unwrap() | main.rs:507:11:507:39 | receiver for ... .unwrap() |
+| main.rs:507:11:507:39 | [post] receiver for ... .unwrap() | main.rs:507:11:507:39 | [post] ... .unwrap() |
 | main.rs:508:11:508:16 | [SSA] vs_mut | main.rs:510:19:510:24 | vs_mut |
 | main.rs:508:11:508:16 | [post] receiver for vs_mut | main.rs:508:11:508:16 | [post] vs_mut |
 | main.rs:508:11:508:16 | [post] vs_mut | main.rs:510:19:510:24 | vs_mut |
@@ -818,6 +830,8 @@ localStep
 | main.rs:508:11:508:23 | vs_mut.iter() | main.rs:508:11:508:23 | receiver for vs_mut.iter() |
 | main.rs:508:11:508:30 | ... .nth(...) | main.rs:508:11:508:30 | receiver for ... .nth(...) |
 | main.rs:508:11:508:30 | [post] receiver for ... .nth(...) | main.rs:508:11:508:30 | [post] ... .nth(...) |
+| main.rs:508:11:508:39 | ... .unwrap() | main.rs:508:11:508:39 | receiver for ... .unwrap() |
+| main.rs:508:11:508:39 | [post] receiver for ... .unwrap() | main.rs:508:11:508:39 | [post] ... .unwrap() |
 | main.rs:510:5:512:5 | for ... in ... { ... } | main.rs:478:16:513:1 | { ... } |
 | main.rs:510:14:510:14 | [SSA] v | main.rs:511:14:511:14 | v |
 | main.rs:510:14:510:14 | v | main.rs:510:14:510:14 | [SSA] v |
@@ -842,6 +856,8 @@ localStep
 | main.rs:519:17:519:18 | &c | main.rs:519:9:519:13 | c_ref |
 | main.rs:523:14:523:18 | [post] c_ref | main.rs:524:11:524:15 | c_ref |
 | main.rs:523:14:523:18 | c_ref | main.rs:524:11:524:15 | c_ref |
+| main.rs:524:11:524:15 | [post] receiver for c_ref | main.rs:524:11:524:15 | [post] c_ref |
+| main.rs:524:11:524:15 | c_ref | main.rs:524:11:524:15 | receiver for c_ref |
 | main.rs:528:9:528:9 | [SSA] a | main.rs:530:10:530:10 | a |
 | main.rs:528:9:528:9 | a | main.rs:528:9:528:9 | [SSA] a |
 | main.rs:528:9:528:9 | a | main.rs:528:9:528:9 | a |
@@ -867,6 +883,7 @@ localStep
 | main.rs:577:36:577:41 | [post] MacroExpr | main.rs:577:36:577:41 | [post] ...::new(...) |
 readStep
 | main.rs:36:9:36:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:36:14:36:14 | _ |
+| main.rs:90:11:90:11 | [post] receiver for i | file://:0:0:0:0 | &ref | main.rs:90:11:90:11 | [post] i |
 | main.rs:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:10:90:11 | * ... |
 | main.rs:98:10:98:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:98:10:98:12 | a.0 |
 | main.rs:99:10:99:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:99:10:99:12 | a.1 |
@@ -981,6 +998,7 @@ readStep
 | main.rs:510:19:510:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:510:9:510:14 | &mut ... |
 | main.rs:524:11:524:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:524:10:524:15 | * ... |
 storeStep
+| main.rs:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:11:90:11 | receiver for i |
 | main.rs:97:14:97:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:97:13:97:26 | TupleExpr |
 | main.rs:97:25:97:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:97:13:97:26 | TupleExpr |
 | main.rs:103:14:103:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:103:13:103:30 | TupleExpr |
diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected
index d242a227c11d..c6d80a4c3959 100644
--- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected
+++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected
@@ -3,7 +3,7 @@ multiplePathResolutions
 | main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
 | main.rs:626:3:626:12 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) |
 | main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
-| main.rs:631:7:631:16 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) |
-| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
-| main.rs:634:7:634:16 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) |
-| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
+| main.rs:632:7:632:16 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) |
+| main.rs:632:7:632:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
+| main.rs:635:7:635:16 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) |
+| main.rs:635:7:635:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs
index c8c6f36ac3f0..cf848ba26876 100644
--- a/rust/ql/test/library-tests/path-resolution/main.rs
+++ b/rust/ql/test/library-tests/path-resolution/main.rs
@@ -627,7 +627,8 @@ extern crate self as zelf;
 fn z() {} // I122
 
 struct AStruct {} //I123
-impl AStruct { // $ item=I123
+impl AStruct // $ item=I123
+{
     #[proc_macro::add_suffix("on_type")] // $ item=add_suffix
     pub fn z() {} // I124
 
@@ -635,6 +636,10 @@ impl AStruct { // $ item=I123
     pub fn z(&self) {} // I125
 }
 
+use std::{self as ztd}; // $ item=std
+
+fn use_ztd(x: ztd::string::String) {} // $ item=String
+
 fn main() {
     my::nested::nested1::nested2::f(); // $ item=I4
     my::f(); // $ item=I38
@@ -667,6 +672,6 @@ fn main() {
     zelf::h(); // $ item=I25
     z_changed(); // $ MISSING: item=I122
     AStruct::z_on_type(); // $ MISSING: item=I124
-    AStruct{} // $ item=I123
+    AStruct {} // $ item=I123
         .z_on_instance(); // MISSING: item=I125
 }
diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
index fd712596821b..164852626dbe 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
@@ -61,7 +61,7 @@ resolvePath
 | main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
 | main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
 | main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
-| main.rs:40:9:40:13 | super | main.rs:1:1:672:2 | SourceFile |
+| main.rs:40:9:40:13 | super | main.rs:1:1:677:2 | SourceFile |
 | main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
 | main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
 | main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
@@ -73,7 +73,7 @@ resolvePath
 | main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
 | main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
 | main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
-| main.rs:68:5:68:8 | self | main.rs:1:1:672:2 | SourceFile |
+| main.rs:68:5:68:8 | self | main.rs:1:1:677:2 | SourceFile |
 | main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
 | main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
 | main.rs:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 |
@@ -88,7 +88,7 @@ resolvePath
 | main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
 | main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
 | main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
-| main.rs:117:13:117:17 | super | main.rs:1:1:672:2 | SourceFile |
+| main.rs:117:13:117:17 | super | main.rs:1:1:677:2 | SourceFile |
 | main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
 | main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
 | main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
@@ -270,75 +270,80 @@ resolvePath
 | main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
 | main.rs:626:3:626:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
 | main.rs:630:6:630:12 | AStruct | main.rs:629:1:629:17 | struct AStruct |
-| main.rs:631:7:631:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
-| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
-| main.rs:631:7:631:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
-| main.rs:634:7:634:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
-| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
-| main.rs:634:7:634:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
-| main.rs:639:5:639:6 | my | main.rs:1:1:1:7 | mod my |
-| main.rs:639:5:639:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
-| main.rs:639:5:639:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
-| main.rs:639:5:639:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
-| main.rs:639:5:639:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
-| main.rs:640:5:640:6 | my | main.rs:1:1:1:7 | mod my |
-| main.rs:640:5:640:9 | ...::f | my.rs:5:1:7:1 | fn f |
-| main.rs:641:5:641:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
-| main.rs:641:5:641:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
-| main.rs:641:5:641:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
-| main.rs:641:5:641:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
-| main.rs:642:5:642:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
-| main.rs:643:5:643:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
-| main.rs:644:5:644:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
-| main.rs:644:5:644:12 | ...::h | main.rs:50:1:69:1 | fn h |
-| main.rs:645:5:645:6 | m1 | main.rs:13:1:37:1 | mod m1 |
-| main.rs:645:5:645:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
-| main.rs:645:5:645:13 | ...::g | main.rs:23:9:27:9 | fn g |
-| main.rs:646:5:646:6 | m1 | main.rs:13:1:37:1 | mod m1 |
-| main.rs:646:5:646:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
-| main.rs:646:5:646:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
-| main.rs:646:5:646:17 | ...::h | main.rs:30:27:34:13 | fn h |
-| main.rs:647:5:647:6 | m4 | main.rs:39:1:46:1 | mod m4 |
-| main.rs:647:5:647:9 | ...::i | main.rs:42:5:45:5 | fn i |
-| main.rs:648:5:648:5 | h | main.rs:50:1:69:1 | fn h |
-| main.rs:649:5:649:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
-| main.rs:650:5:650:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
-| main.rs:651:5:651:5 | j | main.rs:97:1:101:1 | fn j |
-| main.rs:652:5:652:6 | m6 | main.rs:109:1:120:1 | mod m6 |
-| main.rs:652:5:652:9 | ...::g | main.rs:114:5:119:5 | fn g |
-| main.rs:653:5:653:6 | m7 | main.rs:122:1:141:1 | mod m7 |
-| main.rs:653:5:653:9 | ...::f | main.rs:133:5:140:5 | fn f |
-| main.rs:654:5:654:6 | m8 | main.rs:143:1:197:1 | mod m8 |
-| main.rs:654:5:654:9 | ...::g | main.rs:181:5:196:5 | fn g |
-| main.rs:655:5:655:6 | m9 | main.rs:199:1:207:1 | mod m9 |
-| main.rs:655:5:655:9 | ...::f | main.rs:202:5:206:5 | fn f |
-| main.rs:656:5:656:7 | m11 | main.rs:230:1:267:1 | mod m11 |
-| main.rs:656:5:656:10 | ...::f | main.rs:235:5:238:5 | fn f |
-| main.rs:657:5:657:7 | m15 | main.rs:298:1:352:1 | mod m15 |
-| main.rs:657:5:657:10 | ...::f | main.rs:339:5:351:5 | fn f |
-| main.rs:658:5:658:7 | m16 | main.rs:354:1:446:1 | mod m16 |
-| main.rs:658:5:658:10 | ...::f | main.rs:421:5:445:5 | fn f |
-| main.rs:659:5:659:7 | m17 | main.rs:448:1:478:1 | mod m17 |
-| main.rs:659:5:659:10 | ...::f | main.rs:472:5:477:5 | fn f |
-| main.rs:660:5:660:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
-| main.rs:660:5:660:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
-| main.rs:661:5:661:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
-| main.rs:661:5:661:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
-| main.rs:662:5:662:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
-| main.rs:662:5:662:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
-| main.rs:663:5:663:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
-| main.rs:664:5:664:7 | m18 | main.rs:480:1:498:1 | mod m18 |
-| main.rs:664:5:664:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 |
-| main.rs:664:5:664:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 |
-| main.rs:664:5:664:20 | ...::g | main.rs:491:13:495:13 | fn g |
-| main.rs:665:5:665:7 | m23 | main.rs:527:1:552:1 | mod m23 |
-| main.rs:665:5:665:10 | ...::f | main.rs:547:5:551:5 | fn f |
-| main.rs:666:5:666:7 | m24 | main.rs:554:1:622:1 | mod m24 |
-| main.rs:666:5:666:10 | ...::f | main.rs:608:5:621:5 | fn f |
-| main.rs:667:5:667:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
-| main.rs:667:5:667:11 | ...::h | main.rs:50:1:69:1 | fn h |
-| main.rs:669:5:669:11 | AStruct | main.rs:629:1:629:17 | struct AStruct |
-| main.rs:670:5:670:11 | AStruct | main.rs:629:1:629:17 | struct AStruct |
+| main.rs:632:7:632:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
+| main.rs:632:7:632:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
+| main.rs:632:7:632:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
+| main.rs:635:7:635:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
+| main.rs:635:7:635:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
+| main.rs:635:7:635:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
+| main.rs:639:5:639:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) |
+| main.rs:639:11:639:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) |
+| main.rs:641:15:641:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) |
+| main.rs:641:15:641:25 | ...::string | {EXTERNAL LOCATION} | mod string |
+| main.rs:641:15:641:33 | ...::String | {EXTERNAL LOCATION} | struct String |
+| main.rs:644:5:644:6 | my | main.rs:1:1:1:7 | mod my |
+| main.rs:644:5:644:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
+| main.rs:644:5:644:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
+| main.rs:644:5:644:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
+| main.rs:644:5:644:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
+| main.rs:645:5:645:6 | my | main.rs:1:1:1:7 | mod my |
+| main.rs:645:5:645:9 | ...::f | my.rs:5:1:7:1 | fn f |
+| main.rs:646:5:646:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
+| main.rs:646:5:646:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
+| main.rs:646:5:646:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
+| main.rs:646:5:646:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
+| main.rs:647:5:647:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
+| main.rs:648:5:648:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
+| main.rs:649:5:649:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
+| main.rs:649:5:649:12 | ...::h | main.rs:50:1:69:1 | fn h |
+| main.rs:650:5:650:6 | m1 | main.rs:13:1:37:1 | mod m1 |
+| main.rs:650:5:650:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
+| main.rs:650:5:650:13 | ...::g | main.rs:23:9:27:9 | fn g |
+| main.rs:651:5:651:6 | m1 | main.rs:13:1:37:1 | mod m1 |
+| main.rs:651:5:651:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
+| main.rs:651:5:651:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
+| main.rs:651:5:651:17 | ...::h | main.rs:30:27:34:13 | fn h |
+| main.rs:652:5:652:6 | m4 | main.rs:39:1:46:1 | mod m4 |
+| main.rs:652:5:652:9 | ...::i | main.rs:42:5:45:5 | fn i |
+| main.rs:653:5:653:5 | h | main.rs:50:1:69:1 | fn h |
+| main.rs:654:5:654:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
+| main.rs:655:5:655:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
+| main.rs:656:5:656:5 | j | main.rs:97:1:101:1 | fn j |
+| main.rs:657:5:657:6 | m6 | main.rs:109:1:120:1 | mod m6 |
+| main.rs:657:5:657:9 | ...::g | main.rs:114:5:119:5 | fn g |
+| main.rs:658:5:658:6 | m7 | main.rs:122:1:141:1 | mod m7 |
+| main.rs:658:5:658:9 | ...::f | main.rs:133:5:140:5 | fn f |
+| main.rs:659:5:659:6 | m8 | main.rs:143:1:197:1 | mod m8 |
+| main.rs:659:5:659:9 | ...::g | main.rs:181:5:196:5 | fn g |
+| main.rs:660:5:660:6 | m9 | main.rs:199:1:207:1 | mod m9 |
+| main.rs:660:5:660:9 | ...::f | main.rs:202:5:206:5 | fn f |
+| main.rs:661:5:661:7 | m11 | main.rs:230:1:267:1 | mod m11 |
+| main.rs:661:5:661:10 | ...::f | main.rs:235:5:238:5 | fn f |
+| main.rs:662:5:662:7 | m15 | main.rs:298:1:352:1 | mod m15 |
+| main.rs:662:5:662:10 | ...::f | main.rs:339:5:351:5 | fn f |
+| main.rs:663:5:663:7 | m16 | main.rs:354:1:446:1 | mod m16 |
+| main.rs:663:5:663:10 | ...::f | main.rs:421:5:445:5 | fn f |
+| main.rs:664:5:664:7 | m17 | main.rs:448:1:478:1 | mod m17 |
+| main.rs:664:5:664:10 | ...::f | main.rs:472:5:477:5 | fn f |
+| main.rs:665:5:665:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
+| main.rs:665:5:665:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
+| main.rs:666:5:666:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
+| main.rs:666:5:666:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
+| main.rs:667:5:667:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
+| main.rs:667:5:667:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
+| main.rs:668:5:668:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
+| main.rs:669:5:669:7 | m18 | main.rs:480:1:498:1 | mod m18 |
+| main.rs:669:5:669:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 |
+| main.rs:669:5:669:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 |
+| main.rs:669:5:669:20 | ...::g | main.rs:491:13:495:13 | fn g |
+| main.rs:670:5:670:7 | m23 | main.rs:527:1:552:1 | mod m23 |
+| main.rs:670:5:670:10 | ...::f | main.rs:547:5:551:5 | fn f |
+| main.rs:671:5:671:7 | m24 | main.rs:554:1:622:1 | mod m24 |
+| main.rs:671:5:671:10 | ...::f | main.rs:608:5:621:5 | fn f |
+| main.rs:672:5:672:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
+| main.rs:672:5:672:11 | ...::h | main.rs:50:1:69:1 | fn h |
+| main.rs:674:5:674:11 | AStruct | main.rs:629:1:629:17 | struct AStruct |
+| main.rs:675:5:675:11 | AStruct | main.rs:629:1:629:17 | struct AStruct |
 | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
 | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
 | my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -354,7 +359,7 @@ resolvePath
 | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
 | my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h |
 | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
-| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:672:2 | SourceFile |
+| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:677:2 | SourceFile |
 | my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h |
 | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
 | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |
diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected
new file mode 100644
index 000000000000..81551e369e2f
--- /dev/null
+++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected
@@ -0,0 +1,3 @@
+multipleMethodCallTargets
+| dereference.rs:61:15:61:24 | e1.deref() | file://:0:0:0:0 | fn deref |
+| dereference.rs:61:15:61:24 | e1.deref() | file://:0:0:0:0 | fn deref |
diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs
new file mode 100644
index 000000000000..fb16eb00cf3d
--- /dev/null
+++ b/rust/ql/test/library-tests/type-inference/dereference.rs
@@ -0,0 +1,102 @@
+/// This file contains tests for dereferencing with through the `Deref` trait.
+use std::ops::Deref;
+
+struct MyIntPointer {
+    value: i64,
+}
+
+impl Deref for MyIntPointer {
+    type Target = i64;
+
+    // MyIntPointer::deref
+    fn deref(&self) -> &i64 {
+        &self.value // $ fieldof=MyIntPointer
+    }
+}
+
+struct MySmartPointer<T> {
+    value: T,
+}
+
+impl<T> Deref for MySmartPointer<T> {
+    type Target = T;
+
+    // MySmartPointer::deref
+    fn deref(&self) -> &T {
+        &self.value // $ fieldof=MySmartPointer
+    }
+}
+
+fn explicit_monomorphic_dereference() {
+    // Dereference with method call
+    let a1 = MyIntPointer { value: 34i64 };
+    let _b1 = a1.deref(); // $ method=MyIntPointer::deref type=_b1:&T.i64
+
+    // Dereference with overloaded dereference operator
+    let a2 = MyIntPointer { value: 34i64 };
+    let _b2 = *a2; // $ method=MyIntPointer::deref type=_b2:i64
+
+    // Call method on explicitly dereferenced value
+    let a3 = MyIntPointer { value: 34i64 };
+    let _b3 = (*a3).is_positive(); // $ method=MyIntPointer::deref method=is_positive type=_b3:bool
+}
+
+fn explicit_polymorphic_dereference() {
+    // Explicit dereference with type parameter
+    let c1 = MySmartPointer { value: 'a' };
+    let _d1 = c1.deref(); // $ method=MySmartPointer::deref type=_d1:&T.char
+
+    // Explicit dereference with type parameter
+    let c2 = MySmartPointer { value: 'a' };
+    let _d2 = *c2; // $ method=MySmartPointer::deref type=_d2:char
+
+    // Call method on explicitly dereferenced value with type parameter
+    let c3 = MySmartPointer { value: 34i64 };
+    let _d3 = (*c3).is_positive(); // $ method=MySmartPointer::deref method=is_positive type=_d3:bool
+}
+
+fn explicit_ref_dereference() {
+    // Explicit dereference with type parameter
+    let e1 = &'a';
+    let _f1 = e1.deref(); // $ method=deref MISSING: type=_f1:&T.char
+
+    // Explicit dereference with type parameter
+    let e2 = &'a';
+    let _f2 = *e2; // $ method=deref type=_f2:char
+
+    // Call method on explicitly dereferenced value with type parameter
+    let e3 = &34i64;
+    let _f3 = (*e3).is_positive(); // $ method=deref method=is_positive type=_f3:bool
+}
+
+fn explicit_box_dereference() {
+    // Explicit dereference with type parameter
+    let g1: Box<char> = Box::new('a');
+    let _h1 = g1.deref(); // $ method=deref type=_h1:&T.char
+
+    // Explicit dereference with type parameter
+    let g2: Box<char> = Box::new('a');
+    let _h2 = *g2; // $ method=deref type=_h2:char
+
+    // Call method on explicitly dereferenced value with type parameter
+    let g3: Box<i64> = Box::new(34i64);
+    let _h3 = (*g3).is_positive(); // $ method=deref method=is_positive type=_h3:bool
+}
+
+fn implicit_dereference() {
+    // Call method on implicitly dereferenced value
+    let x = MyIntPointer { value: 34i64 };
+    let _y = x.is_positive(); // $ MISSING: method=is_positive type=_y:bool
+
+    // Call method on implicitly dereferenced value
+    let x = MySmartPointer { value: 34i64 };
+    let _y = x.is_positive(); // $ MISSING: method=is_positive type=_y:bool
+}
+
+pub fn test() {
+    explicit_monomorphic_dereference();
+    explicit_polymorphic_dereference();
+    explicit_ref_dereference();
+    explicit_box_dereference();
+    implicit_dereference();
+}
diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs
index 5b7232ae8494..109581588a58 100644
--- a/rust/ql/test/library-tests/type-inference/main.rs
+++ b/rust/ql/test/library-tests/type-inference/main.rs
@@ -1079,6 +1079,11 @@ mod method_call_type_conversion {
     #[derive(Debug, Copy, Clone)]
     struct S2;
 
+    #[derive(Debug, Copy, Clone, Default)]
+    struct MyInt {
+        a: i64,
+    }
+
     impl<T> S<T> {
         fn m1(self) -> T {
             self.0 // $ fieldof=S
@@ -1093,6 +1098,24 @@ mod method_call_type_conversion {
         }
     }
 
+    trait ATrait {
+        fn method_on_borrow(&self) -> i64;
+        fn method_not_on_borrow(self) -> i64;
+    }
+
+    // Trait implementation on a borrow.
+    impl ATrait for &MyInt {
+        // MyInt::method_on_borrow
+        fn method_on_borrow(&self) -> i64 {
+            (*(*self)).a // $ method=deref fieldof=MyInt
+        }
+
+        // MyInt::method_not_on_borrow
+        fn method_not_on_borrow(self) -> i64 {
+            (*self).a // $ method=deref fieldof=MyInt
+        }
+    }
+
     pub fn f() {
         let x1 = S(S2);
         println!("{:?}", x1.m1()); // $ method=m1
@@ -1117,7 +1140,7 @@ mod method_call_type_conversion {
         println!("{:?}", x5.m1()); // $ method=m1
         println!("{:?}", x5.0); // $ fieldof=S
 
-        let x6 = &S(S2); // $ SPURIOUS: type=x6:&T.&T.S
+        let x6 = &S(S2);
 
         // explicit dereference
         println!("{:?}", (*x6).m1()); // $ method=m1 method=deref
@@ -1128,10 +1151,21 @@ mod method_call_type_conversion {
         let t = x7.m1(); // $ method=m1 type=t:& type=t:&T.S2
         println!("{:?}", x7);
 
-        let x9 : String = "Hello".to_string(); // $ type=x9:String
+        let x9: String = "Hello".to_string(); // $ type=x9:String
+
         // Implicit `String` -> `str` conversion happens via the `Deref` trait:
         // https://doc.rust-lang.org/std/string/struct.String.html#deref.
         let u = x9.parse::<u32>(); // $ method=parse type=u:T.u32
+
+        let my_thing = &MyInt { a: 37 };
+        // implicit borrow of a `&`
+        let a = my_thing.method_on_borrow(); // $ MISSING: method=MyInt::method_on_borrow
+        println!("{:?}", a);
+
+        // no implicit borrow
+        let my_thing = &MyInt { a: 38 };
+        let a = my_thing.method_not_on_borrow(); // $ MISSING: method=MyInt::method_not_on_borrow
+        println!("{:?}", a);
     }
 }
 
@@ -1680,6 +1714,11 @@ mod overloadable_operators {
         // Here the type of `default_vec2` must be inferred from the `+` call.
         let default_vec2 = Default::default(); // $ type=default_vec2:Vec2
         let vec2_zero_plus = Vec2 { x: 0, y: 0 } + default_vec2; // $ method=Vec2::add
+
+        // Here the type of `default_vec2` must be inferred from the `==` call
+        // and the type of the borrowed second argument is unknown at the call.
+        let default_vec2 = Default::default(); // $ type=default_vec2:Vec2
+        let vec2_zero_plus = Vec2 { x: 0, y: 0 } == default_vec2; // $ method=Vec2::eq
     }
 }
 
@@ -1881,6 +1920,8 @@ mod method_determined_by_argument_type {
     }
 }
 
+mod dereference;
+
 fn main() {
     field_access::f();
     method_impl::f();
@@ -1905,4 +1946,5 @@ fn main() {
     indexers::f();
     macros::f();
     method_determined_by_argument_type::f();
+    dereference::test();
 }
diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected
index 758882f52d84..fdbe769eba8e 100644
--- a/rust/ql/test/library-tests/type-inference/type-inference.expected
+++ b/rust/ql/test/library-tests/type-inference/type-inference.expected
@@ -1,4 +1,193 @@
 inferType
+| dereference.rs:12:14:12:18 | SelfParam |  | file://:0:0:0:0 | & |
+| dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:12:29:14:5 | { ... } |  | file://:0:0:0:0 | & |
+| dereference.rs:12:29:14:5 | { ... } | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:13:9:13:19 | &... |  | file://:0:0:0:0 | & |
+| dereference.rs:13:9:13:19 | &... | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:13:10:13:13 | self |  | file://:0:0:0:0 | & |
+| dereference.rs:13:10:13:13 | self | &T | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:13:10:13:19 | self.value |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:25:14:25:18 | SelfParam |  | file://:0:0:0:0 | & |
+| dereference.rs:25:14:25:18 | SelfParam | &T | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:25:14:25:18 | SelfParam | &T.T | dereference.rs:21:6:21:6 | T |
+| dereference.rs:25:27:27:5 | { ... } |  | file://:0:0:0:0 | & |
+| dereference.rs:25:27:27:5 | { ... } | &T | dereference.rs:21:6:21:6 | T |
+| dereference.rs:26:9:26:19 | &... |  | file://:0:0:0:0 | & |
+| dereference.rs:26:9:26:19 | &... | &T | dereference.rs:21:6:21:6 | T |
+| dereference.rs:26:10:26:13 | self |  | file://:0:0:0:0 | & |
+| dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T |
+| dereference.rs:26:10:26:19 | self.value |  | dereference.rs:21:6:21:6 | T |
+| dereference.rs:32:9:32:10 | a1 |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:32:14:32:42 | MyIntPointer {...} |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:32:36:32:40 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:33:9:33:11 | _b1 |  | file://:0:0:0:0 | & |
+| dereference.rs:33:9:33:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:33:15:33:16 | a1 |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:33:15:33:24 | a1.deref() |  | file://:0:0:0:0 | & |
+| dereference.rs:33:15:33:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:36:9:36:10 | a2 |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:36:14:36:42 | MyIntPointer {...} |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:36:36:36:40 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:37:9:37:11 | _b2 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:37:9:37:11 | _b2 |  | file://:0:0:0:0 | & |
+| dereference.rs:37:9:37:11 | _b2 | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:37:15:37:17 | * ... |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:37:15:37:17 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:37:15:37:17 | * ... | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:37:16:37:17 | a2 |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:40:9:40:10 | a3 |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:40:14:40:42 | MyIntPointer {...} |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:40:36:40:40 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:41:9:41:11 | _b3 |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:41:15:41:19 | (...) |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:41:15:41:19 | (...) |  | file://:0:0:0:0 | & |
+| dereference.rs:41:15:41:19 | (...) | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:41:15:41:33 | ... .is_positive() |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:41:16:41:18 | * ... |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:41:16:41:18 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:41:16:41:18 | * ... | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:41:17:41:18 | a3 |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:46:9:46:10 | c1 |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:46:9:46:10 | c1 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:46:14:46:42 | MySmartPointer {...} |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:46:14:46:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:46:38:46:40 | 'a' |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:47:9:47:11 | _d1 |  | file://:0:0:0:0 | & |
+| dereference.rs:47:9:47:11 | _d1 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:47:15:47:16 | c1 |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:47:15:47:16 | c1 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:47:15:47:24 | c1.deref() |  | file://:0:0:0:0 | & |
+| dereference.rs:47:15:47:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:50:9:50:10 | c2 |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:50:9:50:10 | c2 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:50:14:50:42 | MySmartPointer {...} |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:50:14:50:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:50:38:50:40 | 'a' |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:51:9:51:11 | _d2 |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:51:9:51:11 | _d2 |  | file://:0:0:0:0 | & |
+| dereference.rs:51:9:51:11 | _d2 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:51:15:51:17 | * ... |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:51:15:51:17 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:51:15:51:17 | * ... | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:51:16:51:17 | c2 |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:51:16:51:17 | c2 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:54:9:54:10 | c3 |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:54:9:54:10 | c3 | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:54:14:54:44 | MySmartPointer {...} |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:54:14:54:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:54:38:54:42 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:55:9:55:11 | _d3 |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:55:15:55:19 | (...) |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:55:15:55:19 | (...) |  | file://:0:0:0:0 | & |
+| dereference.rs:55:15:55:19 | (...) | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:55:15:55:33 | ... .is_positive() |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:55:16:55:18 | * ... |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:55:16:55:18 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:55:16:55:18 | * ... | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:55:17:55:18 | c3 |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:55:17:55:18 | c3 | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:60:9:60:10 | e1 |  | file://:0:0:0:0 | & |
+| dereference.rs:60:9:60:10 | e1 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:60:9:60:10 | e1 | &T | file://:0:0:0:0 | & |
+| dereference.rs:60:14:60:17 | &'a' |  | file://:0:0:0:0 | & |
+| dereference.rs:60:14:60:17 | &'a' | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:60:14:60:17 | &'a' | &T | file://:0:0:0:0 | & |
+| dereference.rs:60:15:60:17 | 'a' |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:60:15:60:17 | 'a' |  | file://:0:0:0:0 | & |
+| dereference.rs:61:9:61:11 | _f1 |  | file://:0:0:0:0 | & |
+| dereference.rs:61:15:61:16 | e1 |  | file://:0:0:0:0 | & |
+| dereference.rs:61:15:61:16 | e1 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:61:15:61:16 | e1 | &T | file://:0:0:0:0 | & |
+| dereference.rs:61:15:61:24 | e1.deref() |  | file://:0:0:0:0 | & |
+| dereference.rs:64:9:64:10 | e2 |  | file://:0:0:0:0 | & |
+| dereference.rs:64:9:64:10 | e2 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:64:14:64:17 | &'a' |  | file://:0:0:0:0 | & |
+| dereference.rs:64:14:64:17 | &'a' | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:64:15:64:17 | 'a' |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:65:9:65:11 | _f2 |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:65:9:65:11 | _f2 |  | file://:0:0:0:0 | & |
+| dereference.rs:65:9:65:11 | _f2 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:65:15:65:17 | * ... |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:65:15:65:17 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:65:15:65:17 | * ... | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:65:16:65:17 | e2 |  | file://:0:0:0:0 | & |
+| dereference.rs:65:16:65:17 | e2 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:68:9:68:10 | e3 |  | file://:0:0:0:0 | & |
+| dereference.rs:68:9:68:10 | e3 | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:68:14:68:19 | &34i64 |  | file://:0:0:0:0 | & |
+| dereference.rs:68:14:68:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:68:15:68:19 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:69:9:69:11 | _f3 |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:69:15:69:19 | (...) |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:69:15:69:19 | (...) |  | file://:0:0:0:0 | & |
+| dereference.rs:69:15:69:19 | (...) | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:69:15:69:33 | ... .is_positive() |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:69:16:69:18 | * ... |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:69:16:69:18 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:69:16:69:18 | * ... | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:69:17:69:18 | e3 |  | file://:0:0:0:0 | & |
+| dereference.rs:69:17:69:18 | e3 | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:74:9:74:10 | g1 |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:74:9:74:10 | g1 | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:74:9:74:10 | g1 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:74:25:74:37 | ...::new(...) |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:74:25:74:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:74:25:74:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:74:34:74:36 | 'a' |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:75:9:75:11 | _h1 |  | file://:0:0:0:0 | & |
+| dereference.rs:75:9:75:11 | _h1 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:75:15:75:16 | g1 |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:75:15:75:16 | g1 | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:75:15:75:16 | g1 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:75:15:75:24 | g1.deref() |  | file://:0:0:0:0 | & |
+| dereference.rs:75:15:75:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:78:9:78:10 | g2 |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:78:9:78:10 | g2 | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:78:9:78:10 | g2 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:78:25:78:37 | ...::new(...) |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:78:25:78:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:78:25:78:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:78:34:78:36 | 'a' |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:79:9:79:11 | _h2 |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:79:9:79:11 | _h2 |  | file://:0:0:0:0 | & |
+| dereference.rs:79:9:79:11 | _h2 | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:79:15:79:17 | * ... |  | {EXTERNAL LOCATION} | char |
+| dereference.rs:79:15:79:17 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:79:15:79:17 | * ... | &T | {EXTERNAL LOCATION} | char |
+| dereference.rs:79:16:79:17 | g2 |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:79:16:79:17 | g2 | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:79:16:79:17 | g2 | T | {EXTERNAL LOCATION} | char |
+| dereference.rs:82:9:82:10 | g3 |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:82:9:82:10 | g3 | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:82:9:82:10 | g3 | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:82:24:82:38 | ...::new(...) |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:82:24:82:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:82:24:82:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:82:33:82:37 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:83:9:83:11 | _h3 |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:83:15:83:19 | (...) |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:83:15:83:19 | (...) |  | file://:0:0:0:0 | & |
+| dereference.rs:83:15:83:19 | (...) | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:83:15:83:33 | ... .is_positive() |  | {EXTERNAL LOCATION} | bool |
+| dereference.rs:83:16:83:18 | * ... |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:83:16:83:18 | * ... |  | file://:0:0:0:0 | & |
+| dereference.rs:83:16:83:18 | * ... | &T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:83:17:83:18 | g3 |  | {EXTERNAL LOCATION} | Box |
+| dereference.rs:83:17:83:18 | g3 | A | {EXTERNAL LOCATION} | Global |
+| dereference.rs:83:17:83:18 | g3 | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:88:9:88:9 | x |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:88:13:88:41 | MyIntPointer {...} |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:88:35:88:39 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:89:14:89:14 | x |  | dereference.rs:4:1:6:1 | MyIntPointer |
+| dereference.rs:92:9:92:9 | x |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:92:9:92:9 | x | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:92:13:92:43 | MySmartPointer {...} |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:92:13:92:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:92:37:92:41 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| dereference.rs:93:14:93:14 | x |  | dereference.rs:17:1:19:1 | MySmartPointer |
+| dereference.rs:93:14:93:14 | x | T | {EXTERNAL LOCATION} | i64 |
 | loop/main.rs:7:12:7:15 | SelfParam |  | loop/main.rs:6:1:8:1 | Self [trait T1] |
 | loop/main.rs:11:12:11:15 | SelfParam |  | loop/main.rs:10:1:14:1 | Self [trait T2] |
 | loop/main.rs:12:9:12:12 | self |  | loop/main.rs:10:1:14:1 | Self [trait T2] |
@@ -1275,1439 +1464,1509 @@ inferType
 | main.rs:1070:18:1070:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
 | main.rs:1070:26:1070:34 | from_loop |  | main.rs:988:5:992:5 | MyOption |
 | main.rs:1070:26:1070:34 | from_loop | T | main.rs:1023:5:1024:13 | S |
-| main.rs:1083:15:1083:18 | SelfParam |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1083:15:1083:18 | SelfParam | T | main.rs:1082:10:1082:10 | T |
-| main.rs:1083:26:1085:9 | { ... } |  | main.rs:1082:10:1082:10 | T |
-| main.rs:1084:13:1084:16 | self |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1084:13:1084:16 | self | T | main.rs:1082:10:1082:10 | T |
-| main.rs:1084:13:1084:18 | self.0 |  | main.rs:1082:10:1082:10 | T |
-| main.rs:1087:15:1087:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1087:15:1087:19 | SelfParam | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1087:15:1087:19 | SelfParam | &T.T | main.rs:1082:10:1082:10 | T |
-| main.rs:1087:28:1089:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1087:28:1089:9 | { ... } | &T | main.rs:1082:10:1082:10 | T |
-| main.rs:1088:13:1088:19 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1088:13:1088:19 | &... | &T | main.rs:1082:10:1082:10 | T |
-| main.rs:1088:14:1088:17 | self |  | file://:0:0:0:0 | & |
-| main.rs:1088:14:1088:17 | self | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1088:14:1088:17 | self | &T.T | main.rs:1082:10:1082:10 | T |
-| main.rs:1088:14:1088:19 | self.0 |  | main.rs:1082:10:1082:10 | T |
-| main.rs:1091:15:1091:25 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1091:15:1091:25 | SelfParam | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1091:15:1091:25 | SelfParam | &T.T | main.rs:1082:10:1082:10 | T |
-| main.rs:1091:34:1093:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1091:34:1093:9 | { ... } | &T | main.rs:1082:10:1082:10 | T |
-| main.rs:1092:13:1092:19 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1092:13:1092:19 | &... | &T | main.rs:1082:10:1082:10 | T |
-| main.rs:1092:14:1092:17 | self |  | file://:0:0:0:0 | & |
-| main.rs:1092:14:1092:17 | self | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1092:14:1092:17 | self | &T.T | main.rs:1082:10:1082:10 | T |
-| main.rs:1092:14:1092:19 | self.0 |  | main.rs:1082:10:1082:10 | T |
-| main.rs:1097:13:1097:14 | x1 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1097:13:1097:14 | x1 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1097:18:1097:22 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1097:18:1097:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1097:20:1097:21 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1098:18:1098:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1098:26:1098:27 | x1 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1098:26:1098:27 | x1 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1098:26:1098:32 | x1.m1() |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1100:13:1100:14 | x2 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1100:13:1100:14 | x2 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1100:18:1100:22 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1100:18:1100:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1100:20:1100:21 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1102:18:1102:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1102:26:1102:27 | x2 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1102:26:1102:27 | x2 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1102:26:1102:32 | x2.m2() |  | file://:0:0:0:0 | & |
-| main.rs:1102:26:1102:32 | x2.m2() | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1103:18:1103:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1103:26:1103:27 | x2 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1103:26:1103:27 | x2 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1103:26:1103:32 | x2.m3() |  | file://:0:0:0:0 | & |
-| main.rs:1103:26:1103:32 | x2.m3() | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1105:13:1105:14 | x3 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1105:13:1105:14 | x3 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1105:18:1105:22 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1105:18:1105:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1105:20:1105:21 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1107:18:1107:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1107:26:1107:41 | ...::m2(...) |  | file://:0:0:0:0 | & |
-| main.rs:1107:26:1107:41 | ...::m2(...) | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1107:38:1107:40 | &x3 |  | file://:0:0:0:0 | & |
-| main.rs:1107:38:1107:40 | &x3 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1107:38:1107:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1107:39:1107:40 | x3 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1107:39:1107:40 | x3 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1108:18:1108:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1108:26:1108:41 | ...::m3(...) |  | file://:0:0:0:0 | & |
-| main.rs:1108:26:1108:41 | ...::m3(...) | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1108:38:1108:40 | &x3 |  | file://:0:0:0:0 | & |
-| main.rs:1108:38:1108:40 | &x3 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1108:38:1108:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1108:39:1108:40 | x3 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1108:39:1108:40 | x3 | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1110:13:1110:14 | x4 |  | file://:0:0:0:0 | & |
-| main.rs:1110:13:1110:14 | x4 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1110:13:1110:14 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1110:18:1110:23 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1110:18:1110:23 | &... | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1110:18:1110:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1110:19:1110:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1110:19:1110:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1110:21:1110:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1112:18:1112:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1112:26:1112:27 | x4 |  | file://:0:0:0:0 | & |
-| main.rs:1112:26:1112:27 | x4 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1112:26:1112:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1112:26:1112:32 | x4.m2() |  | file://:0:0:0:0 | & |
-| main.rs:1112:26:1112:32 | x4.m2() | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1113:18:1113:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1113:26:1113:27 | x4 |  | file://:0:0:0:0 | & |
-| main.rs:1113:26:1113:27 | x4 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1113:26:1113:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1113:26:1113:32 | x4.m3() |  | file://:0:0:0:0 | & |
-| main.rs:1113:26:1113:32 | x4.m3() | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1115:13:1115:14 | x5 |  | file://:0:0:0:0 | & |
-| main.rs:1115:13:1115:14 | x5 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1115:13:1115:14 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1115:18:1115:23 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1115:18:1115:23 | &... | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1115:18:1115:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1115:19:1115:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1115:19:1115:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1115:21:1115:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1117:18:1117:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1117:26:1117:27 | x5 |  | file://:0:0:0:0 | & |
-| main.rs:1117:26:1117:27 | x5 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1117:26:1117:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1117:26:1117:32 | x5.m1() |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1118:18:1118:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1118:26:1118:27 | x5 |  | file://:0:0:0:0 | & |
-| main.rs:1118:26:1118:27 | x5 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1118:26:1118:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1118:26:1118:29 | x5.0 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:13:1120:14 | x6 |  | file://:0:0:0:0 | & |
-| main.rs:1120:13:1120:14 | x6 | &T | file://:0:0:0:0 | & |
-| main.rs:1120:13:1120:14 | x6 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1120:13:1120:14 | x6 | &T.&T | main.rs:1076:5:1077:19 | S |
-| main.rs:1120:13:1120:14 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:13:1120:14 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:18:1120:23 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1120:18:1120:23 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1120:18:1120:23 | &... | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1120:18:1120:23 | &... | &T.&T | main.rs:1076:5:1077:19 | S |
-| main.rs:1120:18:1120:23 | &... | &T.&T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:18:1120:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:19:1120:23 | S(...) |  | file://:0:0:0:0 | & |
-| main.rs:1120:19:1120:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1120:19:1120:23 | S(...) | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1120:19:1120:23 | S(...) | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:19:1120:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1120:21:1120:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:18:1123:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1123:26:1123:30 | (...) |  | file://:0:0:0:0 | & |
-| main.rs:1123:26:1123:30 | (...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1123:26:1123:30 | (...) | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1123:26:1123:30 | (...) | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:26:1123:30 | (...) | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:26:1123:35 | ... .m1() |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:27:1123:29 | * ... |  | file://:0:0:0:0 | & |
-| main.rs:1123:27:1123:29 | * ... |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1123:27:1123:29 | * ... | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1123:27:1123:29 | * ... | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:27:1123:29 | * ... | T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:28:1123:29 | x6 |  | file://:0:0:0:0 | & |
-| main.rs:1123:28:1123:29 | x6 | &T | file://:0:0:0:0 | & |
-| main.rs:1123:28:1123:29 | x6 | &T | main.rs:1076:5:1077:19 | S |
-| main.rs:1123:28:1123:29 | x6 | &T.&T | main.rs:1076:5:1077:19 | S |
-| main.rs:1123:28:1123:29 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1123:28:1123:29 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1125:13:1125:14 | x7 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1125:13:1125:14 | x7 | T | file://:0:0:0:0 | & |
-| main.rs:1125:13:1125:14 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1125:18:1125:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1125:18:1125:23 | S(...) | T | file://:0:0:0:0 | & |
-| main.rs:1125:18:1125:23 | S(...) | T.&T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1125:20:1125:22 | &S2 |  | file://:0:0:0:0 | & |
-| main.rs:1125:20:1125:22 | &S2 | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1125:21:1125:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1128:13:1128:13 | t |  | file://:0:0:0:0 | & |
-| main.rs:1128:13:1128:13 | t | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1128:17:1128:18 | x7 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1128:17:1128:18 | x7 | T | file://:0:0:0:0 | & |
-| main.rs:1128:17:1128:18 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1128:17:1128:23 | x7.m1() |  | file://:0:0:0:0 | & |
-| main.rs:1128:17:1128:23 | x7.m1() | &T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1129:18:1129:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1129:26:1129:27 | x7 |  | main.rs:1076:5:1077:19 | S |
-| main.rs:1129:26:1129:27 | x7 | T | file://:0:0:0:0 | & |
-| main.rs:1129:26:1129:27 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 |
-| main.rs:1131:13:1131:14 | x9 |  | {EXTERNAL LOCATION} | String |
-| main.rs:1131:27:1131:33 | "Hello" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1131:27:1131:45 | "Hello".to_string() |  | {EXTERNAL LOCATION} | String |
-| main.rs:1134:13:1134:13 | u |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1134:13:1134:13 | u | T | {EXTERNAL LOCATION} | u32 |
-| main.rs:1134:17:1134:18 | x9 |  | {EXTERNAL LOCATION} | String |
-| main.rs:1134:17:1134:33 | x9.parse() |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1134:17:1134:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 |
-| main.rs:1141:16:1141:20 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1141:16:1141:20 | SelfParam | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] |
-| main.rs:1144:16:1144:20 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1144:16:1144:20 | SelfParam | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] |
-| main.rs:1144:32:1146:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1144:32:1146:9 | { ... } | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] |
-| main.rs:1145:13:1145:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1145:13:1145:16 | self | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] |
-| main.rs:1145:13:1145:22 | self.foo() |  | file://:0:0:0:0 | & |
-| main.rs:1145:13:1145:22 | self.foo() | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] |
-| main.rs:1153:16:1153:20 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1153:16:1153:20 | SelfParam | &T | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1153:36:1155:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1153:36:1155:9 | { ... } | &T | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1154:13:1154:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1154:13:1154:16 | self | &T | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1159:13:1159:13 | x |  | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1159:17:1159:24 | MyStruct |  | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1160:9:1160:9 | x |  | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1160:9:1160:15 | x.bar() |  | file://:0:0:0:0 | & |
-| main.rs:1160:9:1160:15 | x.bar() | &T | main.rs:1149:5:1149:20 | MyStruct |
-| main.rs:1170:16:1170:20 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1170:16:1170:20 | SelfParam | &T | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1170:16:1170:20 | SelfParam | &T.T | main.rs:1169:10:1169:10 | T |
-| main.rs:1170:32:1172:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1170:32:1172:9 | { ... } | &T | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1170:32:1172:9 | { ... } | &T.T | main.rs:1169:10:1169:10 | T |
-| main.rs:1171:13:1171:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1171:13:1171:16 | self | &T | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1171:13:1171:16 | self | &T.T | main.rs:1169:10:1169:10 | T |
-| main.rs:1176:13:1176:13 | x |  | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1176:13:1176:13 | x | T | main.rs:1165:5:1165:13 | S |
-| main.rs:1176:17:1176:27 | MyStruct(...) |  | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1176:17:1176:27 | MyStruct(...) | T | main.rs:1165:5:1165:13 | S |
-| main.rs:1176:26:1176:26 | S |  | main.rs:1165:5:1165:13 | S |
-| main.rs:1177:9:1177:9 | x |  | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1177:9:1177:9 | x | T | main.rs:1165:5:1165:13 | S |
-| main.rs:1177:9:1177:15 | x.foo() |  | file://:0:0:0:0 | & |
-| main.rs:1177:9:1177:15 | x.foo() | &T | main.rs:1167:5:1167:26 | MyStruct |
-| main.rs:1177:9:1177:15 | x.foo() | &T.T | main.rs:1165:5:1165:13 | S |
-| main.rs:1188:17:1188:25 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1188:17:1188:25 | SelfParam | &T | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1189:13:1189:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1189:13:1189:16 | self | &T | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1189:13:1189:21 | self.bool |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1189:13:1189:34 | ... = ... |  | file://:0:0:0:0 | () |
-| main.rs:1189:25:1189:34 | ! ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1189:26:1189:29 | self |  | file://:0:0:0:0 | & |
-| main.rs:1189:26:1189:29 | self | &T | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1189:26:1189:34 | self.bool |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1196:15:1196:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1196:15:1196:19 | SelfParam | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1196:31:1198:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1196:31:1198:9 | { ... } | &T | file://:0:0:0:0 | & |
-| main.rs:1196:31:1198:9 | { ... } | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1196:31:1198:9 | { ... } | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1196:31:1198:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & |
-| main.rs:1196:31:1198:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1197:13:1197:19 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1197:13:1197:19 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1197:13:1197:19 | &... | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1197:13:1197:19 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1197:13:1197:19 | &... | &T.&T.&T | file://:0:0:0:0 | & |
-| main.rs:1197:13:1197:19 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1197:14:1197:19 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1197:14:1197:19 | &... |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1197:14:1197:19 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1197:14:1197:19 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1197:14:1197:19 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1197:15:1197:19 | &self |  | file://:0:0:0:0 | & |
-| main.rs:1197:15:1197:19 | &self | &T | file://:0:0:0:0 | & |
-| main.rs:1197:15:1197:19 | &self | &T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1197:16:1197:19 | self |  | file://:0:0:0:0 | & |
-| main.rs:1197:16:1197:19 | self | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1200:15:1200:25 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1200:15:1200:25 | SelfParam | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1200:37:1202:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1200:37:1202:9 | { ... } | &T | file://:0:0:0:0 | & |
-| main.rs:1200:37:1202:9 | { ... } | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1200:37:1202:9 | { ... } | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1200:37:1202:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & |
-| main.rs:1200:37:1202:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1201:13:1201:19 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1201:13:1201:19 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1201:13:1201:19 | &... | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1201:13:1201:19 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1201:13:1201:19 | &... | &T.&T.&T | file://:0:0:0:0 | & |
-| main.rs:1201:13:1201:19 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1201:14:1201:19 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1201:14:1201:19 | &... |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1201:14:1201:19 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1201:14:1201:19 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1201:14:1201:19 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1201:15:1201:19 | &self |  | file://:0:0:0:0 | & |
-| main.rs:1201:15:1201:19 | &self | &T | file://:0:0:0:0 | & |
-| main.rs:1201:15:1201:19 | &self | &T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1201:16:1201:19 | self |  | file://:0:0:0:0 | & |
-| main.rs:1201:16:1201:19 | self | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1204:15:1204:15 | x |  | file://:0:0:0:0 | & |
-| main.rs:1204:15:1204:15 | x | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1204:34:1206:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1204:34:1206:9 | { ... } | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1205:13:1205:13 | x |  | file://:0:0:0:0 | & |
-| main.rs:1205:13:1205:13 | x | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1208:15:1208:15 | x |  | file://:0:0:0:0 | & |
-| main.rs:1208:15:1208:15 | x | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1208:34:1210:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1208:34:1210:9 | { ... } | &T | file://:0:0:0:0 | & |
-| main.rs:1208:34:1210:9 | { ... } | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1208:34:1210:9 | { ... } | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1208:34:1210:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & |
-| main.rs:1208:34:1210:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1209:13:1209:16 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1209:13:1209:16 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1209:13:1209:16 | &... | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1209:13:1209:16 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1209:13:1209:16 | &... | &T.&T.&T | file://:0:0:0:0 | & |
-| main.rs:1209:13:1209:16 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1209:14:1209:16 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1209:14:1209:16 | &... |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1209:14:1209:16 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1209:14:1209:16 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1209:14:1209:16 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1209:15:1209:16 | &x |  | file://:0:0:0:0 | & |
-| main.rs:1209:15:1209:16 | &x | &T | file://:0:0:0:0 | & |
-| main.rs:1209:15:1209:16 | &x | &T.&T | main.rs:1193:5:1193:13 | S |
-| main.rs:1209:16:1209:16 | x |  | file://:0:0:0:0 | & |
-| main.rs:1209:16:1209:16 | x | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1214:13:1214:13 | x |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1214:17:1214:20 | S {...} |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1215:9:1215:9 | x |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1215:9:1215:14 | x.f1() |  | file://:0:0:0:0 | & |
-| main.rs:1215:9:1215:14 | x.f1() | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1216:9:1216:9 | x |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1216:9:1216:14 | x.f2() |  | file://:0:0:0:0 | & |
-| main.rs:1216:9:1216:14 | x.f2() | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1217:9:1217:17 | ...::f3(...) |  | file://:0:0:0:0 | & |
-| main.rs:1217:9:1217:17 | ...::f3(...) | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1217:15:1217:16 | &x |  | file://:0:0:0:0 | & |
-| main.rs:1217:15:1217:16 | &x | &T | main.rs:1193:5:1193:13 | S |
-| main.rs:1217:16:1217:16 | x |  | main.rs:1193:5:1193:13 | S |
-| main.rs:1219:13:1219:13 | n |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1219:13:1219:13 | n |  | file://:0:0:0:0 | & |
-| main.rs:1219:17:1219:24 | * ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1219:17:1219:24 | * ... |  | file://:0:0:0:0 | & |
-| main.rs:1219:18:1219:24 | * ... |  | file://:0:0:0:0 | & |
-| main.rs:1219:18:1219:24 | * ... | &T | {EXTERNAL LOCATION} | bool |
-| main.rs:1219:18:1219:24 | * ... | &T | file://:0:0:0:0 | & |
-| main.rs:1219:19:1219:24 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1219:19:1219:24 | &... | &T | file://:0:0:0:0 | & |
-| main.rs:1219:19:1219:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool |
-| main.rs:1219:19:1219:24 | &... | &T.&T | file://:0:0:0:0 | & |
-| main.rs:1219:20:1219:24 | &true |  | file://:0:0:0:0 | & |
-| main.rs:1219:20:1219:24 | &true | &T | {EXTERNAL LOCATION} | bool |
-| main.rs:1219:20:1219:24 | &true | &T | file://:0:0:0:0 | & |
-| main.rs:1219:21:1219:24 | true |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1219:21:1219:24 | true |  | file://:0:0:0:0 | & |
-| main.rs:1223:13:1223:20 | mut flag |  | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1223:24:1223:41 | ...::default(...) |  | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1224:22:1224:30 | &mut flag |  | file://:0:0:0:0 | & |
-| main.rs:1224:22:1224:30 | &mut flag | &T | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1224:27:1224:30 | flag |  | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1225:18:1225:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1225:26:1225:29 | flag |  | main.rs:1182:5:1185:5 | MyFlag |
-| main.rs:1239:43:1242:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1239:43:1242:5 | { ... } | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1239:43:1242:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1240:13:1240:13 | x |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1240:17:1240:30 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1240:17:1240:30 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1240:17:1240:31 | TryExpr |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1240:28:1240:29 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1241:9:1241:22 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1241:9:1241:22 | ...::Ok(...) | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1241:9:1241:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1241:20:1241:21 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1245:46:1249:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1245:46:1249:5 | { ... } | E | main.rs:1235:5:1236:14 | S2 |
-| main.rs:1245:46:1249:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1246:13:1246:13 | x |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1246:13:1246:13 | x | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1246:17:1246:30 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1246:17:1246:30 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1246:28:1246:29 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1247:13:1247:13 | y |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1247:17:1247:17 | x |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1247:17:1247:17 | x | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1247:17:1247:18 | TryExpr |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1248:9:1248:22 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1248:9:1248:22 | ...::Ok(...) | E | main.rs:1235:5:1236:14 | S2 |
-| main.rs:1248:9:1248:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1248:20:1248:21 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1252:40:1257:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1252:40:1257:5 | { ... } | E | main.rs:1235:5:1236:14 | S2 |
-| main.rs:1252:40:1257:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1253:13:1253:13 | x |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1253:13:1253:13 | x | T | {EXTERNAL LOCATION} | Result |
-| main.rs:1253:13:1253:13 | x | T.T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1253:17:1253:42 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1253:17:1253:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result |
-| main.rs:1253:17:1253:42 | ...::Ok(...) | T.T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1253:28:1253:41 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1253:28:1253:41 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1253:39:1253:40 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1255:17:1255:17 | x |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1255:17:1255:17 | x | T | {EXTERNAL LOCATION} | Result |
-| main.rs:1255:17:1255:17 | x | T.T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1255:17:1255:18 | TryExpr |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1255:17:1255:18 | TryExpr | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1255:17:1255:29 | ... .map(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1256:9:1256:22 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1256:9:1256:22 | ...::Ok(...) | E | main.rs:1235:5:1236:14 | S2 |
-| main.rs:1256:9:1256:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1256:20:1256:21 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1260:30:1260:34 | input |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1260:30:1260:34 | input | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1260:30:1260:34 | input | T | main.rs:1260:20:1260:27 | T |
-| main.rs:1260:69:1267:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1260:69:1267:5 | { ... } | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1260:69:1267:5 | { ... } | T | main.rs:1260:20:1260:27 | T |
-| main.rs:1261:13:1261:17 | value |  | main.rs:1260:20:1260:27 | T |
-| main.rs:1261:21:1261:25 | input |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1261:21:1261:25 | input | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1261:21:1261:25 | input | T | main.rs:1260:20:1260:27 | T |
-| main.rs:1261:21:1261:26 | TryExpr |  | main.rs:1260:20:1260:27 | T |
-| main.rs:1262:22:1262:38 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1262:22:1262:38 | ...::Ok(...) | T | main.rs:1260:20:1260:27 | T |
-| main.rs:1262:22:1265:10 | ... .and_then(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1262:33:1262:37 | value |  | main.rs:1260:20:1260:27 | T |
-| main.rs:1262:53:1265:9 | { ... } |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1262:53:1265:9 | { ... } | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1263:22:1263:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1264:13:1264:34 | ...::Ok::<...>(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1264:13:1264:34 | ...::Ok::<...>(...) | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1266:9:1266:23 | ...::Err(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1266:9:1266:23 | ...::Err(...) | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1266:9:1266:23 | ...::Err(...) | T | main.rs:1260:20:1260:27 | T |
-| main.rs:1266:21:1266:22 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1270:37:1270:52 | try_same_error(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1270:37:1270:52 | try_same_error(...) | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1270:37:1270:52 | try_same_error(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1271:22:1271:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1274:37:1274:55 | try_convert_error(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1274:37:1274:55 | try_convert_error(...) | E | main.rs:1235:5:1236:14 | S2 |
-| main.rs:1274:37:1274:55 | try_convert_error(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1275:22:1275:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1278:37:1278:49 | try_chained(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1278:37:1278:49 | try_chained(...) | E | main.rs:1235:5:1236:14 | S2 |
-| main.rs:1278:37:1278:49 | try_chained(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1279:22:1279:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1282:37:1282:63 | try_complex(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1282:37:1282:63 | try_complex(...) | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1282:37:1282:63 | try_complex(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1282:49:1282:62 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
-| main.rs:1282:49:1282:62 | ...::Ok(...) | E | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1282:49:1282:62 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1282:60:1282:61 | S1 |  | main.rs:1232:5:1233:14 | S1 |
-| main.rs:1283:22:1283:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1290:13:1290:13 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1290:22:1290:22 | 1 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1291:13:1291:13 | y |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1291:17:1291:17 | 2 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1292:13:1292:13 | z |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1292:17:1292:17 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1292:17:1292:21 | ... + ... |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1292:21:1292:21 | y |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1293:13:1293:13 | z |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1293:17:1293:17 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1293:17:1293:23 | x.abs() |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1294:13:1294:13 | c |  | {EXTERNAL LOCATION} | char |
-| main.rs:1294:17:1294:19 | 'c' |  | {EXTERNAL LOCATION} | char |
-| main.rs:1295:13:1295:17 | hello |  | {EXTERNAL LOCATION} | str |
-| main.rs:1295:21:1295:27 | "Hello" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1296:13:1296:13 | f |  | {EXTERNAL LOCATION} | f64 |
-| main.rs:1296:17:1296:24 | 123.0f64 |  | {EXTERNAL LOCATION} | f64 |
-| main.rs:1297:13:1297:13 | t |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1297:17:1297:20 | true |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1298:13:1298:13 | f |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1298:17:1298:21 | false |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1305:13:1305:13 | x |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1305:17:1305:20 | true |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1305:17:1305:29 | ... && ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1305:25:1305:29 | false |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1306:13:1306:13 | y |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1306:17:1306:20 | true |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1306:17:1306:29 | ... \|\| ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1306:25:1306:29 | false |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1308:13:1308:17 | mut a |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1309:13:1309:16 | cond |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1309:20:1309:21 | 34 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1309:20:1309:27 | ... == ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1309:26:1309:27 | 33 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1310:12:1310:15 | cond |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1311:17:1311:17 | z |  | file://:0:0:0:0 | () |
-| main.rs:1311:21:1311:27 | (...) |  | file://:0:0:0:0 | () |
-| main.rs:1311:22:1311:22 | a |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1311:22:1311:26 | ... = ... |  | file://:0:0:0:0 | () |
-| main.rs:1311:26:1311:26 | 1 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1313:13:1313:13 | a |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1313:13:1313:17 | ... = ... |  | file://:0:0:0:0 | () |
-| main.rs:1313:17:1313:17 | 2 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1315:9:1315:9 | a |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1329:30:1331:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1330:13:1330:31 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1330:23:1330:23 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1330:23:1330:23 | 0 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1330:29:1330:29 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1330:29:1330:29 | 0 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1337:16:1337:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1337:22:1337:24 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1337:41:1342:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1338:13:1341:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1339:20:1339:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1339:20:1339:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1339:20:1339:33 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1339:29:1339:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1339:29:1339:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1340:20:1340:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1340:20:1340:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1340:20:1340:33 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1340:29:1340:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1340:29:1340:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1347:23:1347:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1347:23:1347:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1347:34:1347:36 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1348:13:1348:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1348:13:1348:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1348:13:1348:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1348:13:1348:27 | ... += ... |  | file://:0:0:0:0 | () |
-| main.rs:1348:23:1348:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1348:23:1348:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1349:13:1349:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1349:13:1349:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1349:13:1349:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1349:13:1349:27 | ... += ... |  | file://:0:0:0:0 | () |
-| main.rs:1349:23:1349:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1349:23:1349:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1355:16:1355:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1355:22:1355:24 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1355:41:1360:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1356:13:1359:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1357:20:1357:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1357:20:1357:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1357:20:1357:33 | ... - ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1357:29:1357:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1357:29:1357:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1358:20:1358:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1358:20:1358:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1358:20:1358:33 | ... - ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1358:29:1358:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1358:29:1358:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1365:23:1365:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1365:23:1365:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1365:34:1365:36 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1366:13:1366:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1366:13:1366:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1366:13:1366:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1366:13:1366:27 | ... -= ... |  | file://:0:0:0:0 | () |
-| main.rs:1366:23:1366:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1366:23:1366:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1367:13:1367:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1367:13:1367:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1367:13:1367:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1367:13:1367:27 | ... -= ... |  | file://:0:0:0:0 | () |
-| main.rs:1367:23:1367:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1367:23:1367:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1373:16:1373:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1373:22:1373:24 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1373:41:1378:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1374:13:1377:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1375:20:1375:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1375:20:1375:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1375:20:1375:33 | ... * ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1375:29:1375:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1375:29:1375:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1376:20:1376:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1376:20:1376:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1376:20:1376:33 | ... * ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1376:29:1376:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1376:29:1376:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1382:23:1382:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1382:23:1382:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1382:34:1382:36 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1088:15:1088:18 | SelfParam |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1088:15:1088:18 | SelfParam | T | main.rs:1087:10:1087:10 | T |
+| main.rs:1088:26:1090:9 | { ... } |  | main.rs:1087:10:1087:10 | T |
+| main.rs:1089:13:1089:16 | self |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1089:13:1089:16 | self | T | main.rs:1087:10:1087:10 | T |
+| main.rs:1089:13:1089:18 | self.0 |  | main.rs:1087:10:1087:10 | T |
+| main.rs:1092:15:1092:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1092:15:1092:19 | SelfParam | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1092:15:1092:19 | SelfParam | &T.T | main.rs:1087:10:1087:10 | T |
+| main.rs:1092:28:1094:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1092:28:1094:9 | { ... } | &T | main.rs:1087:10:1087:10 | T |
+| main.rs:1093:13:1093:19 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1093:13:1093:19 | &... | &T | main.rs:1087:10:1087:10 | T |
+| main.rs:1093:14:1093:17 | self |  | file://:0:0:0:0 | & |
+| main.rs:1093:14:1093:17 | self | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1093:14:1093:17 | self | &T.T | main.rs:1087:10:1087:10 | T |
+| main.rs:1093:14:1093:19 | self.0 |  | main.rs:1087:10:1087:10 | T |
+| main.rs:1096:15:1096:25 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1096:15:1096:25 | SelfParam | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1096:15:1096:25 | SelfParam | &T.T | main.rs:1087:10:1087:10 | T |
+| main.rs:1096:34:1098:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1096:34:1098:9 | { ... } | &T | main.rs:1087:10:1087:10 | T |
+| main.rs:1097:13:1097:19 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1097:13:1097:19 | &... | &T | main.rs:1087:10:1087:10 | T |
+| main.rs:1097:14:1097:17 | self |  | file://:0:0:0:0 | & |
+| main.rs:1097:14:1097:17 | self | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1097:14:1097:17 | self | &T.T | main.rs:1087:10:1087:10 | T |
+| main.rs:1097:14:1097:19 | self.0 |  | main.rs:1087:10:1087:10 | T |
+| main.rs:1102:29:1102:33 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1102:29:1102:33 | SelfParam | &T | main.rs:1101:5:1104:5 | Self [trait ATrait] |
+| main.rs:1103:33:1103:36 | SelfParam |  | main.rs:1101:5:1104:5 | Self [trait ATrait] |
+| main.rs:1109:29:1109:33 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1109:29:1109:33 | SelfParam | &T | file://:0:0:0:0 | & |
+| main.rs:1109:29:1109:33 | SelfParam | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1109:29:1109:33 | SelfParam | &T.&T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1109:43:1111:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1110:13:1110:22 | (...) |  | file://:0:0:0:0 | & |
+| main.rs:1110:13:1110:22 | (...) |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:13:1110:22 | (...) | &T | file://:0:0:0:0 | & |
+| main.rs:1110:13:1110:22 | (...) | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:13:1110:22 | (...) | &T.&T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:13:1110:24 | ... .a |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1110:14:1110:21 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1110:14:1110:21 | * ... |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:14:1110:21 | * ... | &T | file://:0:0:0:0 | & |
+| main.rs:1110:14:1110:21 | * ... | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:14:1110:21 | * ... | &T.&T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:15:1110:21 | (...) |  | file://:0:0:0:0 | & |
+| main.rs:1110:15:1110:21 | (...) |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:15:1110:21 | (...) | &T | file://:0:0:0:0 | & |
+| main.rs:1110:15:1110:21 | (...) | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:15:1110:21 | (...) | &T.&T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:16:1110:20 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1110:16:1110:20 | * ... |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:16:1110:20 | * ... | &T | file://:0:0:0:0 | & |
+| main.rs:1110:16:1110:20 | * ... | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:16:1110:20 | * ... | &T.&T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:17:1110:20 | self |  | file://:0:0:0:0 | & |
+| main.rs:1110:17:1110:20 | self | &T | file://:0:0:0:0 | & |
+| main.rs:1110:17:1110:20 | self | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1110:17:1110:20 | self | &T.&T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1114:33:1114:36 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1114:33:1114:36 | SelfParam | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1114:46:1116:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1115:13:1115:19 | (...) |  | file://:0:0:0:0 | & |
+| main.rs:1115:13:1115:19 | (...) |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1115:13:1115:19 | (...) | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1115:13:1115:21 | ... .a |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1115:14:1115:18 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1115:14:1115:18 | * ... |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1115:14:1115:18 | * ... | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1115:15:1115:18 | self |  | file://:0:0:0:0 | & |
+| main.rs:1115:15:1115:18 | self | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1120:13:1120:14 | x1 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1120:13:1120:14 | x1 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1120:18:1120:22 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1120:18:1120:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1120:20:1120:21 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1121:18:1121:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1121:26:1121:27 | x1 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1121:26:1121:27 | x1 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1121:26:1121:32 | x1.m1() |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1123:13:1123:14 | x2 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1123:13:1123:14 | x2 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1123:18:1123:22 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1123:18:1123:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1123:20:1123:21 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1125:18:1125:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1125:26:1125:27 | x2 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1125:26:1125:27 | x2 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1125:26:1125:32 | x2.m2() |  | file://:0:0:0:0 | & |
+| main.rs:1125:26:1125:32 | x2.m2() | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1126:18:1126:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1126:26:1126:27 | x2 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1126:26:1126:27 | x2 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1126:26:1126:32 | x2.m3() |  | file://:0:0:0:0 | & |
+| main.rs:1126:26:1126:32 | x2.m3() | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1128:13:1128:14 | x3 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1128:13:1128:14 | x3 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1128:18:1128:22 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1128:18:1128:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1128:20:1128:21 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1130:18:1130:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1130:26:1130:41 | ...::m2(...) |  | file://:0:0:0:0 | & |
+| main.rs:1130:26:1130:41 | ...::m2(...) | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1130:38:1130:40 | &x3 |  | file://:0:0:0:0 | & |
+| main.rs:1130:38:1130:40 | &x3 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1130:38:1130:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1130:39:1130:40 | x3 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1130:39:1130:40 | x3 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1131:18:1131:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1131:26:1131:41 | ...::m3(...) |  | file://:0:0:0:0 | & |
+| main.rs:1131:26:1131:41 | ...::m3(...) | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1131:38:1131:40 | &x3 |  | file://:0:0:0:0 | & |
+| main.rs:1131:38:1131:40 | &x3 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1131:38:1131:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1131:39:1131:40 | x3 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1131:39:1131:40 | x3 | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1133:13:1133:14 | x4 |  | file://:0:0:0:0 | & |
+| main.rs:1133:13:1133:14 | x4 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1133:13:1133:14 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1133:18:1133:23 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1133:18:1133:23 | &... | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1133:18:1133:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1133:19:1133:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1133:19:1133:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1133:21:1133:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1135:18:1135:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1135:26:1135:27 | x4 |  | file://:0:0:0:0 | & |
+| main.rs:1135:26:1135:27 | x4 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1135:26:1135:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1135:26:1135:32 | x4.m2() |  | file://:0:0:0:0 | & |
+| main.rs:1135:26:1135:32 | x4.m2() | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1136:18:1136:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1136:26:1136:27 | x4 |  | file://:0:0:0:0 | & |
+| main.rs:1136:26:1136:27 | x4 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1136:26:1136:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1136:26:1136:32 | x4.m3() |  | file://:0:0:0:0 | & |
+| main.rs:1136:26:1136:32 | x4.m3() | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1138:13:1138:14 | x5 |  | file://:0:0:0:0 | & |
+| main.rs:1138:13:1138:14 | x5 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1138:13:1138:14 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1138:18:1138:23 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1138:18:1138:23 | &... | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1138:18:1138:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1138:19:1138:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1138:19:1138:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1138:21:1138:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1140:18:1140:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1140:26:1140:27 | x5 |  | file://:0:0:0:0 | & |
+| main.rs:1140:26:1140:27 | x5 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1140:26:1140:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1140:26:1140:32 | x5.m1() |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1141:18:1141:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1141:26:1141:27 | x5 |  | file://:0:0:0:0 | & |
+| main.rs:1141:26:1141:27 | x5 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1141:26:1141:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1141:26:1141:29 | x5.0 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1143:13:1143:14 | x6 |  | file://:0:0:0:0 | & |
+| main.rs:1143:13:1143:14 | x6 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1143:13:1143:14 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1143:18:1143:23 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1143:18:1143:23 | &... | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1143:18:1143:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1143:19:1143:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1143:19:1143:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1143:21:1143:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1146:18:1146:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1146:26:1146:30 | (...) |  | file://:0:0:0:0 | & |
+| main.rs:1146:26:1146:30 | (...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1146:26:1146:30 | (...) | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1146:26:1146:30 | (...) | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1146:26:1146:30 | (...) | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1146:26:1146:35 | ... .m1() |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1146:27:1146:29 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1146:27:1146:29 | * ... |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1146:27:1146:29 | * ... | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1146:27:1146:29 | * ... | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1146:27:1146:29 | * ... | T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1146:28:1146:29 | x6 |  | file://:0:0:0:0 | & |
+| main.rs:1146:28:1146:29 | x6 | &T | main.rs:1076:5:1077:19 | S |
+| main.rs:1146:28:1146:29 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1148:13:1148:14 | x7 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1148:13:1148:14 | x7 | T | file://:0:0:0:0 | & |
+| main.rs:1148:13:1148:14 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1148:18:1148:23 | S(...) |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1148:18:1148:23 | S(...) | T | file://:0:0:0:0 | & |
+| main.rs:1148:18:1148:23 | S(...) | T.&T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1148:20:1148:22 | &S2 |  | file://:0:0:0:0 | & |
+| main.rs:1148:20:1148:22 | &S2 | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1148:21:1148:22 | S2 |  | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1151:13:1151:13 | t |  | file://:0:0:0:0 | & |
+| main.rs:1151:13:1151:13 | t | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1151:17:1151:18 | x7 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1151:17:1151:18 | x7 | T | file://:0:0:0:0 | & |
+| main.rs:1151:17:1151:18 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1151:17:1151:23 | x7.m1() |  | file://:0:0:0:0 | & |
+| main.rs:1151:17:1151:23 | x7.m1() | &T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1152:18:1152:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1152:26:1152:27 | x7 |  | main.rs:1076:5:1077:19 | S |
+| main.rs:1152:26:1152:27 | x7 | T | file://:0:0:0:0 | & |
+| main.rs:1152:26:1152:27 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 |
+| main.rs:1154:13:1154:14 | x9 |  | {EXTERNAL LOCATION} | String |
+| main.rs:1154:26:1154:32 | "Hello" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1154:26:1154:44 | "Hello".to_string() |  | {EXTERNAL LOCATION} | String |
+| main.rs:1158:13:1158:13 | u |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1158:13:1158:13 | u | T | {EXTERNAL LOCATION} | u32 |
+| main.rs:1158:17:1158:18 | x9 |  | {EXTERNAL LOCATION} | String |
+| main.rs:1158:17:1158:33 | x9.parse() |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1158:17:1158:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 |
+| main.rs:1160:13:1160:20 | my_thing |  | file://:0:0:0:0 | & |
+| main.rs:1160:13:1160:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1160:24:1160:39 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1160:24:1160:39 | &... | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1160:25:1160:39 | MyInt {...} |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1160:36:1160:37 | 37 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1160:36:1160:37 | 37 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1162:17:1162:24 | my_thing |  | file://:0:0:0:0 | & |
+| main.rs:1162:17:1162:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1163:18:1163:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1166:13:1166:20 | my_thing |  | file://:0:0:0:0 | & |
+| main.rs:1166:13:1166:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1166:24:1166:39 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1166:24:1166:39 | &... | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1166:25:1166:39 | MyInt {...} |  | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1166:36:1166:37 | 38 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1166:36:1166:37 | 38 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1167:17:1167:24 | my_thing |  | file://:0:0:0:0 | & |
+| main.rs:1167:17:1167:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt |
+| main.rs:1168:18:1168:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1175:16:1175:20 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1175:16:1175:20 | SelfParam | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] |
+| main.rs:1178:16:1178:20 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1178:16:1178:20 | SelfParam | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] |
+| main.rs:1178:32:1180:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1178:32:1180:9 | { ... } | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] |
+| main.rs:1179:13:1179:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1179:13:1179:16 | self | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] |
+| main.rs:1179:13:1179:22 | self.foo() |  | file://:0:0:0:0 | & |
+| main.rs:1179:13:1179:22 | self.foo() | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] |
+| main.rs:1187:16:1187:20 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1187:16:1187:20 | SelfParam | &T | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1187:36:1189:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1187:36:1189:9 | { ... } | &T | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1188:13:1188:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1188:13:1188:16 | self | &T | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1193:13:1193:13 | x |  | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1193:17:1193:24 | MyStruct |  | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1194:9:1194:9 | x |  | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1194:9:1194:15 | x.bar() |  | file://:0:0:0:0 | & |
+| main.rs:1194:9:1194:15 | x.bar() | &T | main.rs:1183:5:1183:20 | MyStruct |
+| main.rs:1204:16:1204:20 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1204:16:1204:20 | SelfParam | &T | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1204:16:1204:20 | SelfParam | &T.T | main.rs:1203:10:1203:10 | T |
+| main.rs:1204:32:1206:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1204:32:1206:9 | { ... } | &T | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1204:32:1206:9 | { ... } | &T.T | main.rs:1203:10:1203:10 | T |
+| main.rs:1205:13:1205:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1205:13:1205:16 | self | &T | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1205:13:1205:16 | self | &T.T | main.rs:1203:10:1203:10 | T |
+| main.rs:1210:13:1210:13 | x |  | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1210:13:1210:13 | x | T | main.rs:1199:5:1199:13 | S |
+| main.rs:1210:17:1210:27 | MyStruct(...) |  | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1210:17:1210:27 | MyStruct(...) | T | main.rs:1199:5:1199:13 | S |
+| main.rs:1210:26:1210:26 | S |  | main.rs:1199:5:1199:13 | S |
+| main.rs:1211:9:1211:9 | x |  | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1211:9:1211:9 | x | T | main.rs:1199:5:1199:13 | S |
+| main.rs:1211:9:1211:15 | x.foo() |  | file://:0:0:0:0 | & |
+| main.rs:1211:9:1211:15 | x.foo() | &T | main.rs:1201:5:1201:26 | MyStruct |
+| main.rs:1211:9:1211:15 | x.foo() | &T.T | main.rs:1199:5:1199:13 | S |
+| main.rs:1222:17:1222:25 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1222:17:1222:25 | SelfParam | &T | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1223:13:1223:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1223:13:1223:16 | self | &T | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1223:13:1223:21 | self.bool |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1223:13:1223:34 | ... = ... |  | file://:0:0:0:0 | () |
+| main.rs:1223:25:1223:34 | ! ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1223:26:1223:29 | self |  | file://:0:0:0:0 | & |
+| main.rs:1223:26:1223:29 | self | &T | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1223:26:1223:34 | self.bool |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1230:15:1230:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1230:15:1230:19 | SelfParam | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1230:31:1232:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1230:31:1232:9 | { ... } | &T | file://:0:0:0:0 | & |
+| main.rs:1230:31:1232:9 | { ... } | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1230:31:1232:9 | { ... } | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1230:31:1232:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & |
+| main.rs:1230:31:1232:9 | { ... } | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1231:13:1231:19 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1231:13:1231:19 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1231:13:1231:19 | &... | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1231:13:1231:19 | &... | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1231:13:1231:19 | &... | &T.&T.&T | file://:0:0:0:0 | & |
+| main.rs:1231:13:1231:19 | &... | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1231:14:1231:19 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1231:14:1231:19 | &... |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1231:14:1231:19 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1231:14:1231:19 | &... | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1231:14:1231:19 | &... | &T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1231:15:1231:19 | &self |  | file://:0:0:0:0 | & |
+| main.rs:1231:15:1231:19 | &self | &T | file://:0:0:0:0 | & |
+| main.rs:1231:15:1231:19 | &self | &T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1231:16:1231:19 | self |  | file://:0:0:0:0 | & |
+| main.rs:1231:16:1231:19 | self | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1234:15:1234:25 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1234:15:1234:25 | SelfParam | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1234:37:1236:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1234:37:1236:9 | { ... } | &T | file://:0:0:0:0 | & |
+| main.rs:1234:37:1236:9 | { ... } | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1234:37:1236:9 | { ... } | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1234:37:1236:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & |
+| main.rs:1234:37:1236:9 | { ... } | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1235:13:1235:19 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1235:13:1235:19 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1235:13:1235:19 | &... | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1235:13:1235:19 | &... | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1235:13:1235:19 | &... | &T.&T.&T | file://:0:0:0:0 | & |
+| main.rs:1235:13:1235:19 | &... | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1235:14:1235:19 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1235:14:1235:19 | &... |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1235:14:1235:19 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1235:14:1235:19 | &... | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1235:14:1235:19 | &... | &T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1235:15:1235:19 | &self |  | file://:0:0:0:0 | & |
+| main.rs:1235:15:1235:19 | &self | &T | file://:0:0:0:0 | & |
+| main.rs:1235:15:1235:19 | &self | &T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1235:16:1235:19 | self |  | file://:0:0:0:0 | & |
+| main.rs:1235:16:1235:19 | self | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1238:15:1238:15 | x |  | file://:0:0:0:0 | & |
+| main.rs:1238:15:1238:15 | x | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1238:34:1240:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1238:34:1240:9 | { ... } | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1239:13:1239:13 | x |  | file://:0:0:0:0 | & |
+| main.rs:1239:13:1239:13 | x | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1242:15:1242:15 | x |  | file://:0:0:0:0 | & |
+| main.rs:1242:15:1242:15 | x | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1242:34:1244:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1242:34:1244:9 | { ... } | &T | file://:0:0:0:0 | & |
+| main.rs:1242:34:1244:9 | { ... } | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1242:34:1244:9 | { ... } | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1242:34:1244:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & |
+| main.rs:1242:34:1244:9 | { ... } | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1243:13:1243:16 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1243:13:1243:16 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1243:13:1243:16 | &... | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1243:13:1243:16 | &... | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1243:13:1243:16 | &... | &T.&T.&T | file://:0:0:0:0 | & |
+| main.rs:1243:13:1243:16 | &... | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1243:14:1243:16 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1243:14:1243:16 | &... |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1243:14:1243:16 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1243:14:1243:16 | &... | &T.&T | file://:0:0:0:0 | & |
+| main.rs:1243:14:1243:16 | &... | &T.&T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1243:15:1243:16 | &x |  | file://:0:0:0:0 | & |
+| main.rs:1243:15:1243:16 | &x | &T | file://:0:0:0:0 | & |
+| main.rs:1243:15:1243:16 | &x | &T.&T | main.rs:1227:5:1227:13 | S |
+| main.rs:1243:16:1243:16 | x |  | file://:0:0:0:0 | & |
+| main.rs:1243:16:1243:16 | x | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1248:13:1248:13 | x |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1248:17:1248:20 | S {...} |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1249:9:1249:9 | x |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1249:9:1249:14 | x.f1() |  | file://:0:0:0:0 | & |
+| main.rs:1249:9:1249:14 | x.f1() | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1250:9:1250:9 | x |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1250:9:1250:14 | x.f2() |  | file://:0:0:0:0 | & |
+| main.rs:1250:9:1250:14 | x.f2() | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1251:9:1251:17 | ...::f3(...) |  | file://:0:0:0:0 | & |
+| main.rs:1251:9:1251:17 | ...::f3(...) | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1251:15:1251:16 | &x |  | file://:0:0:0:0 | & |
+| main.rs:1251:15:1251:16 | &x | &T | main.rs:1227:5:1227:13 | S |
+| main.rs:1251:16:1251:16 | x |  | main.rs:1227:5:1227:13 | S |
+| main.rs:1253:13:1253:13 | n |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:13:1253:13 | n |  | file://:0:0:0:0 | & |
+| main.rs:1253:13:1253:13 | n | &T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:13:1253:13 | n | &T | file://:0:0:0:0 | & |
+| main.rs:1253:13:1253:13 | n | &T.&T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:17:1253:24 | * ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:17:1253:24 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1253:17:1253:24 | * ... | &T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:17:1253:24 | * ... | &T | file://:0:0:0:0 | & |
+| main.rs:1253:17:1253:24 | * ... | &T.&T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:18:1253:24 | * ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:18:1253:24 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1253:18:1253:24 | * ... | &T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:18:1253:24 | * ... | &T | file://:0:0:0:0 | & |
+| main.rs:1253:18:1253:24 | * ... | &T.&T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:19:1253:24 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1253:19:1253:24 | &... | &T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:19:1253:24 | &... | &T | file://:0:0:0:0 | & |
+| main.rs:1253:19:1253:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:20:1253:24 | &true |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:20:1253:24 | &true |  | file://:0:0:0:0 | & |
+| main.rs:1253:20:1253:24 | &true | &T | {EXTERNAL LOCATION} | bool |
+| main.rs:1253:21:1253:24 | true |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1257:13:1257:20 | mut flag |  | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1257:24:1257:41 | ...::default(...) |  | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1258:22:1258:30 | &mut flag |  | file://:0:0:0:0 | & |
+| main.rs:1258:22:1258:30 | &mut flag | &T | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1258:27:1258:30 | flag |  | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1259:18:1259:23 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1259:26:1259:29 | flag |  | main.rs:1216:5:1219:5 | MyFlag |
+| main.rs:1273:43:1276:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1273:43:1276:5 | { ... } | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1273:43:1276:5 | { ... } | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1274:13:1274:13 | x |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1274:17:1274:30 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1274:17:1274:30 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1274:17:1274:31 | TryExpr |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1274:28:1274:29 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1275:9:1275:22 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1275:9:1275:22 | ...::Ok(...) | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1275:9:1275:22 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1275:20:1275:21 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1279:46:1283:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1279:46:1283:5 | { ... } | E | main.rs:1269:5:1270:14 | S2 |
+| main.rs:1279:46:1283:5 | { ... } | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1280:13:1280:13 | x |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1280:13:1280:13 | x | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1280:17:1280:30 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1280:17:1280:30 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1280:28:1280:29 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1281:13:1281:13 | y |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1281:17:1281:17 | x |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1281:17:1281:17 | x | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1281:17:1281:18 | TryExpr |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1282:9:1282:22 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1282:9:1282:22 | ...::Ok(...) | E | main.rs:1269:5:1270:14 | S2 |
+| main.rs:1282:9:1282:22 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1282:20:1282:21 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1286:40:1291:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1286:40:1291:5 | { ... } | E | main.rs:1269:5:1270:14 | S2 |
+| main.rs:1286:40:1291:5 | { ... } | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1287:13:1287:13 | x |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1287:13:1287:13 | x | T | {EXTERNAL LOCATION} | Result |
+| main.rs:1287:13:1287:13 | x | T.T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1287:17:1287:42 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1287:17:1287:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result |
+| main.rs:1287:17:1287:42 | ...::Ok(...) | T.T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1287:28:1287:41 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1287:28:1287:41 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1287:39:1287:40 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1289:17:1289:17 | x |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1289:17:1289:17 | x | T | {EXTERNAL LOCATION} | Result |
+| main.rs:1289:17:1289:17 | x | T.T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1289:17:1289:18 | TryExpr |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1289:17:1289:18 | TryExpr | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1289:17:1289:29 | ... .map(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1290:9:1290:22 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1290:9:1290:22 | ...::Ok(...) | E | main.rs:1269:5:1270:14 | S2 |
+| main.rs:1290:9:1290:22 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1290:20:1290:21 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1294:30:1294:34 | input |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1294:30:1294:34 | input | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1294:30:1294:34 | input | T | main.rs:1294:20:1294:27 | T |
+| main.rs:1294:69:1301:5 | { ... } |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1294:69:1301:5 | { ... } | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1294:69:1301:5 | { ... } | T | main.rs:1294:20:1294:27 | T |
+| main.rs:1295:13:1295:17 | value |  | main.rs:1294:20:1294:27 | T |
+| main.rs:1295:21:1295:25 | input |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1295:21:1295:25 | input | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1295:21:1295:25 | input | T | main.rs:1294:20:1294:27 | T |
+| main.rs:1295:21:1295:26 | TryExpr |  | main.rs:1294:20:1294:27 | T |
+| main.rs:1296:22:1296:38 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1296:22:1296:38 | ...::Ok(...) | T | main.rs:1294:20:1294:27 | T |
+| main.rs:1296:22:1299:10 | ... .and_then(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1296:33:1296:37 | value |  | main.rs:1294:20:1294:27 | T |
+| main.rs:1296:53:1299:9 | { ... } |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1296:53:1299:9 | { ... } | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1297:22:1297:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1298:13:1298:34 | ...::Ok::<...>(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1298:13:1298:34 | ...::Ok::<...>(...) | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1300:9:1300:23 | ...::Err(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1300:9:1300:23 | ...::Err(...) | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1300:9:1300:23 | ...::Err(...) | T | main.rs:1294:20:1294:27 | T |
+| main.rs:1300:21:1300:22 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1304:37:1304:52 | try_same_error(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1304:37:1304:52 | try_same_error(...) | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1304:37:1304:52 | try_same_error(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1305:22:1305:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1308:37:1308:55 | try_convert_error(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1308:37:1308:55 | try_convert_error(...) | E | main.rs:1269:5:1270:14 | S2 |
+| main.rs:1308:37:1308:55 | try_convert_error(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1309:22:1309:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1312:37:1312:49 | try_chained(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1312:37:1312:49 | try_chained(...) | E | main.rs:1269:5:1270:14 | S2 |
+| main.rs:1312:37:1312:49 | try_chained(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1313:22:1313:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1316:37:1316:63 | try_complex(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1316:37:1316:63 | try_complex(...) | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1316:37:1316:63 | try_complex(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1316:49:1316:62 | ...::Ok(...) |  | {EXTERNAL LOCATION} | Result |
+| main.rs:1316:49:1316:62 | ...::Ok(...) | E | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1316:49:1316:62 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1316:60:1316:61 | S1 |  | main.rs:1266:5:1267:14 | S1 |
+| main.rs:1317:22:1317:27 | "{:?}\\n" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1324:13:1324:13 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1324:22:1324:22 | 1 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1325:13:1325:13 | y |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1325:17:1325:17 | 2 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1326:13:1326:13 | z |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1326:17:1326:17 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1326:17:1326:21 | ... + ... |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1326:21:1326:21 | y |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1327:13:1327:13 | z |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1327:17:1327:17 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1327:17:1327:23 | x.abs() |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1328:13:1328:13 | c |  | {EXTERNAL LOCATION} | char |
+| main.rs:1328:17:1328:19 | 'c' |  | {EXTERNAL LOCATION} | char |
+| main.rs:1329:13:1329:17 | hello |  | {EXTERNAL LOCATION} | str |
+| main.rs:1329:21:1329:27 | "Hello" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1330:13:1330:13 | f |  | {EXTERNAL LOCATION} | f64 |
+| main.rs:1330:17:1330:24 | 123.0f64 |  | {EXTERNAL LOCATION} | f64 |
+| main.rs:1331:13:1331:13 | t |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1331:17:1331:20 | true |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1332:13:1332:13 | f |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1332:17:1332:21 | false |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1339:13:1339:13 | x |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1339:17:1339:20 | true |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1339:17:1339:29 | ... && ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1339:25:1339:29 | false |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1340:13:1340:13 | y |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1340:17:1340:20 | true |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1340:17:1340:29 | ... \|\| ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1340:25:1340:29 | false |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1342:13:1342:17 | mut a |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1343:13:1343:16 | cond |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1343:20:1343:21 | 34 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1343:20:1343:27 | ... == ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1343:26:1343:27 | 33 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1344:12:1344:15 | cond |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1345:17:1345:17 | z |  | file://:0:0:0:0 | () |
+| main.rs:1345:21:1345:27 | (...) |  | file://:0:0:0:0 | () |
+| main.rs:1345:22:1345:22 | a |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1345:22:1345:26 | ... = ... |  | file://:0:0:0:0 | () |
+| main.rs:1345:26:1345:26 | 1 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1347:13:1347:13 | a |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1347:13:1347:17 | ... = ... |  | file://:0:0:0:0 | () |
+| main.rs:1347:17:1347:17 | 2 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1349:9:1349:9 | a |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1363:30:1365:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1364:13:1364:31 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1364:23:1364:23 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1364:23:1364:23 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1364:29:1364:29 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1364:29:1364:29 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1371:16:1371:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1371:22:1371:24 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1371:41:1376:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1372:13:1375:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1373:20:1373:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1373:20:1373:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1373:20:1373:33 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1373:29:1373:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1373:29:1373:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1374:20:1374:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1374:20:1374:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1374:20:1374:33 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1374:29:1374:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1374:29:1374:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1381:23:1381:31 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1381:23:1381:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1381:34:1381:36 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1382:13:1382:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1382:13:1382:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1382:13:1382:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1382:13:1382:27 | ... += ... |  | file://:0:0:0:0 | () |
+| main.rs:1382:23:1382:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1382:23:1382:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1383:13:1383:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1383:13:1383:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1383:13:1383:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1383:13:1383:27 | ... *= ... |  | file://:0:0:0:0 | () |
-| main.rs:1383:23:1383:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1383:23:1383:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1384:13:1384:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1384:13:1384:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1384:13:1384:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1384:13:1384:27 | ... *= ... |  | file://:0:0:0:0 | () |
-| main.rs:1384:23:1384:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1384:23:1384:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1390:16:1390:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1390:22:1390:24 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1390:41:1395:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1391:13:1394:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1392:20:1392:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1392:20:1392:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1392:20:1392:33 | ... / ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1392:29:1392:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1392:29:1392:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1393:20:1393:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1393:20:1393:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1393:20:1393:33 | ... / ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1393:29:1393:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1393:29:1393:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1383:13:1383:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1383:13:1383:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1383:13:1383:27 | ... += ... |  | file://:0:0:0:0 | () |
+| main.rs:1383:23:1383:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1383:23:1383:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1389:16:1389:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1389:22:1389:24 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1389:41:1394:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1390:13:1393:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1391:20:1391:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1391:20:1391:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1391:20:1391:33 | ... - ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1391:29:1391:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1391:29:1391:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1392:20:1392:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1392:20:1392:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1392:20:1392:33 | ... - ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1392:29:1392:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1392:29:1392:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1399:23:1399:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1399:23:1399:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1399:34:1399:36 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1399:23:1399:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1399:34:1399:36 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1400:13:1400:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1400:13:1400:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1400:13:1400:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1400:13:1400:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1400:13:1400:27 | ... /= ... |  | file://:0:0:0:0 | () |
-| main.rs:1400:23:1400:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1400:13:1400:27 | ... -= ... |  | file://:0:0:0:0 | () |
+| main.rs:1400:23:1400:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1400:23:1400:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1401:13:1401:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1401:13:1401:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1401:13:1401:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1401:13:1401:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1401:13:1401:27 | ... /= ... |  | file://:0:0:0:0 | () |
-| main.rs:1401:23:1401:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1401:13:1401:27 | ... -= ... |  | file://:0:0:0:0 | () |
+| main.rs:1401:23:1401:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1401:23:1401:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1407:16:1407:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1407:22:1407:24 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1407:41:1412:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1408:13:1411:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1409:20:1409:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1407:16:1407:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1407:22:1407:24 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1407:41:1412:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1408:13:1411:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1409:20:1409:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1409:20:1409:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1409:20:1409:33 | ... % ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1409:29:1409:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1409:20:1409:33 | ... * ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1409:29:1409:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1409:29:1409:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1410:20:1410:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1410:20:1410:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1410:20:1410:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1410:20:1410:33 | ... % ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1410:29:1410:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1410:20:1410:33 | ... * ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1410:29:1410:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1410:29:1410:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1416:23:1416:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1416:23:1416:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1416:34:1416:36 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1416:23:1416:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1416:34:1416:36 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1417:13:1417:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1417:13:1417:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1417:13:1417:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1417:13:1417:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1417:13:1417:27 | ... %= ... |  | file://:0:0:0:0 | () |
-| main.rs:1417:23:1417:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1417:13:1417:27 | ... *= ... |  | file://:0:0:0:0 | () |
+| main.rs:1417:23:1417:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1417:23:1417:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1418:13:1418:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1418:13:1418:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1418:13:1418:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1418:13:1418:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1418:13:1418:27 | ... %= ... |  | file://:0:0:0:0 | () |
-| main.rs:1418:23:1418:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1418:13:1418:27 | ... *= ... |  | file://:0:0:0:0 | () |
+| main.rs:1418:23:1418:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1418:23:1418:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1424:19:1424:22 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1424:25:1424:27 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1424:44:1429:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1425:13:1428:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1426:20:1426:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1424:16:1424:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1424:22:1424:24 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1424:41:1429:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1425:13:1428:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1426:20:1426:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1426:20:1426:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1426:20:1426:33 | ... & ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1426:29:1426:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1426:20:1426:33 | ... / ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1426:29:1426:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1426:29:1426:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1427:20:1427:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1427:20:1427:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1427:20:1427:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1427:20:1427:33 | ... & ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1427:29:1427:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1427:20:1427:33 | ... / ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1427:29:1427:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1427:29:1427:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1433:26:1433:34 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1433:26:1433:34 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1433:37:1433:39 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1433:23:1433:31 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1433:23:1433:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1433:34:1433:36 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1434:13:1434:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1434:13:1434:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1434:13:1434:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1434:13:1434:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1434:13:1434:27 | ... &= ... |  | file://:0:0:0:0 | () |
-| main.rs:1434:23:1434:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1434:13:1434:27 | ... /= ... |  | file://:0:0:0:0 | () |
+| main.rs:1434:23:1434:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1434:23:1434:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1435:13:1435:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1435:13:1435:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1435:13:1435:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1435:13:1435:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1435:13:1435:27 | ... &= ... |  | file://:0:0:0:0 | () |
-| main.rs:1435:23:1435:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1435:13:1435:27 | ... /= ... |  | file://:0:0:0:0 | () |
+| main.rs:1435:23:1435:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1435:23:1435:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1441:18:1441:21 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1441:24:1441:26 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1441:43:1446:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1442:13:1445:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1443:20:1443:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1441:16:1441:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1441:22:1441:24 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1441:41:1446:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1442:13:1445:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1443:20:1443:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1443:20:1443:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1443:20:1443:33 | ... \| ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1443:29:1443:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1443:20:1443:33 | ... % ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1443:29:1443:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1443:29:1443:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1444:20:1444:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1444:20:1444:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1444:20:1444:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1444:20:1444:33 | ... \| ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1444:29:1444:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1444:20:1444:33 | ... % ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1444:29:1444:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1444:29:1444:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1450:25:1450:33 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1450:25:1450:33 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1450:36:1450:38 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1450:23:1450:31 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1450:23:1450:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1450:34:1450:36 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1451:13:1451:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1451:13:1451:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1451:13:1451:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1451:13:1451:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1451:13:1451:27 | ... \|= ... |  | file://:0:0:0:0 | () |
-| main.rs:1451:23:1451:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1451:13:1451:27 | ... %= ... |  | file://:0:0:0:0 | () |
+| main.rs:1451:23:1451:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1451:23:1451:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1452:13:1452:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1452:13:1452:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1452:13:1452:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1452:13:1452:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1452:13:1452:27 | ... \|= ... |  | file://:0:0:0:0 | () |
-| main.rs:1452:23:1452:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1452:13:1452:27 | ... %= ... |  | file://:0:0:0:0 | () |
+| main.rs:1452:23:1452:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1452:23:1452:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1458:19:1458:22 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1458:25:1458:27 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1458:44:1463:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1459:13:1462:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1460:20:1460:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1458:19:1458:22 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1458:25:1458:27 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1458:44:1463:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1459:13:1462:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1460:20:1460:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1460:20:1460:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1460:20:1460:33 | ... ^ ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1460:29:1460:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1460:20:1460:33 | ... & ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1460:29:1460:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1460:29:1460:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1461:20:1461:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1461:20:1461:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1461:20:1461:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1461:20:1461:33 | ... ^ ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1461:29:1461:31 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1461:20:1461:33 | ... & ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1461:29:1461:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1461:29:1461:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1467:26:1467:34 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1467:26:1467:34 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1467:37:1467:39 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1467:26:1467:34 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1467:37:1467:39 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1468:13:1468:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1468:13:1468:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1468:13:1468:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1468:13:1468:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1468:13:1468:27 | ... ^= ... |  | file://:0:0:0:0 | () |
-| main.rs:1468:23:1468:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1468:13:1468:27 | ... &= ... |  | file://:0:0:0:0 | () |
+| main.rs:1468:23:1468:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1468:23:1468:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1469:13:1469:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1469:13:1469:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1469:13:1469:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1469:13:1469:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1469:13:1469:27 | ... ^= ... |  | file://:0:0:0:0 | () |
-| main.rs:1469:23:1469:25 | rhs |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1469:13:1469:27 | ... &= ... |  | file://:0:0:0:0 | () |
+| main.rs:1469:23:1469:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1469:23:1469:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1475:16:1475:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1475:22:1475:24 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1475:40:1480:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1476:13:1479:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1477:20:1477:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1475:18:1475:21 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1475:24:1475:26 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1475:43:1480:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1476:13:1479:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1477:20:1477:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1477:20:1477:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1477:20:1477:32 | ... << ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1477:30:1477:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1478:20:1478:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1477:20:1477:33 | ... \| ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1477:29:1477:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1477:29:1477:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1478:20:1478:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1478:20:1478:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1478:20:1478:32 | ... << ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1478:30:1478:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1484:23:1484:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1484:23:1484:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1484:34:1484:36 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1478:20:1478:33 | ... \| ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1478:29:1478:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1478:29:1478:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1484:25:1484:33 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1484:25:1484:33 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1484:36:1484:38 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1485:13:1485:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1485:13:1485:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1485:13:1485:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1485:13:1485:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1485:13:1485:26 | ... <<= ... |  | file://:0:0:0:0 | () |
-| main.rs:1485:24:1485:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1485:13:1485:27 | ... \|= ... |  | file://:0:0:0:0 | () |
+| main.rs:1485:23:1485:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1485:23:1485:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1486:13:1486:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1486:13:1486:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1486:13:1486:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1486:13:1486:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1486:13:1486:26 | ... <<= ... |  | file://:0:0:0:0 | () |
-| main.rs:1486:24:1486:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1492:16:1492:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1492:22:1492:24 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1492:40:1497:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1493:13:1496:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1494:20:1494:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1486:13:1486:27 | ... \|= ... |  | file://:0:0:0:0 | () |
+| main.rs:1486:23:1486:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1486:23:1486:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1492:19:1492:22 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1492:25:1492:27 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1492:44:1497:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1493:13:1496:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1494:20:1494:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1494:20:1494:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1494:20:1494:32 | ... >> ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1494:30:1494:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1495:20:1495:23 | self |  | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1494:20:1494:33 | ... ^ ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1494:29:1494:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1494:29:1494:33 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1495:20:1495:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1495:20:1495:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1495:20:1495:32 | ... >> ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1495:30:1495:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1501:23:1501:31 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1501:23:1501:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1501:34:1501:36 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1495:20:1495:33 | ... ^ ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1495:29:1495:31 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1495:29:1495:33 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1501:26:1501:34 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1501:26:1501:34 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1501:37:1501:39 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1502:13:1502:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1502:13:1502:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1502:13:1502:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1502:13:1502:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1502:13:1502:26 | ... >>= ... |  | file://:0:0:0:0 | () |
-| main.rs:1502:24:1502:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1502:13:1502:27 | ... ^= ... |  | file://:0:0:0:0 | () |
+| main.rs:1502:23:1502:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1502:23:1502:27 | rhs.x |  | {EXTERNAL LOCATION} | i64 |
 | main.rs:1503:13:1503:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1503:13:1503:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
+| main.rs:1503:13:1503:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
 | main.rs:1503:13:1503:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1503:13:1503:26 | ... >>= ... |  | file://:0:0:0:0 | () |
-| main.rs:1503:24:1503:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1509:16:1509:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1509:30:1514:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1510:13:1513:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1511:20:1511:26 | - ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1511:21:1511:24 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1511:21:1511:26 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1512:20:1512:26 | - ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1512:21:1512:24 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1512:21:1512:26 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1519:16:1519:19 | SelfParam |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1519:30:1524:9 | { ... } |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1520:13:1523:13 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1521:20:1521:26 | ! ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1521:21:1521:24 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1521:21:1521:26 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1522:20:1522:26 | ! ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1522:21:1522:24 | self |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1522:21:1522:26 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1528:15:1528:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1528:15:1528:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1528:22:1528:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1528:22:1528:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1528:44:1530:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1529:13:1529:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1529:13:1529:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1529:13:1529:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1529:13:1529:29 | ... == ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1529:13:1529:50 | ... && ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1529:23:1529:27 | other |  | file://:0:0:0:0 | & |
-| main.rs:1529:23:1529:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1529:23:1529:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1529:34:1529:37 | self |  | file://:0:0:0:0 | & |
-| main.rs:1529:34:1529:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1529:34:1529:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1529:34:1529:50 | ... == ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1529:44:1529:48 | other |  | file://:0:0:0:0 | & |
-| main.rs:1529:44:1529:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1529:44:1529:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1532:15:1532:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1532:15:1532:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1532:22:1532:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1532:22:1532:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1532:44:1534:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1533:13:1533:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1533:13:1533:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1533:13:1533:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1533:13:1533:29 | ... != ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1533:13:1533:50 | ... \|\| ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1533:23:1533:27 | other |  | file://:0:0:0:0 | & |
-| main.rs:1533:23:1533:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1533:23:1533:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1533:34:1533:37 | self |  | file://:0:0:0:0 | & |
-| main.rs:1533:34:1533:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1533:34:1533:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1533:34:1533:50 | ... != ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1533:44:1533:48 | other |  | file://:0:0:0:0 | & |
-| main.rs:1533:44:1533:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1533:44:1533:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1538:24:1538:28 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1538:24:1538:28 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1538:31:1538:35 | other |  | file://:0:0:0:0 | & |
-| main.rs:1538:31:1538:35 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1538:75:1540:9 | { ... } |  | {EXTERNAL LOCATION} | Option |
-| main.rs:1538:75:1540:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering |
-| main.rs:1539:13:1539:29 | (...) |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:13:1539:63 | ... .partial_cmp(...) |  | {EXTERNAL LOCATION} | Option |
-| main.rs:1539:13:1539:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering |
-| main.rs:1539:14:1539:17 | self |  | file://:0:0:0:0 | & |
-| main.rs:1539:14:1539:17 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1539:14:1539:19 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:14:1539:28 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:23:1539:26 | self |  | file://:0:0:0:0 | & |
-| main.rs:1539:23:1539:26 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1539:23:1539:28 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:43:1539:62 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1539:43:1539:62 | &... | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:44:1539:62 | (...) |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:45:1539:49 | other |  | file://:0:0:0:0 | & |
-| main.rs:1539:45:1539:49 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1539:45:1539:51 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:45:1539:61 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1539:55:1539:59 | other |  | file://:0:0:0:0 | & |
-| main.rs:1539:55:1539:59 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1539:55:1539:61 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1542:15:1542:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1542:15:1542:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1542:22:1542:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1542:22:1542:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1542:44:1544:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1543:13:1543:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1543:13:1543:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1543:13:1543:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1543:13:1543:28 | ... < ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1543:13:1543:48 | ... && ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1543:22:1543:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1543:22:1543:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1543:22:1543:28 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1543:33:1543:36 | self |  | file://:0:0:0:0 | & |
-| main.rs:1543:33:1543:36 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1543:33:1543:38 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1543:33:1543:48 | ... < ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1543:42:1543:46 | other |  | file://:0:0:0:0 | & |
-| main.rs:1543:42:1543:46 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1543:42:1543:48 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1546:15:1546:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1546:15:1546:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1546:22:1546:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1546:22:1546:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1546:44:1548:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1547:13:1547:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1547:13:1547:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1547:13:1547:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1547:13:1547:29 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1547:13:1547:50 | ... && ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1547:23:1547:27 | other |  | file://:0:0:0:0 | & |
-| main.rs:1547:23:1547:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1547:23:1547:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1547:34:1547:37 | self |  | file://:0:0:0:0 | & |
-| main.rs:1547:34:1547:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1547:34:1547:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1547:34:1547:50 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1547:44:1547:48 | other |  | file://:0:0:0:0 | & |
-| main.rs:1547:44:1547:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1547:44:1547:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1550:15:1550:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1550:15:1550:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1550:22:1550:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1550:22:1550:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1550:44:1552:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1551:13:1551:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1551:13:1551:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1551:13:1551:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1551:13:1551:28 | ... > ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1551:13:1551:48 | ... && ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1551:22:1551:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1551:22:1551:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1551:22:1551:28 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1551:33:1551:36 | self |  | file://:0:0:0:0 | & |
-| main.rs:1551:33:1551:36 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1551:33:1551:38 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1551:33:1551:48 | ... > ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1551:42:1551:46 | other |  | file://:0:0:0:0 | & |
-| main.rs:1551:42:1551:46 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1551:42:1551:48 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1554:15:1554:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1554:15:1554:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1554:22:1554:26 | other |  | file://:0:0:0:0 | & |
-| main.rs:1554:22:1554:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1554:44:1556:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1555:13:1555:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1555:13:1555:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1555:13:1555:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1555:13:1555:29 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1555:13:1555:50 | ... && ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1555:23:1555:27 | other |  | file://:0:0:0:0 | & |
-| main.rs:1555:23:1555:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1555:23:1555:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1555:34:1555:37 | self |  | file://:0:0:0:0 | & |
-| main.rs:1555:34:1555:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1555:34:1555:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1555:34:1555:50 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1555:44:1555:48 | other |  | file://:0:0:0:0 | & |
-| main.rs:1555:44:1555:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1555:44:1555:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1562:13:1562:18 | i64_eq |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1562:22:1562:35 | (...) |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1562:23:1562:26 | 1i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1562:23:1562:34 | ... == ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1562:31:1562:34 | 2i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1563:13:1563:18 | i64_ne |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1563:22:1563:35 | (...) |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1563:23:1563:26 | 3i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1563:23:1563:34 | ... != ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1563:31:1563:34 | 4i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1564:13:1564:18 | i64_lt |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1564:22:1564:34 | (...) |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1564:23:1564:26 | 5i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1564:23:1564:33 | ... < ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1564:30:1564:33 | 6i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1565:13:1565:18 | i64_le |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1565:22:1565:35 | (...) |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1565:23:1565:26 | 7i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1565:23:1565:34 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1565:31:1565:34 | 8i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1566:13:1566:18 | i64_gt |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1566:22:1566:35 | (...) |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1566:23:1566:26 | 9i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1566:23:1566:34 | ... > ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1566:30:1566:34 | 10i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1567:13:1567:18 | i64_ge |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1567:22:1567:37 | (...) |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1567:23:1567:27 | 11i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1567:23:1567:36 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1567:32:1567:36 | 12i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1570:13:1570:19 | i64_add |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1570:23:1570:27 | 13i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1570:23:1570:35 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1570:31:1570:35 | 14i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1571:13:1571:19 | i64_sub |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1571:23:1571:27 | 15i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1571:23:1571:35 | ... - ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1571:31:1571:35 | 16i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1572:13:1572:19 | i64_mul |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1572:23:1572:27 | 17i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1572:23:1572:35 | ... * ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1572:31:1572:35 | 18i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1573:13:1573:19 | i64_div |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1573:23:1573:27 | 19i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1573:23:1573:35 | ... / ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1573:31:1573:35 | 20i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1574:13:1574:19 | i64_rem |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1574:23:1574:27 | 21i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1574:23:1574:35 | ... % ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1574:31:1574:35 | 22i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1577:13:1577:30 | mut i64_add_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1577:34:1577:38 | 23i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1578:9:1578:22 | i64_add_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1578:9:1578:31 | ... += ... |  | file://:0:0:0:0 | () |
-| main.rs:1578:27:1578:31 | 24i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1580:13:1580:30 | mut i64_sub_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1580:34:1580:38 | 25i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1581:9:1581:22 | i64_sub_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1581:9:1581:31 | ... -= ... |  | file://:0:0:0:0 | () |
-| main.rs:1581:27:1581:31 | 26i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1583:13:1583:30 | mut i64_mul_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1583:34:1583:38 | 27i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1584:9:1584:22 | i64_mul_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1584:9:1584:31 | ... *= ... |  | file://:0:0:0:0 | () |
-| main.rs:1584:27:1584:31 | 28i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1586:13:1586:30 | mut i64_div_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1586:34:1586:38 | 29i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1587:9:1587:22 | i64_div_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1587:9:1587:31 | ... /= ... |  | file://:0:0:0:0 | () |
-| main.rs:1587:27:1587:31 | 30i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1589:13:1589:30 | mut i64_rem_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1589:34:1589:38 | 31i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1590:9:1590:22 | i64_rem_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1590:9:1590:31 | ... %= ... |  | file://:0:0:0:0 | () |
-| main.rs:1590:27:1590:31 | 32i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1593:13:1593:22 | i64_bitand |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1593:26:1593:30 | 33i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1593:26:1593:38 | ... & ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1593:34:1593:38 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1594:13:1594:21 | i64_bitor |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1594:25:1594:29 | 35i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1594:25:1594:37 | ... \| ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1594:33:1594:37 | 36i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1595:13:1595:22 | i64_bitxor |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1595:26:1595:30 | 37i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1595:26:1595:38 | ... ^ ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1595:34:1595:38 | 38i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1596:13:1596:19 | i64_shl |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1596:23:1596:27 | 39i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1596:23:1596:36 | ... << ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1596:32:1596:36 | 40i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1597:13:1597:19 | i64_shr |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1597:23:1597:27 | 41i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1597:23:1597:36 | ... >> ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1597:32:1597:36 | 42i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1600:13:1600:33 | mut i64_bitand_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1600:37:1600:41 | 43i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1601:9:1601:25 | i64_bitand_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1601:9:1601:34 | ... &= ... |  | file://:0:0:0:0 | () |
-| main.rs:1601:30:1601:34 | 44i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1603:13:1603:32 | mut i64_bitor_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1603:36:1603:40 | 45i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1604:9:1604:24 | i64_bitor_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1604:9:1604:33 | ... \|= ... |  | file://:0:0:0:0 | () |
-| main.rs:1604:29:1604:33 | 46i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1606:13:1606:33 | mut i64_bitxor_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1606:37:1606:41 | 47i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1607:9:1607:25 | i64_bitxor_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1607:9:1607:34 | ... ^= ... |  | file://:0:0:0:0 | () |
-| main.rs:1607:30:1607:34 | 48i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1609:13:1609:30 | mut i64_shl_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1609:34:1609:38 | 49i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1610:9:1610:22 | i64_shl_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1610:9:1610:32 | ... <<= ... |  | file://:0:0:0:0 | () |
-| main.rs:1610:28:1610:32 | 50i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1612:13:1612:30 | mut i64_shr_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1612:34:1612:38 | 51i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1613:9:1613:22 | i64_shr_assign |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1613:9:1613:32 | ... >>= ... |  | file://:0:0:0:0 | () |
-| main.rs:1613:28:1613:32 | 52i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1615:13:1615:19 | i64_neg |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1615:23:1615:28 | - ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1615:24:1615:28 | 53i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1616:13:1616:19 | i64_not |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1616:23:1616:28 | ! ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1616:24:1616:28 | 54i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1619:13:1619:14 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1619:18:1619:36 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1619:28:1619:28 | 1 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1619:28:1619:28 | 1 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1619:34:1619:34 | 2 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1619:34:1619:34 | 2 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1620:13:1620:14 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1620:18:1620:36 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1620:28:1620:28 | 3 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1620:28:1620:28 | 3 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1620:34:1620:34 | 4 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1620:34:1620:34 | 4 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1623:13:1623:19 | vec2_eq |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1623:23:1623:24 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1623:23:1623:30 | ... == ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1623:29:1623:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1624:13:1624:19 | vec2_ne |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1624:23:1624:24 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1624:23:1624:30 | ... != ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1624:29:1624:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1625:13:1625:19 | vec2_lt |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1625:23:1625:24 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1625:23:1625:29 | ... < ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1625:28:1625:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1626:13:1626:19 | vec2_le |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1626:23:1626:24 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1626:23:1626:30 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1626:29:1626:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1627:13:1627:19 | vec2_gt |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1627:23:1627:24 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1627:23:1627:29 | ... > ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1627:28:1627:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1628:13:1628:19 | vec2_ge |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1628:23:1628:24 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1628:23:1628:30 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1628:29:1628:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1631:13:1631:20 | vec2_add |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1631:24:1631:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1631:24:1631:30 | ... + ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1631:29:1631:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1632:13:1632:20 | vec2_sub |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1632:24:1632:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1632:24:1632:30 | ... - ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1632:29:1632:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1633:13:1633:20 | vec2_mul |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1633:24:1633:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1633:24:1633:30 | ... * ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1633:29:1633:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1634:13:1634:20 | vec2_div |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1634:24:1634:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1634:24:1634:30 | ... / ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1634:29:1634:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1635:13:1635:20 | vec2_rem |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1635:24:1635:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1635:24:1635:30 | ... % ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1635:29:1635:30 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1638:13:1638:31 | mut vec2_add_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1638:35:1638:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1639:9:1639:23 | vec2_add_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1639:9:1639:29 | ... += ... |  | file://:0:0:0:0 | () |
-| main.rs:1639:28:1639:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1641:13:1641:31 | mut vec2_sub_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1641:35:1641:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1642:9:1642:23 | vec2_sub_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1642:9:1642:29 | ... -= ... |  | file://:0:0:0:0 | () |
-| main.rs:1642:28:1642:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1644:13:1644:31 | mut vec2_mul_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1644:35:1644:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1645:9:1645:23 | vec2_mul_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1645:9:1645:29 | ... *= ... |  | file://:0:0:0:0 | () |
-| main.rs:1645:28:1645:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1647:13:1647:31 | mut vec2_div_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1647:35:1647:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1648:9:1648:23 | vec2_div_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1648:9:1648:29 | ... /= ... |  | file://:0:0:0:0 | () |
-| main.rs:1648:28:1648:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1650:13:1650:31 | mut vec2_rem_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1650:35:1650:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1651:9:1651:23 | vec2_rem_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1651:9:1651:29 | ... %= ... |  | file://:0:0:0:0 | () |
-| main.rs:1651:28:1651:29 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1654:13:1654:23 | vec2_bitand |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1654:27:1654:28 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1654:27:1654:33 | ... & ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1654:32:1654:33 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1655:13:1655:22 | vec2_bitor |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1655:26:1655:27 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1655:26:1655:32 | ... \| ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1655:31:1655:32 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1656:13:1656:23 | vec2_bitxor |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1656:27:1656:28 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1656:27:1656:33 | ... ^ ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1656:32:1656:33 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1657:13:1657:20 | vec2_shl |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1657:24:1657:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1657:24:1657:33 | ... << ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1657:30:1657:33 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1658:13:1658:20 | vec2_shr |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1658:24:1658:25 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1658:24:1658:33 | ... >> ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1658:30:1658:33 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1661:13:1661:34 | mut vec2_bitand_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1661:38:1661:39 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1662:9:1662:26 | vec2_bitand_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1662:9:1662:32 | ... &= ... |  | file://:0:0:0:0 | () |
-| main.rs:1662:31:1662:32 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1664:13:1664:33 | mut vec2_bitor_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1664:37:1664:38 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1665:9:1665:25 | vec2_bitor_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1665:9:1665:31 | ... \|= ... |  | file://:0:0:0:0 | () |
-| main.rs:1665:30:1665:31 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1667:13:1667:34 | mut vec2_bitxor_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1667:38:1667:39 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1668:9:1668:26 | vec2_bitxor_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1668:9:1668:32 | ... ^= ... |  | file://:0:0:0:0 | () |
-| main.rs:1668:31:1668:32 | v2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1670:13:1670:31 | mut vec2_shl_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1670:35:1670:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1671:9:1671:23 | vec2_shl_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1671:9:1671:32 | ... <<= ... |  | file://:0:0:0:0 | () |
-| main.rs:1671:29:1671:32 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1673:13:1673:31 | mut vec2_shr_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1673:35:1673:36 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1674:9:1674:23 | vec2_shr_assign |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1674:9:1674:32 | ... >>= ... |  | file://:0:0:0:0 | () |
-| main.rs:1674:29:1674:32 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
-| main.rs:1677:13:1677:20 | vec2_neg |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1677:24:1677:26 | - ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1677:25:1677:26 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1678:13:1678:20 | vec2_not |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1678:24:1678:26 | ! ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1678:25:1678:26 | v1 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1681:13:1681:24 | default_vec2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1681:28:1681:45 | ...::default(...) |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1682:13:1682:26 | vec2_zero_plus |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1682:30:1682:48 | Vec2 {...} |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1682:30:1682:63 | ... + ... |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1682:40:1682:40 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1682:40:1682:40 | 0 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1682:46:1682:46 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1682:46:1682:46 | 0 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1682:52:1682:63 | default_vec2 |  | main.rs:1322:5:1327:5 | Vec2 |
-| main.rs:1692:18:1692:21 | SelfParam |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1695:25:1697:5 | { ... } |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1696:9:1696:10 | S1 |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1699:41:1701:5 | { ... } |  | {EXTERNAL LOCATION} | trait Future |
-| main.rs:1699:41:1701:5 | { ... } |  | main.rs:1699:16:1699:39 | ImplTraitTypeRepr |
-| main.rs:1699:41:1701:5 | { ... } | Output | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1700:9:1700:20 | { ... } |  | {EXTERNAL LOCATION} | trait Future |
-| main.rs:1700:9:1700:20 | { ... } |  | main.rs:1699:16:1699:39 | ImplTraitTypeRepr |
-| main.rs:1700:9:1700:20 | { ... } | Output | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1700:17:1700:18 | S1 |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1709:13:1709:42 | SelfParam |  | {EXTERNAL LOCATION} | Pin |
-| main.rs:1709:13:1709:42 | SelfParam | Ptr | file://:0:0:0:0 | & |
-| main.rs:1709:13:1709:42 | SelfParam | Ptr.&T | main.rs:1703:5:1703:14 | S2 |
-| main.rs:1710:13:1710:15 | _cx |  | file://:0:0:0:0 | & |
-| main.rs:1710:13:1710:15 | _cx | &T | {EXTERNAL LOCATION} | Context |
-| main.rs:1711:44:1713:9 | { ... } |  | {EXTERNAL LOCATION} | Poll |
-| main.rs:1711:44:1713:9 | { ... } | T | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1712:13:1712:38 | ...::Ready(...) |  | {EXTERNAL LOCATION} | Poll |
-| main.rs:1712:13:1712:38 | ...::Ready(...) | T | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1712:36:1712:37 | S1 |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1716:41:1718:5 | { ... } |  | main.rs:1703:5:1703:14 | S2 |
-| main.rs:1716:41:1718:5 | { ... } |  | main.rs:1716:16:1716:39 | ImplTraitTypeRepr |
-| main.rs:1717:9:1717:10 | S2 |  | main.rs:1703:5:1703:14 | S2 |
-| main.rs:1717:9:1717:10 | S2 |  | main.rs:1716:16:1716:39 | ImplTraitTypeRepr |
-| main.rs:1721:9:1721:12 | f1(...) |  | {EXTERNAL LOCATION} | trait Future |
-| main.rs:1721:9:1721:12 | f1(...) | Output | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1721:9:1721:18 | await ... |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1722:9:1722:12 | f2(...) |  | main.rs:1699:16:1699:39 | ImplTraitTypeRepr |
-| main.rs:1722:9:1722:18 | await ... |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1723:9:1723:12 | f3(...) |  | main.rs:1716:16:1716:39 | ImplTraitTypeRepr |
-| main.rs:1723:9:1723:18 | await ... |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1724:9:1724:10 | S2 |  | main.rs:1703:5:1703:14 | S2 |
-| main.rs:1724:9:1724:16 | await S2 |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1725:13:1725:13 | b |  | {EXTERNAL LOCATION} | trait Future |
-| main.rs:1725:13:1725:13 | b | Output | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1725:17:1725:28 | { ... } |  | {EXTERNAL LOCATION} | trait Future |
-| main.rs:1725:17:1725:28 | { ... } | Output | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1725:25:1725:26 | S1 |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1726:9:1726:9 | b |  | {EXTERNAL LOCATION} | trait Future |
-| main.rs:1726:9:1726:9 | b | Output | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1726:9:1726:15 | await b |  | main.rs:1689:5:1689:14 | S1 |
-| main.rs:1735:15:1735:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1735:15:1735:19 | SelfParam | &T | main.rs:1734:5:1736:5 | Self [trait Trait1] |
-| main.rs:1739:15:1739:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1739:15:1739:19 | SelfParam | &T | main.rs:1738:5:1740:5 | Self [trait Trait2] |
-| main.rs:1743:15:1743:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1743:15:1743:19 | SelfParam | &T | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1747:15:1747:19 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1747:15:1747:19 | SelfParam | &T | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1750:37:1752:5 | { ... } |  | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1750:37:1752:5 | { ... } |  | main.rs:1750:16:1750:35 | ImplTraitTypeRepr |
-| main.rs:1751:9:1751:10 | S1 |  | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1751:9:1751:10 | S1 |  | main.rs:1750:16:1750:35 | ImplTraitTypeRepr |
-| main.rs:1755:18:1755:22 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1755:18:1755:22 | SelfParam | &T | main.rs:1754:5:1756:5 | Self [trait MyTrait] |
-| main.rs:1759:18:1759:22 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1759:18:1759:22 | SelfParam | &T | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1759:31:1761:9 | { ... } |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1760:13:1760:14 | S2 |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1764:45:1766:5 | { ... } |  | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1764:45:1766:5 | { ... } |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1765:9:1765:10 | S1 |  | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1765:9:1765:10 | S1 |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1768:41:1768:41 | t |  | main.rs:1768:26:1768:38 | B |
-| main.rs:1768:52:1770:5 | { ... } |  | main.rs:1768:23:1768:23 | A |
-| main.rs:1769:9:1769:9 | t |  | main.rs:1768:26:1768:38 | B |
-| main.rs:1769:9:1769:17 | t.get_a() |  | main.rs:1768:23:1768:23 | A |
-| main.rs:1772:26:1772:26 | t |  | main.rs:1772:29:1772:43 | ImplTraitTypeRepr |
-| main.rs:1772:51:1774:5 | { ... } |  | main.rs:1772:23:1772:23 | A |
-| main.rs:1773:9:1773:9 | t |  | main.rs:1772:29:1772:43 | ImplTraitTypeRepr |
-| main.rs:1773:9:1773:17 | t.get_a() |  | main.rs:1772:23:1772:23 | A |
-| main.rs:1777:13:1777:13 | x |  | main.rs:1750:16:1750:35 | ImplTraitTypeRepr |
-| main.rs:1777:17:1777:20 | f1(...) |  | main.rs:1750:16:1750:35 | ImplTraitTypeRepr |
-| main.rs:1778:9:1778:9 | x |  | main.rs:1750:16:1750:35 | ImplTraitTypeRepr |
-| main.rs:1779:9:1779:9 | x |  | main.rs:1750:16:1750:35 | ImplTraitTypeRepr |
-| main.rs:1780:13:1780:13 | a |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1780:17:1780:32 | get_a_my_trait(...) |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1781:13:1781:13 | b |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1781:17:1781:33 | uses_my_trait1(...) |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1781:32:1781:32 | a |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1782:13:1782:13 | a |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1782:17:1782:32 | get_a_my_trait(...) |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1783:13:1783:13 | c |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1783:17:1783:33 | uses_my_trait2(...) |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1783:32:1783:32 | a |  | main.rs:1764:28:1764:43 | ImplTraitTypeRepr |
-| main.rs:1784:13:1784:13 | d |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1784:17:1784:34 | uses_my_trait2(...) |  | main.rs:1732:5:1732:14 | S2 |
-| main.rs:1784:32:1784:33 | S1 |  | main.rs:1731:5:1731:14 | S1 |
-| main.rs:1795:16:1795:20 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1795:16:1795:20 | SelfParam | &T | main.rs:1791:5:1792:13 | S |
-| main.rs:1795:31:1797:9 | { ... } |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1796:13:1796:13 | S |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1806:26:1808:9 | { ... } |  | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1806:26:1808:9 | { ... } | T | main.rs:1805:10:1805:10 | T |
-| main.rs:1807:13:1807:38 | MyVec {...} |  | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1807:13:1807:38 | MyVec {...} | T | main.rs:1805:10:1805:10 | T |
-| main.rs:1807:27:1807:36 | ...::new(...) |  | {EXTERNAL LOCATION} | Vec |
-| main.rs:1807:27:1807:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
-| main.rs:1807:27:1807:36 | ...::new(...) | T | main.rs:1805:10:1805:10 | T |
-| main.rs:1810:17:1810:25 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1810:17:1810:25 | SelfParam | &T | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1810:17:1810:25 | SelfParam | &T.T | main.rs:1805:10:1805:10 | T |
-| main.rs:1810:28:1810:32 | value |  | main.rs:1805:10:1805:10 | T |
-| main.rs:1811:13:1811:16 | self |  | file://:0:0:0:0 | & |
-| main.rs:1811:13:1811:16 | self | &T | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1811:13:1811:16 | self | &T.T | main.rs:1805:10:1805:10 | T |
-| main.rs:1811:13:1811:21 | self.data |  | {EXTERNAL LOCATION} | Vec |
-| main.rs:1811:13:1811:21 | self.data | A | {EXTERNAL LOCATION} | Global |
-| main.rs:1811:13:1811:21 | self.data | T | main.rs:1805:10:1805:10 | T |
-| main.rs:1811:28:1811:32 | value |  | main.rs:1805:10:1805:10 | T |
-| main.rs:1819:18:1819:22 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1819:18:1819:22 | SelfParam | &T | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1819:18:1819:22 | SelfParam | &T.T | main.rs:1815:10:1815:10 | T |
-| main.rs:1819:25:1819:29 | index |  | {EXTERNAL LOCATION} | usize |
-| main.rs:1819:56:1821:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1819:56:1821:9 | { ... } | &T | main.rs:1815:10:1815:10 | T |
-| main.rs:1820:13:1820:29 | &... |  | file://:0:0:0:0 | & |
-| main.rs:1820:13:1820:29 | &... | &T | main.rs:1815:10:1815:10 | T |
-| main.rs:1820:14:1820:17 | self |  | file://:0:0:0:0 | & |
-| main.rs:1820:14:1820:17 | self | &T | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1820:14:1820:17 | self | &T.T | main.rs:1815:10:1815:10 | T |
-| main.rs:1820:14:1820:22 | self.data |  | {EXTERNAL LOCATION} | Vec |
-| main.rs:1820:14:1820:22 | self.data | A | {EXTERNAL LOCATION} | Global |
-| main.rs:1820:14:1820:22 | self.data | T | main.rs:1815:10:1815:10 | T |
-| main.rs:1820:14:1820:29 | ...[index] |  | main.rs:1815:10:1815:10 | T |
-| main.rs:1820:24:1820:28 | index |  | {EXTERNAL LOCATION} | usize |
-| main.rs:1824:22:1824:26 | slice |  | file://:0:0:0:0 | & |
-| main.rs:1824:22:1824:26 | slice | &T | file://:0:0:0:0 | [] |
-| main.rs:1824:22:1824:26 | slice | &T.[T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1825:13:1825:13 | x |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1825:17:1825:21 | slice |  | file://:0:0:0:0 | & |
-| main.rs:1825:17:1825:21 | slice | &T | file://:0:0:0:0 | [] |
-| main.rs:1825:17:1825:21 | slice | &T.[T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1825:17:1825:24 | slice[0] |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1825:17:1825:30 | ... .foo() |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1825:23:1825:23 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1829:13:1829:19 | mut vec |  | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1829:13:1829:19 | mut vec | T | main.rs:1791:5:1792:13 | S |
-| main.rs:1829:23:1829:34 | ...::new(...) |  | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1829:23:1829:34 | ...::new(...) | T | main.rs:1791:5:1792:13 | S |
-| main.rs:1830:9:1830:11 | vec |  | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1830:9:1830:11 | vec | T | main.rs:1791:5:1792:13 | S |
-| main.rs:1830:18:1830:18 | S |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1831:9:1831:11 | vec |  | main.rs:1800:5:1803:5 | MyVec |
-| main.rs:1831:9:1831:11 | vec | T | main.rs:1791:5:1792:13 | S |
-| main.rs:1831:13:1831:13 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1833:13:1833:14 | xs |  | file://:0:0:0:0 | [] |
-| main.rs:1833:13:1833:14 | xs |  | file://:0:0:0:0 | [] |
-| main.rs:1833:13:1833:14 | xs | [T;...] | main.rs:1791:5:1792:13 | S |
-| main.rs:1833:13:1833:14 | xs | [T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1833:21:1833:21 | 1 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1833:26:1833:28 | [...] |  | file://:0:0:0:0 | [] |
-| main.rs:1833:26:1833:28 | [...] |  | file://:0:0:0:0 | [] |
-| main.rs:1833:26:1833:28 | [...] | [T;...] | main.rs:1791:5:1792:13 | S |
-| main.rs:1833:26:1833:28 | [...] | [T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1833:27:1833:27 | S |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1834:13:1834:13 | x |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1834:17:1834:18 | xs |  | file://:0:0:0:0 | [] |
-| main.rs:1834:17:1834:18 | xs |  | file://:0:0:0:0 | [] |
-| main.rs:1834:17:1834:18 | xs | [T;...] | main.rs:1791:5:1792:13 | S |
-| main.rs:1834:17:1834:18 | xs | [T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1834:17:1834:21 | xs[0] |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1834:17:1834:27 | ... .foo() |  | main.rs:1791:5:1792:13 | S |
-| main.rs:1834:20:1834:20 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1836:23:1836:25 | &xs |  | file://:0:0:0:0 | & |
-| main.rs:1836:23:1836:25 | &xs | &T | file://:0:0:0:0 | [] |
-| main.rs:1836:23:1836:25 | &xs | &T | file://:0:0:0:0 | [] |
-| main.rs:1836:23:1836:25 | &xs | &T.[T;...] | main.rs:1791:5:1792:13 | S |
-| main.rs:1836:23:1836:25 | &xs | &T.[T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1836:24:1836:25 | xs |  | file://:0:0:0:0 | [] |
-| main.rs:1836:24:1836:25 | xs |  | file://:0:0:0:0 | [] |
-| main.rs:1836:24:1836:25 | xs | [T;...] | main.rs:1791:5:1792:13 | S |
-| main.rs:1836:24:1836:25 | xs | [T] | main.rs:1791:5:1792:13 | S |
-| main.rs:1842:25:1842:35 | "Hello, {}" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1842:25:1842:45 | ...::format(...) |  | {EXTERNAL LOCATION} | String |
-| main.rs:1842:25:1842:45 | { ... } |  | {EXTERNAL LOCATION} | String |
-| main.rs:1842:38:1842:45 | "World!" |  | {EXTERNAL LOCATION} | str |
-| main.rs:1848:19:1848:23 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1848:19:1848:23 | SelfParam | &T | main.rs:1847:5:1849:5 | Self [trait MyAdd] |
-| main.rs:1848:26:1848:30 | value |  | main.rs:1847:17:1847:17 | T |
-| main.rs:1853:19:1853:23 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1853:19:1853:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1853:26:1853:30 | value |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1853:46:1855:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1854:13:1854:17 | value |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1860:19:1860:23 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1860:19:1860:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1860:26:1860:30 | value |  | file://:0:0:0:0 | & |
-| main.rs:1860:26:1860:30 | value | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1860:26:1860:30 | value | &T | file://:0:0:0:0 | & |
-| main.rs:1860:47:1862:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1860:47:1862:9 | { ... } |  | file://:0:0:0:0 | & |
-| main.rs:1861:13:1861:18 | * ... |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1861:13:1861:18 | * ... |  | file://:0:0:0:0 | & |
-| main.rs:1861:14:1861:18 | value |  | file://:0:0:0:0 | & |
-| main.rs:1861:14:1861:18 | value | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1861:14:1861:18 | value | &T | file://:0:0:0:0 | & |
-| main.rs:1867:19:1867:23 | SelfParam |  | file://:0:0:0:0 | & |
-| main.rs:1867:19:1867:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1867:26:1867:30 | value |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1867:47:1873:9 | { ... } |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1867:47:1873:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1868:13:1872:13 | if value {...} else {...} |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1868:13:1872:13 | if value {...} else {...} |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1868:16:1868:20 | value |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1868:22:1870:13 | { ... } |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1868:22:1870:13 | { ... } |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1869:17:1869:17 | 1 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1869:17:1869:17 | 1 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1870:20:1872:13 | { ... } |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1870:20:1872:13 | { ... } |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1871:17:1871:17 | 0 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1871:17:1871:17 | 0 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1877:13:1877:13 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1877:13:1877:13 | x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1877:22:1877:23 | 73 |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1877:22:1877:23 | 73 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1878:9:1878:9 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1878:9:1878:9 | x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1878:9:1878:22 | x.my_add(...) |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1878:18:1878:21 | 5i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1879:9:1879:9 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1879:9:1879:9 | x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1879:9:1879:23 | x.my_add(...) |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1879:18:1879:22 | &5i64 |  | file://:0:0:0:0 | & |
-| main.rs:1879:18:1879:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 |
-| main.rs:1879:19:1879:22 | 5i64 |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1880:9:1880:9 | x |  | {EXTERNAL LOCATION} | i32 |
-| main.rs:1880:9:1880:9 | x |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1880:9:1880:22 | x.my_add(...) |  | {EXTERNAL LOCATION} | i64 |
-| main.rs:1880:18:1880:21 | true |  | {EXTERNAL LOCATION} | bool |
-| main.rs:1886:5:1886:20 | ...::f(...) |  | main.rs:72:5:72:21 | Foo |
-| main.rs:1887:5:1887:60 | ...::g(...) |  | main.rs:72:5:72:21 | Foo |
-| main.rs:1887:20:1887:38 | ...::Foo {...} |  | main.rs:72:5:72:21 | Foo |
-| main.rs:1887:41:1887:59 | ...::Foo {...} |  | main.rs:72:5:72:21 | Foo |
-| main.rs:1903:5:1903:15 | ...::f(...) |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1503:13:1503:27 | ... ^= ... |  | file://:0:0:0:0 | () |
+| main.rs:1503:23:1503:25 | rhs |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1503:23:1503:27 | rhs.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1509:16:1509:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1509:22:1509:24 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1509:40:1514:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1510:13:1513:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1511:20:1511:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1511:20:1511:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1511:20:1511:32 | ... << ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1511:30:1511:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1512:20:1512:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1512:20:1512:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1512:20:1512:32 | ... << ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1512:30:1512:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1518:23:1518:31 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1518:23:1518:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1518:34:1518:36 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1519:13:1519:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1519:13:1519:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1519:13:1519:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1519:13:1519:26 | ... <<= ... |  | file://:0:0:0:0 | () |
+| main.rs:1519:24:1519:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1520:13:1520:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1520:13:1520:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1520:13:1520:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1520:13:1520:26 | ... <<= ... |  | file://:0:0:0:0 | () |
+| main.rs:1520:24:1520:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1526:16:1526:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1526:22:1526:24 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1526:40:1531:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1527:13:1530:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1528:20:1528:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1528:20:1528:25 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1528:20:1528:32 | ... >> ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1528:30:1528:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1529:20:1529:23 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1529:20:1529:25 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1529:20:1529:32 | ... >> ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1529:30:1529:32 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1535:23:1535:31 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1535:23:1535:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1535:34:1535:36 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1536:13:1536:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1536:13:1536:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1536:13:1536:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1536:13:1536:26 | ... >>= ... |  | file://:0:0:0:0 | () |
+| main.rs:1536:24:1536:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1537:13:1537:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1537:13:1537:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1537:13:1537:18 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1537:13:1537:26 | ... >>= ... |  | file://:0:0:0:0 | () |
+| main.rs:1537:24:1537:26 | rhs |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1543:16:1543:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1543:30:1548:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1544:13:1547:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1545:20:1545:26 | - ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1545:21:1545:24 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1545:21:1545:26 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1546:20:1546:26 | - ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1546:21:1546:24 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1546:21:1546:26 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1553:16:1553:19 | SelfParam |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1553:30:1558:9 | { ... } |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1554:13:1557:13 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1555:20:1555:26 | ! ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1555:21:1555:24 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1555:21:1555:26 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1556:20:1556:26 | ! ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1556:21:1556:24 | self |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1556:21:1556:26 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1562:15:1562:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1562:15:1562:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1562:22:1562:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1562:22:1562:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1562:44:1564:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1563:13:1563:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1563:13:1563:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1563:13:1563:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1563:13:1563:29 | ... == ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1563:13:1563:50 | ... && ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1563:23:1563:27 | other |  | file://:0:0:0:0 | & |
+| main.rs:1563:23:1563:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1563:23:1563:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1563:34:1563:37 | self |  | file://:0:0:0:0 | & |
+| main.rs:1563:34:1563:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1563:34:1563:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1563:34:1563:50 | ... == ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1563:44:1563:48 | other |  | file://:0:0:0:0 | & |
+| main.rs:1563:44:1563:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1563:44:1563:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1566:15:1566:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1566:15:1566:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1566:22:1566:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1566:22:1566:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1566:44:1568:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1567:13:1567:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1567:13:1567:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1567:13:1567:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1567:13:1567:29 | ... != ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1567:13:1567:50 | ... \|\| ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1567:23:1567:27 | other |  | file://:0:0:0:0 | & |
+| main.rs:1567:23:1567:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1567:23:1567:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1567:34:1567:37 | self |  | file://:0:0:0:0 | & |
+| main.rs:1567:34:1567:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1567:34:1567:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1567:34:1567:50 | ... != ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1567:44:1567:48 | other |  | file://:0:0:0:0 | & |
+| main.rs:1567:44:1567:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1567:44:1567:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1572:24:1572:28 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1572:24:1572:28 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1572:31:1572:35 | other |  | file://:0:0:0:0 | & |
+| main.rs:1572:31:1572:35 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1572:75:1574:9 | { ... } |  | {EXTERNAL LOCATION} | Option |
+| main.rs:1572:75:1574:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering |
+| main.rs:1573:13:1573:29 | (...) |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:13:1573:63 | ... .partial_cmp(...) |  | {EXTERNAL LOCATION} | Option |
+| main.rs:1573:13:1573:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering |
+| main.rs:1573:14:1573:17 | self |  | file://:0:0:0:0 | & |
+| main.rs:1573:14:1573:17 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1573:14:1573:19 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:14:1573:28 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:23:1573:26 | self |  | file://:0:0:0:0 | & |
+| main.rs:1573:23:1573:26 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1573:23:1573:28 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:43:1573:62 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1573:43:1573:62 | &... | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:44:1573:62 | (...) |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:45:1573:49 | other |  | file://:0:0:0:0 | & |
+| main.rs:1573:45:1573:49 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1573:45:1573:51 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:45:1573:61 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1573:55:1573:59 | other |  | file://:0:0:0:0 | & |
+| main.rs:1573:55:1573:59 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1573:55:1573:61 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1576:15:1576:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1576:15:1576:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1576:22:1576:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1576:22:1576:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1576:44:1578:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1577:13:1577:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1577:13:1577:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1577:13:1577:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1577:13:1577:28 | ... < ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1577:13:1577:48 | ... && ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1577:22:1577:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1577:22:1577:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1577:22:1577:28 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1577:33:1577:36 | self |  | file://:0:0:0:0 | & |
+| main.rs:1577:33:1577:36 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1577:33:1577:38 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1577:33:1577:48 | ... < ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1577:42:1577:46 | other |  | file://:0:0:0:0 | & |
+| main.rs:1577:42:1577:46 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1577:42:1577:48 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1580:15:1580:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1580:15:1580:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1580:22:1580:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1580:22:1580:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1580:44:1582:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1581:13:1581:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1581:13:1581:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1581:13:1581:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1581:13:1581:29 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1581:13:1581:50 | ... && ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1581:23:1581:27 | other |  | file://:0:0:0:0 | & |
+| main.rs:1581:23:1581:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1581:23:1581:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1581:34:1581:37 | self |  | file://:0:0:0:0 | & |
+| main.rs:1581:34:1581:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1581:34:1581:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1581:34:1581:50 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1581:44:1581:48 | other |  | file://:0:0:0:0 | & |
+| main.rs:1581:44:1581:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1581:44:1581:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1584:15:1584:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1584:15:1584:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1584:22:1584:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1584:22:1584:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1584:44:1586:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1585:13:1585:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1585:13:1585:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1585:13:1585:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1585:13:1585:28 | ... > ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1585:13:1585:48 | ... && ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1585:22:1585:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1585:22:1585:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1585:22:1585:28 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1585:33:1585:36 | self |  | file://:0:0:0:0 | & |
+| main.rs:1585:33:1585:36 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1585:33:1585:38 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1585:33:1585:48 | ... > ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1585:42:1585:46 | other |  | file://:0:0:0:0 | & |
+| main.rs:1585:42:1585:46 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1585:42:1585:48 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1588:15:1588:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1588:15:1588:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1588:22:1588:26 | other |  | file://:0:0:0:0 | & |
+| main.rs:1588:22:1588:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1588:44:1590:9 | { ... } |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1589:13:1589:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1589:13:1589:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1589:13:1589:18 | self.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1589:13:1589:29 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1589:13:1589:50 | ... && ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1589:23:1589:27 | other |  | file://:0:0:0:0 | & |
+| main.rs:1589:23:1589:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1589:23:1589:29 | other.x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1589:34:1589:37 | self |  | file://:0:0:0:0 | & |
+| main.rs:1589:34:1589:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1589:34:1589:39 | self.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1589:34:1589:50 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1589:44:1589:48 | other |  | file://:0:0:0:0 | & |
+| main.rs:1589:44:1589:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1589:44:1589:50 | other.y |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1596:13:1596:18 | i64_eq |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1596:22:1596:35 | (...) |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1596:23:1596:26 | 1i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1596:23:1596:34 | ... == ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1596:31:1596:34 | 2i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1597:13:1597:18 | i64_ne |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1597:22:1597:35 | (...) |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1597:23:1597:26 | 3i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1597:23:1597:34 | ... != ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1597:31:1597:34 | 4i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1598:13:1598:18 | i64_lt |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1598:22:1598:34 | (...) |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1598:23:1598:26 | 5i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1598:23:1598:33 | ... < ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1598:30:1598:33 | 6i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1599:13:1599:18 | i64_le |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1599:22:1599:35 | (...) |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1599:23:1599:26 | 7i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1599:23:1599:34 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1599:31:1599:34 | 8i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1600:13:1600:18 | i64_gt |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1600:22:1600:35 | (...) |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1600:23:1600:26 | 9i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1600:23:1600:34 | ... > ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1600:30:1600:34 | 10i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1601:13:1601:18 | i64_ge |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1601:22:1601:37 | (...) |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1601:23:1601:27 | 11i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1601:23:1601:36 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1601:32:1601:36 | 12i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1604:13:1604:19 | i64_add |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1604:23:1604:27 | 13i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1604:23:1604:35 | ... + ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1604:31:1604:35 | 14i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1605:13:1605:19 | i64_sub |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1605:23:1605:27 | 15i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1605:23:1605:35 | ... - ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1605:31:1605:35 | 16i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1606:13:1606:19 | i64_mul |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1606:23:1606:27 | 17i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1606:23:1606:35 | ... * ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1606:31:1606:35 | 18i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1607:13:1607:19 | i64_div |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1607:23:1607:27 | 19i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1607:23:1607:35 | ... / ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1607:31:1607:35 | 20i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1608:13:1608:19 | i64_rem |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1608:23:1608:27 | 21i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1608:23:1608:35 | ... % ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1608:31:1608:35 | 22i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1611:13:1611:30 | mut i64_add_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1611:34:1611:38 | 23i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1612:9:1612:22 | i64_add_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1612:9:1612:31 | ... += ... |  | file://:0:0:0:0 | () |
+| main.rs:1612:27:1612:31 | 24i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1614:13:1614:30 | mut i64_sub_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1614:34:1614:38 | 25i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1615:9:1615:22 | i64_sub_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1615:9:1615:31 | ... -= ... |  | file://:0:0:0:0 | () |
+| main.rs:1615:27:1615:31 | 26i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1617:13:1617:30 | mut i64_mul_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1617:34:1617:38 | 27i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1618:9:1618:22 | i64_mul_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1618:9:1618:31 | ... *= ... |  | file://:0:0:0:0 | () |
+| main.rs:1618:27:1618:31 | 28i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1620:13:1620:30 | mut i64_div_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1620:34:1620:38 | 29i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1621:9:1621:22 | i64_div_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1621:9:1621:31 | ... /= ... |  | file://:0:0:0:0 | () |
+| main.rs:1621:27:1621:31 | 30i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1623:13:1623:30 | mut i64_rem_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1623:34:1623:38 | 31i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1624:9:1624:22 | i64_rem_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1624:9:1624:31 | ... %= ... |  | file://:0:0:0:0 | () |
+| main.rs:1624:27:1624:31 | 32i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1627:13:1627:22 | i64_bitand |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1627:26:1627:30 | 33i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1627:26:1627:38 | ... & ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1627:34:1627:38 | 34i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1628:13:1628:21 | i64_bitor |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1628:25:1628:29 | 35i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1628:25:1628:37 | ... \| ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1628:33:1628:37 | 36i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1629:13:1629:22 | i64_bitxor |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1629:26:1629:30 | 37i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1629:26:1629:38 | ... ^ ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1629:34:1629:38 | 38i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1630:13:1630:19 | i64_shl |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1630:23:1630:27 | 39i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1630:23:1630:36 | ... << ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1630:32:1630:36 | 40i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1631:13:1631:19 | i64_shr |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1631:23:1631:27 | 41i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1631:23:1631:36 | ... >> ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1631:32:1631:36 | 42i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1634:13:1634:33 | mut i64_bitand_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1634:37:1634:41 | 43i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1635:9:1635:25 | i64_bitand_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1635:9:1635:34 | ... &= ... |  | file://:0:0:0:0 | () |
+| main.rs:1635:30:1635:34 | 44i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1637:13:1637:32 | mut i64_bitor_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1637:36:1637:40 | 45i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1638:9:1638:24 | i64_bitor_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1638:9:1638:33 | ... \|= ... |  | file://:0:0:0:0 | () |
+| main.rs:1638:29:1638:33 | 46i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1640:13:1640:33 | mut i64_bitxor_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1640:37:1640:41 | 47i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1641:9:1641:25 | i64_bitxor_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1641:9:1641:34 | ... ^= ... |  | file://:0:0:0:0 | () |
+| main.rs:1641:30:1641:34 | 48i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1643:13:1643:30 | mut i64_shl_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1643:34:1643:38 | 49i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1644:9:1644:22 | i64_shl_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1644:9:1644:32 | ... <<= ... |  | file://:0:0:0:0 | () |
+| main.rs:1644:28:1644:32 | 50i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1646:13:1646:30 | mut i64_shr_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1646:34:1646:38 | 51i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1647:9:1647:22 | i64_shr_assign |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1647:9:1647:32 | ... >>= ... |  | file://:0:0:0:0 | () |
+| main.rs:1647:28:1647:32 | 52i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1649:13:1649:19 | i64_neg |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1649:23:1649:28 | - ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1649:24:1649:28 | 53i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1650:13:1650:19 | i64_not |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1650:23:1650:28 | ! ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1650:24:1650:28 | 54i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1653:13:1653:14 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1653:18:1653:36 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1653:28:1653:28 | 1 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1653:28:1653:28 | 1 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1653:34:1653:34 | 2 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1653:34:1653:34 | 2 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1654:13:1654:14 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1654:18:1654:36 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1654:28:1654:28 | 3 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1654:28:1654:28 | 3 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1654:34:1654:34 | 4 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1654:34:1654:34 | 4 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1657:13:1657:19 | vec2_eq |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1657:23:1657:24 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1657:23:1657:30 | ... == ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1657:29:1657:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1658:13:1658:19 | vec2_ne |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1658:23:1658:24 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1658:23:1658:30 | ... != ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1658:29:1658:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1659:13:1659:19 | vec2_lt |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1659:23:1659:24 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1659:23:1659:29 | ... < ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1659:28:1659:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1660:13:1660:19 | vec2_le |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1660:23:1660:24 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1660:23:1660:30 | ... <= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1660:29:1660:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1661:13:1661:19 | vec2_gt |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1661:23:1661:24 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1661:23:1661:29 | ... > ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1661:28:1661:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1662:13:1662:19 | vec2_ge |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1662:23:1662:24 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1662:23:1662:30 | ... >= ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1662:29:1662:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1665:13:1665:20 | vec2_add |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1665:24:1665:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1665:24:1665:30 | ... + ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1665:29:1665:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1666:13:1666:20 | vec2_sub |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1666:24:1666:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1666:24:1666:30 | ... - ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1666:29:1666:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1667:13:1667:20 | vec2_mul |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1667:24:1667:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1667:24:1667:30 | ... * ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1667:29:1667:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1668:13:1668:20 | vec2_div |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1668:24:1668:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1668:24:1668:30 | ... / ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1668:29:1668:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1669:13:1669:20 | vec2_rem |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1669:24:1669:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1669:24:1669:30 | ... % ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1669:29:1669:30 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1672:13:1672:31 | mut vec2_add_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1672:35:1672:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1673:9:1673:23 | vec2_add_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1673:9:1673:29 | ... += ... |  | file://:0:0:0:0 | () |
+| main.rs:1673:28:1673:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1675:13:1675:31 | mut vec2_sub_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1675:35:1675:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1676:9:1676:23 | vec2_sub_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1676:9:1676:29 | ... -= ... |  | file://:0:0:0:0 | () |
+| main.rs:1676:28:1676:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1678:13:1678:31 | mut vec2_mul_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1678:35:1678:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1679:9:1679:23 | vec2_mul_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1679:9:1679:29 | ... *= ... |  | file://:0:0:0:0 | () |
+| main.rs:1679:28:1679:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1681:13:1681:31 | mut vec2_div_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1681:35:1681:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1682:9:1682:23 | vec2_div_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1682:9:1682:29 | ... /= ... |  | file://:0:0:0:0 | () |
+| main.rs:1682:28:1682:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1684:13:1684:31 | mut vec2_rem_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1684:35:1684:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1685:9:1685:23 | vec2_rem_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1685:9:1685:29 | ... %= ... |  | file://:0:0:0:0 | () |
+| main.rs:1685:28:1685:29 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1688:13:1688:23 | vec2_bitand |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1688:27:1688:28 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1688:27:1688:33 | ... & ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1688:32:1688:33 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1689:13:1689:22 | vec2_bitor |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1689:26:1689:27 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1689:26:1689:32 | ... \| ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1689:31:1689:32 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1690:13:1690:23 | vec2_bitxor |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1690:27:1690:28 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1690:27:1690:33 | ... ^ ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1690:32:1690:33 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1691:13:1691:20 | vec2_shl |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1691:24:1691:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1691:24:1691:33 | ... << ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1691:30:1691:33 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1692:13:1692:20 | vec2_shr |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1692:24:1692:25 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1692:24:1692:33 | ... >> ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1692:30:1692:33 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1695:13:1695:34 | mut vec2_bitand_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1695:38:1695:39 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1696:9:1696:26 | vec2_bitand_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1696:9:1696:32 | ... &= ... |  | file://:0:0:0:0 | () |
+| main.rs:1696:31:1696:32 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1698:13:1698:33 | mut vec2_bitor_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1698:37:1698:38 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1699:9:1699:25 | vec2_bitor_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1699:9:1699:31 | ... \|= ... |  | file://:0:0:0:0 | () |
+| main.rs:1699:30:1699:31 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1701:13:1701:34 | mut vec2_bitxor_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1701:38:1701:39 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1702:9:1702:26 | vec2_bitxor_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1702:9:1702:32 | ... ^= ... |  | file://:0:0:0:0 | () |
+| main.rs:1702:31:1702:32 | v2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1704:13:1704:31 | mut vec2_shl_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1704:35:1704:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1705:9:1705:23 | vec2_shl_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1705:9:1705:32 | ... <<= ... |  | file://:0:0:0:0 | () |
+| main.rs:1705:29:1705:32 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1707:13:1707:31 | mut vec2_shr_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1707:35:1707:36 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1708:9:1708:23 | vec2_shr_assign |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1708:9:1708:32 | ... >>= ... |  | file://:0:0:0:0 | () |
+| main.rs:1708:29:1708:32 | 1u32 |  | {EXTERNAL LOCATION} | u32 |
+| main.rs:1711:13:1711:20 | vec2_neg |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1711:24:1711:26 | - ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1711:25:1711:26 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1712:13:1712:20 | vec2_not |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1712:24:1712:26 | ! ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1712:25:1712:26 | v1 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1715:13:1715:24 | default_vec2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1715:28:1715:45 | ...::default(...) |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1716:13:1716:26 | vec2_zero_plus |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1716:30:1716:48 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1716:30:1716:63 | ... + ... |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1716:40:1716:40 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1716:40:1716:40 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1716:46:1716:46 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1716:46:1716:46 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1716:52:1716:63 | default_vec2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1720:13:1720:24 | default_vec2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1720:28:1720:45 | ...::default(...) |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1721:13:1721:26 | vec2_zero_plus |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1721:30:1721:48 | Vec2 {...} |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1721:30:1721:64 | ... == ... |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1721:40:1721:40 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1721:40:1721:40 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1721:46:1721:46 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1721:46:1721:46 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1721:53:1721:64 | default_vec2 |  | main.rs:1356:5:1361:5 | Vec2 |
+| main.rs:1731:18:1731:21 | SelfParam |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1734:25:1736:5 | { ... } |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1735:9:1735:10 | S1 |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1738:41:1740:5 | { ... } |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1738:41:1740:5 | { ... } |  | main.rs:1738:16:1738:39 | ImplTraitTypeRepr |
+| main.rs:1738:41:1740:5 | { ... } | Output | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1739:9:1739:20 | { ... } |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1739:9:1739:20 | { ... } |  | main.rs:1738:16:1738:39 | ImplTraitTypeRepr |
+| main.rs:1739:9:1739:20 | { ... } | Output | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1739:17:1739:18 | S1 |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1748:13:1748:42 | SelfParam |  | {EXTERNAL LOCATION} | Pin |
+| main.rs:1748:13:1748:42 | SelfParam | Ptr | file://:0:0:0:0 | & |
+| main.rs:1748:13:1748:42 | SelfParam | Ptr.&T | main.rs:1742:5:1742:14 | S2 |
+| main.rs:1749:13:1749:15 | _cx |  | file://:0:0:0:0 | & |
+| main.rs:1749:13:1749:15 | _cx | &T | {EXTERNAL LOCATION} | Context |
+| main.rs:1750:44:1752:9 | { ... } |  | {EXTERNAL LOCATION} | Poll |
+| main.rs:1750:44:1752:9 | { ... } | T | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1751:13:1751:38 | ...::Ready(...) |  | {EXTERNAL LOCATION} | Poll |
+| main.rs:1751:13:1751:38 | ...::Ready(...) | T | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1751:36:1751:37 | S1 |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1755:41:1757:5 | { ... } |  | main.rs:1742:5:1742:14 | S2 |
+| main.rs:1755:41:1757:5 | { ... } |  | main.rs:1755:16:1755:39 | ImplTraitTypeRepr |
+| main.rs:1756:9:1756:10 | S2 |  | main.rs:1742:5:1742:14 | S2 |
+| main.rs:1756:9:1756:10 | S2 |  | main.rs:1755:16:1755:39 | ImplTraitTypeRepr |
+| main.rs:1760:9:1760:12 | f1(...) |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1760:9:1760:12 | f1(...) | Output | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1760:9:1760:18 | await ... |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1761:9:1761:12 | f2(...) |  | main.rs:1738:16:1738:39 | ImplTraitTypeRepr |
+| main.rs:1761:9:1761:18 | await ... |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1762:9:1762:12 | f3(...) |  | main.rs:1755:16:1755:39 | ImplTraitTypeRepr |
+| main.rs:1762:9:1762:18 | await ... |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1763:9:1763:10 | S2 |  | main.rs:1742:5:1742:14 | S2 |
+| main.rs:1763:9:1763:16 | await S2 |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1764:13:1764:13 | b |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1764:13:1764:13 | b | Output | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1764:17:1764:28 | { ... } |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1764:17:1764:28 | { ... } | Output | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1764:25:1764:26 | S1 |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1765:9:1765:9 | b |  | {EXTERNAL LOCATION} | trait Future |
+| main.rs:1765:9:1765:9 | b | Output | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1765:9:1765:15 | await b |  | main.rs:1728:5:1728:14 | S1 |
+| main.rs:1774:15:1774:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1774:15:1774:19 | SelfParam | &T | main.rs:1773:5:1775:5 | Self [trait Trait1] |
+| main.rs:1778:15:1778:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1778:15:1778:19 | SelfParam | &T | main.rs:1777:5:1779:5 | Self [trait Trait2] |
+| main.rs:1782:15:1782:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1782:15:1782:19 | SelfParam | &T | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1786:15:1786:19 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1786:15:1786:19 | SelfParam | &T | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1789:37:1791:5 | { ... } |  | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1789:37:1791:5 | { ... } |  | main.rs:1789:16:1789:35 | ImplTraitTypeRepr |
+| main.rs:1790:9:1790:10 | S1 |  | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1790:9:1790:10 | S1 |  | main.rs:1789:16:1789:35 | ImplTraitTypeRepr |
+| main.rs:1794:18:1794:22 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1794:18:1794:22 | SelfParam | &T | main.rs:1793:5:1795:5 | Self [trait MyTrait] |
+| main.rs:1798:18:1798:22 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1798:18:1798:22 | SelfParam | &T | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1798:31:1800:9 | { ... } |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1799:13:1799:14 | S2 |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1803:45:1805:5 | { ... } |  | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1803:45:1805:5 | { ... } |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1804:9:1804:10 | S1 |  | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1804:9:1804:10 | S1 |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1807:41:1807:41 | t |  | main.rs:1807:26:1807:38 | B |
+| main.rs:1807:52:1809:5 | { ... } |  | main.rs:1807:23:1807:23 | A |
+| main.rs:1808:9:1808:9 | t |  | main.rs:1807:26:1807:38 | B |
+| main.rs:1808:9:1808:17 | t.get_a() |  | main.rs:1807:23:1807:23 | A |
+| main.rs:1811:26:1811:26 | t |  | main.rs:1811:29:1811:43 | ImplTraitTypeRepr |
+| main.rs:1811:51:1813:5 | { ... } |  | main.rs:1811:23:1811:23 | A |
+| main.rs:1812:9:1812:9 | t |  | main.rs:1811:29:1811:43 | ImplTraitTypeRepr |
+| main.rs:1812:9:1812:17 | t.get_a() |  | main.rs:1811:23:1811:23 | A |
+| main.rs:1816:13:1816:13 | x |  | main.rs:1789:16:1789:35 | ImplTraitTypeRepr |
+| main.rs:1816:17:1816:20 | f1(...) |  | main.rs:1789:16:1789:35 | ImplTraitTypeRepr |
+| main.rs:1817:9:1817:9 | x |  | main.rs:1789:16:1789:35 | ImplTraitTypeRepr |
+| main.rs:1818:9:1818:9 | x |  | main.rs:1789:16:1789:35 | ImplTraitTypeRepr |
+| main.rs:1819:13:1819:13 | a |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1819:17:1819:32 | get_a_my_trait(...) |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1820:13:1820:13 | b |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1820:17:1820:33 | uses_my_trait1(...) |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1820:32:1820:32 | a |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1821:13:1821:13 | a |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1821:17:1821:32 | get_a_my_trait(...) |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1822:13:1822:13 | c |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1822:17:1822:33 | uses_my_trait2(...) |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1822:32:1822:32 | a |  | main.rs:1803:28:1803:43 | ImplTraitTypeRepr |
+| main.rs:1823:13:1823:13 | d |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1823:17:1823:34 | uses_my_trait2(...) |  | main.rs:1771:5:1771:14 | S2 |
+| main.rs:1823:32:1823:33 | S1 |  | main.rs:1770:5:1770:14 | S1 |
+| main.rs:1834:16:1834:20 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1834:16:1834:20 | SelfParam | &T | main.rs:1830:5:1831:13 | S |
+| main.rs:1834:31:1836:9 | { ... } |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1835:13:1835:13 | S |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1845:26:1847:9 | { ... } |  | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1845:26:1847:9 | { ... } | T | main.rs:1844:10:1844:10 | T |
+| main.rs:1846:13:1846:38 | MyVec {...} |  | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1846:13:1846:38 | MyVec {...} | T | main.rs:1844:10:1844:10 | T |
+| main.rs:1846:27:1846:36 | ...::new(...) |  | {EXTERNAL LOCATION} | Vec |
+| main.rs:1846:27:1846:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
+| main.rs:1846:27:1846:36 | ...::new(...) | T | main.rs:1844:10:1844:10 | T |
+| main.rs:1849:17:1849:25 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1849:17:1849:25 | SelfParam | &T | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1849:17:1849:25 | SelfParam | &T.T | main.rs:1844:10:1844:10 | T |
+| main.rs:1849:28:1849:32 | value |  | main.rs:1844:10:1844:10 | T |
+| main.rs:1850:13:1850:16 | self |  | file://:0:0:0:0 | & |
+| main.rs:1850:13:1850:16 | self | &T | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1850:13:1850:16 | self | &T.T | main.rs:1844:10:1844:10 | T |
+| main.rs:1850:13:1850:21 | self.data |  | {EXTERNAL LOCATION} | Vec |
+| main.rs:1850:13:1850:21 | self.data | A | {EXTERNAL LOCATION} | Global |
+| main.rs:1850:13:1850:21 | self.data | T | main.rs:1844:10:1844:10 | T |
+| main.rs:1850:28:1850:32 | value |  | main.rs:1844:10:1844:10 | T |
+| main.rs:1858:18:1858:22 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1858:18:1858:22 | SelfParam | &T | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1858:18:1858:22 | SelfParam | &T.T | main.rs:1854:10:1854:10 | T |
+| main.rs:1858:25:1858:29 | index |  | {EXTERNAL LOCATION} | usize |
+| main.rs:1858:56:1860:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1858:56:1860:9 | { ... } | &T | main.rs:1854:10:1854:10 | T |
+| main.rs:1859:13:1859:29 | &... |  | file://:0:0:0:0 | & |
+| main.rs:1859:13:1859:29 | &... | &T | main.rs:1854:10:1854:10 | T |
+| main.rs:1859:14:1859:17 | self |  | file://:0:0:0:0 | & |
+| main.rs:1859:14:1859:17 | self | &T | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1859:14:1859:17 | self | &T.T | main.rs:1854:10:1854:10 | T |
+| main.rs:1859:14:1859:22 | self.data |  | {EXTERNAL LOCATION} | Vec |
+| main.rs:1859:14:1859:22 | self.data | A | {EXTERNAL LOCATION} | Global |
+| main.rs:1859:14:1859:22 | self.data | T | main.rs:1854:10:1854:10 | T |
+| main.rs:1859:14:1859:29 | ...[index] |  | main.rs:1854:10:1854:10 | T |
+| main.rs:1859:24:1859:28 | index |  | {EXTERNAL LOCATION} | usize |
+| main.rs:1863:22:1863:26 | slice |  | file://:0:0:0:0 | & |
+| main.rs:1863:22:1863:26 | slice | &T | file://:0:0:0:0 | [] |
+| main.rs:1863:22:1863:26 | slice | &T.[T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1864:13:1864:13 | x |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1864:17:1864:21 | slice |  | file://:0:0:0:0 | & |
+| main.rs:1864:17:1864:21 | slice | &T | file://:0:0:0:0 | [] |
+| main.rs:1864:17:1864:21 | slice | &T.[T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1864:17:1864:24 | slice[0] |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1864:17:1864:30 | ... .foo() |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1864:23:1864:23 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1868:13:1868:19 | mut vec |  | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1868:13:1868:19 | mut vec | T | main.rs:1830:5:1831:13 | S |
+| main.rs:1868:23:1868:34 | ...::new(...) |  | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1868:23:1868:34 | ...::new(...) | T | main.rs:1830:5:1831:13 | S |
+| main.rs:1869:9:1869:11 | vec |  | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1869:9:1869:11 | vec | T | main.rs:1830:5:1831:13 | S |
+| main.rs:1869:18:1869:18 | S |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1870:9:1870:11 | vec |  | main.rs:1839:5:1842:5 | MyVec |
+| main.rs:1870:9:1870:11 | vec | T | main.rs:1830:5:1831:13 | S |
+| main.rs:1870:13:1870:13 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1872:13:1872:14 | xs |  | file://:0:0:0:0 | [] |
+| main.rs:1872:13:1872:14 | xs |  | file://:0:0:0:0 | [] |
+| main.rs:1872:13:1872:14 | xs | [T;...] | main.rs:1830:5:1831:13 | S |
+| main.rs:1872:13:1872:14 | xs | [T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1872:21:1872:21 | 1 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1872:26:1872:28 | [...] |  | file://:0:0:0:0 | [] |
+| main.rs:1872:26:1872:28 | [...] |  | file://:0:0:0:0 | [] |
+| main.rs:1872:26:1872:28 | [...] | [T;...] | main.rs:1830:5:1831:13 | S |
+| main.rs:1872:26:1872:28 | [...] | [T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1872:27:1872:27 | S |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1873:13:1873:13 | x |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1873:17:1873:18 | xs |  | file://:0:0:0:0 | [] |
+| main.rs:1873:17:1873:18 | xs |  | file://:0:0:0:0 | [] |
+| main.rs:1873:17:1873:18 | xs | [T;...] | main.rs:1830:5:1831:13 | S |
+| main.rs:1873:17:1873:18 | xs | [T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1873:17:1873:21 | xs[0] |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1873:17:1873:27 | ... .foo() |  | main.rs:1830:5:1831:13 | S |
+| main.rs:1873:20:1873:20 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1875:23:1875:25 | &xs |  | file://:0:0:0:0 | & |
+| main.rs:1875:23:1875:25 | &xs | &T | file://:0:0:0:0 | [] |
+| main.rs:1875:23:1875:25 | &xs | &T | file://:0:0:0:0 | [] |
+| main.rs:1875:23:1875:25 | &xs | &T.[T;...] | main.rs:1830:5:1831:13 | S |
+| main.rs:1875:23:1875:25 | &xs | &T.[T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1875:24:1875:25 | xs |  | file://:0:0:0:0 | [] |
+| main.rs:1875:24:1875:25 | xs |  | file://:0:0:0:0 | [] |
+| main.rs:1875:24:1875:25 | xs | [T;...] | main.rs:1830:5:1831:13 | S |
+| main.rs:1875:24:1875:25 | xs | [T] | main.rs:1830:5:1831:13 | S |
+| main.rs:1881:25:1881:35 | "Hello, {}" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1881:25:1881:45 | ...::format(...) |  | {EXTERNAL LOCATION} | String |
+| main.rs:1881:25:1881:45 | { ... } |  | {EXTERNAL LOCATION} | String |
+| main.rs:1881:38:1881:45 | "World!" |  | {EXTERNAL LOCATION} | str |
+| main.rs:1887:19:1887:23 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1887:19:1887:23 | SelfParam | &T | main.rs:1886:5:1888:5 | Self [trait MyAdd] |
+| main.rs:1887:26:1887:30 | value |  | main.rs:1886:17:1886:17 | T |
+| main.rs:1892:19:1892:23 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1892:19:1892:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1892:26:1892:30 | value |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1892:46:1894:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1893:13:1893:17 | value |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1899:19:1899:23 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1899:19:1899:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1899:26:1899:30 | value |  | file://:0:0:0:0 | & |
+| main.rs:1899:26:1899:30 | value | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1899:47:1901:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1899:47:1901:9 | { ... } |  | file://:0:0:0:0 | & |
+| main.rs:1899:47:1901:9 | { ... } | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1900:13:1900:18 | * ... |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1900:13:1900:18 | * ... |  | file://:0:0:0:0 | & |
+| main.rs:1900:13:1900:18 | * ... | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1900:14:1900:18 | value |  | file://:0:0:0:0 | & |
+| main.rs:1900:14:1900:18 | value | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1906:19:1906:23 | SelfParam |  | file://:0:0:0:0 | & |
+| main.rs:1906:19:1906:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1906:26:1906:30 | value |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1906:47:1912:9 | { ... } |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1906:47:1912:9 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1907:13:1911:13 | if value {...} else {...} |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1907:13:1911:13 | if value {...} else {...} |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1907:16:1907:20 | value |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1907:22:1909:13 | { ... } |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1907:22:1909:13 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1908:17:1908:17 | 1 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1908:17:1908:17 | 1 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1909:20:1911:13 | { ... } |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1909:20:1911:13 | { ... } |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1910:17:1910:17 | 0 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1910:17:1910:17 | 0 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1916:13:1916:13 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1916:13:1916:13 | x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1916:22:1916:23 | 73 |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1916:22:1916:23 | 73 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1917:9:1917:9 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1917:9:1917:9 | x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1917:9:1917:22 | x.my_add(...) |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1917:18:1917:21 | 5i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1918:9:1918:9 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1918:9:1918:9 | x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1918:9:1918:23 | x.my_add(...) |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1918:18:1918:22 | &5i64 |  | file://:0:0:0:0 | & |
+| main.rs:1918:18:1918:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 |
+| main.rs:1918:19:1918:22 | 5i64 |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1919:9:1919:9 | x |  | {EXTERNAL LOCATION} | i32 |
+| main.rs:1919:9:1919:9 | x |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1919:9:1919:22 | x.my_add(...) |  | {EXTERNAL LOCATION} | i64 |
+| main.rs:1919:18:1919:21 | true |  | {EXTERNAL LOCATION} | bool |
+| main.rs:1927:5:1927:20 | ...::f(...) |  | main.rs:72:5:72:21 | Foo |
+| main.rs:1928:5:1928:60 | ...::g(...) |  | main.rs:72:5:72:21 | Foo |
+| main.rs:1928:20:1928:38 | ...::Foo {...} |  | main.rs:72:5:72:21 | Foo |
+| main.rs:1928:41:1928:59 | ...::Foo {...} |  | main.rs:72:5:72:21 | Foo |
+| main.rs:1944:5:1944:15 | ...::f(...) |  | {EXTERNAL LOCATION} | trait Future |
 testFailures
diff --git a/rust/ql/test/query-tests/security/CWE-022/options.yml b/rust/ql/test/query-tests/security/CWE-022/options.yml
index 5277d967cc09..e0b9bbfb5cf1 100644
--- a/rust/ql/test/query-tests/security/CWE-022/options.yml
+++ b/rust/ql/test/query-tests/security/CWE-022/options.yml
@@ -1,2 +1,3 @@
+qltest_use_nightly: true
 qltest_dependencies:
     - poem = { version = "3.1.7" }
diff --git a/rust/ql/test/query-tests/security/CWE-022/rust-toolchain.toml b/rust/ql/test/query-tests/security/CWE-022/rust-toolchain.toml
deleted file mode 100644
index bd988b083968..000000000000
--- a/rust/ql/test/query-tests/security/CWE-022/rust-toolchain.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-# This file specifies the Rust version used to develop and test the
-# extractors written in rust. It is set to the lowest version of Rust
-# we want to support.
-
-[toolchain]
-channel = "nightly"
-profile = "minimal"
-components = [ ]
diff --git a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected
index 767f33660084..4c01286c489c 100644
--- a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected
+++ b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected
@@ -1,30 +1,30 @@
 multiplePathResolutions
 | main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:218:14:218:25 | ...::malloc | file://:0:0:0:0 | fn malloc |
 | main.rs:218:14:218:25 | ...::malloc | file://:0:0:0:0 | fn malloc |
 | main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:219:13:219:24 | ...::malloc | file://:0:0:0:0 | fn malloc |
 | main.rs:219:13:219:24 | ...::malloc | file://:0:0:0:0 | fn malloc |
 | main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:220:13:220:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc |
 | main.rs:220:13:220:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc |
 | main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:221:13:221:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc |
 | main.rs:221:13:221:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc |
 | main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:222:13:222:24 | ...::calloc | file://:0:0:0:0 | fn calloc |
 | main.rs:222:13:222:24 | ...::calloc | file://:0:0:0:0 | fn calloc |
 | main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:223:13:223:24 | ...::calloc | file://:0:0:0:0 | fn calloc |
 | main.rs:223:13:223:24 | ...::calloc | file://:0:0:0:0 | fn calloc |
 | main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
-| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
+| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) |
 | main.rs:224:13:224:25 | ...::realloc | file://:0:0:0:0 | fn realloc |
 | main.rs:224:13:224:25 | ...::realloc | file://:0:0:0:0 | fn realloc |
 | main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity |
diff --git a/rust/ql/test/query-tests/security/CWE-770/Cargo.lock b/rust/ql/test/query-tests/security/CWE-770/Cargo.lock
index af842b2d7e42..444f7a92c563 100644
--- a/rust/ql/test/query-tests/security/CWE-770/Cargo.lock
+++ b/rust/ql/test/query-tests/security/CWE-770/Cargo.lock
@@ -4,9 +4,9 @@ version = 4
 
 [[package]]
 name = "libc"
-version = "0.2.173"
+version = "0.2.174"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 
 [[package]]
 name = "test"
diff --git a/rust/ql/test/query-tests/security/CWE-770/options.yml b/rust/ql/test/query-tests/security/CWE-770/options.yml
index 95a17a53b431..5a0244bf92b8 100644
--- a/rust/ql/test/query-tests/security/CWE-770/options.yml
+++ b/rust/ql/test/query-tests/security/CWE-770/options.yml
@@ -1,3 +1,3 @@
-qltest_cargo_check: true
+qltest_use_nightly: true
 qltest_dependencies:
-    - libc = { version = "0.2.11" }
+    - libc = { version = "0.2.174" }
diff --git a/rust/ql/test/query-tests/security/CWE-770/rust-toolchain.toml b/rust/ql/test/query-tests/security/CWE-770/rust-toolchain.toml
deleted file mode 100644
index 5d56faf9ae08..000000000000
--- a/rust/ql/test/query-tests/security/CWE-770/rust-toolchain.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[toolchain]
-channel = "nightly"
diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected
index d326b510db4c..c3a7f4451fb2 100644
--- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected
+++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected
@@ -1,13 +1,13 @@
 multiplePathResolutions
-| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) |
+| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
 | deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
 | deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc |
 | deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc |
-| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) |
+| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
 | deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
 | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free |
 | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free |
-| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) |
+| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
 | deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) |
 | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
 | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
diff --git a/rust/ql/test/query-tests/security/CWE-825/options.yml b/rust/ql/test/query-tests/security/CWE-825/options.yml
index 95a17a53b431..46c4e09d1210 100644
--- a/rust/ql/test/query-tests/security/CWE-825/options.yml
+++ b/rust/ql/test/query-tests/security/CWE-825/options.yml
@@ -1,3 +1,3 @@
-qltest_cargo_check: true
+qltest_use_nightly: true
 qltest_dependencies:
     - libc = { version = "0.2.11" }
diff --git a/rust/ql/test/query-tests/security/CWE-825/rust-toolchain.toml b/rust/ql/test/query-tests/security/CWE-825/rust-toolchain.toml
deleted file mode 100644
index afeb59293258..000000000000
--- a/rust/ql/test/query-tests/security/CWE-825/rust-toolchain.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[toolchain]
-channel = "nightly-2025-03-17"