Repository: RustPython/RustPython (language: rust)

Issue:
[RFC] Splitting parser out of RustPython repository
## Summary

<!-- A quick overview of your suggestion -->
Recently, rustpython-parser has definitely a lot more users than RustPython itself.
I suggest splitting parser out from RustPython repository.

## Detailed Explanation

<!-- Elaborate on your suggestion in all its details -->

When upstream is comparably smaller than downstream, downstream goes to make fragmentation rather than contributing to upstream.

The problem here is the user expectation and the project structure has opposite ratio.

In the project RustPython, parser is comparably small module - mostly due to huge stdlib of Python.
For rustpython-parser users, only rustpyhon-parser is useful but other parts is useless burden.

I'd like to suggest splitting parser out from RustPython repository.
it will be one of the good way to keep rust-implemented python parser in single repository with minimum fragmentation.

## Drawbacks, Rationale, and Alternatives

RustPython will use the separated parser with git tag. It will increase cost of maintenance of other parts of RustPython.

<!-- What drawbacks might this solution have? Why do you feel it is necessary? What other options might there be to solving this problem? -->

## Unresolved Questions

Not to restrict the parser's potent to just RustPython, the name even can be something different. `python-parser` or `python3-parser`.

<!-- What would you like feedback on for fleshing out your suggestion? -->



Discussion / hints:
I'd put in a slight request to make the crate also support Python 2. Bonus points if it can map onto the same `Visitor` trait.

We have a use case for parsing Python 2 and Python 3.5+ scraping the same information from either, so one crate handling both languages in an identical (maybe even the exact same) way would be amazing.
@thejcannon Thank you for the comment! Your demand seems showing better why we need a new repository. Aggregating more different use case to it will make the module more organized.
OK, I'd love to contribute to this, but I don't think I'm the best person to own it.
So how about:
- The new repo is added to this org: RustPython
- It is a strict port of the code inside RustPython. That way RustPython can pin the dependency to the commit containing the port
- I'll make a PR in that repo which breaks API to generate the per-kind structs and update the `FooKind` enums to use those.
- Then make a follow-up PR to generate the visitor (non API-breaking)
- (At some point in the future add Py2 capabilities)
Oh and for naming, I suggest `python-parser` so we don't close ourselves out of Python2
I think it will be started with a hard-copy or git-subtree.
It will be created under https://github.com/RustPython/parser (or python-parser?)
It will include roughly 4 crates - rustpython-common, rustpython-parser, rustpython-ast and rustpython-compiler-core not to create cross-dependency between crates.
I think I need to work on rustpython-common a bit to resolve its ambiguous boundary.

At the start of splitting point, there will be no difference between current rustpyhton-parser and the new repository.
Once the dependency stuff is done, I think the forking itself can be done very quickly.

So, please don't hesitate to make any change to our current parser. There will be no difference and it will takes time due to preparing.
I'm going to close https://github.com/RustPython/RustPython/pull/4930 and just wait for the new crate. Nothing is pushing it forward other than my own use-case, which I can get from my fork.

And that means we can get it right the first time when it's ready.
👍 No objection from me. I suspect this would benefit Ruff too.

We do depend on a few things in `rustpython_common`: `rustpython_common::cformat`, `rustpython_common::format`, `rustpython_common::float_ops`, and `rustpython_common::char`, so it'd be nice if those made it over too.

My two cents: it would be reasonable to retain the name `rustpython_parser` (and equivalent for other crates) even if the parser is intended to be used outside of RustPython, since these crates originate from RustPython and are part of the RustPython organization + effort.

That will be a point. Ruff is using not only parser but other utilities too. It seems creating a clean single module for Ruff looks unnatural. I am not sure what will the other parts' result be. Formatting stuff?
Maybe we can defer the better design of it later once those and Ruff and those part of RustPython be more stablized later.

Still it looks better. Comparably, parser more frequently changes while common doesn't. 
Ruff will going to use frequently updating new repository for parser and relatively stable other components common. It will let Ruff to skip most of RustPython versions.
I don't think it changes much for ruff whether the parser is part of the RustPython or a standalone repository. Either way, it's a dependency that we have limited control over, and contributing to it requires switching to another project. What's important to us is that it can be used standalone. 

Moving the parser out of RustPython and promoting it as a standalone parser may introduce a new tension: How do you plan to balance a stable API vs. progressing the parser? Explaining this as part of a versioning policy may be important. 

 I'm bringing this up because we have some ideas on how to improve Ruff's parser eventually. Some of these improvements will probably benefit everyone but are breaking changes from an API standpoint:

* Publish the AST and parser as separate crates for more fine-grained dependencies and faster compile times. An alternative to this is to allow downstream dependencies to bring their own AST, where the parser only generates events that describe the AST structure.
* Allocating and deallocating nodes takes a considerable amount in Ruff. An arena allocator could reduce the overhead, but comes at the cost of required lifetime annotations.
* Shrinking the node size. I expect this to speedup all programs because IO is slow, and fitting multiple nodes into a single L1 cache line can greatly improve traversal speed. There are multiple options on how to achieve this:
  * Introduce a small-bigint that uses `u64` or `f64` where doing so doesn't result in a loss of precision and fall back to a `Box<BigInt>` for the rare cases where a `BigInt` is necessary (I expect it to be extremely rare to find `BigInt` constants in the source code). 
  * Avoid storing the parsed representation of `String`, `BigInt` etc, and re-parse them on demand (that's what the ZIG compiler and Rome does) .
* Store the locations for every node
* Hand-write the parser for faster compile-time, parse-time, and better diagnostics. 

Other changes are most likely only useful to Ruff or other static-analysis tools:
* CST: Expose syntax trivia like whitespace, newline, and comments. 
* Mutation APIs
* Fully-recoverable parser that supports parsing programs with syntax errors
* Multi-language AST: A unified API for AST nodes from different languages. 
* Embedded languages: For example, Python code in a markdown file. 
* Docstring parsing

We don't have any specific plans on if, when or which of these features we want to pursue. I wanted to bring this up for you to decide how you want to position the `RustPython` parser and give you a heads up that ruff may, eventually, decide to roll their own parser (because the AST is a core infrastructure).

I don't have specific plan about features, but the key idea is separating parser and other parts of RustPython.

`astral-sh:main` couldn't be merged into upstream because it breaks RustPython build. If the parser respository is separated, we can enhance parser first and let RustPython follows it later.

I'd like to share the new repositories' ownership with major stakeholders. I hope it can helps the concern about limited controls. Currently RustPython is upstream and other stakeholders as downstream. With the new repository, everybody will be downstream. We will have more motivation to have fine-grained dependencies and features as downstream.

I hope we just can enhance our poor ast design, but adding a customizable ast feature also could be one of the answer.
for BigInt we are adapting it to malachite witch has small-int optimize internally.
> I hope we just can enhance our poor ast design, but adding a customizable ast feature also could be one of the answer.

I'm sorry if that's what came across. I only wanted to say that different tools may have different requirements and may, therefore, decide to model the AST differently. RustPython's AST isn't poorly designed and is a great fit for many tools. 

> I'd like to share the new repositories' ownership with major stakeholders. I hope it can helps the concern about limited controls. Currently RustPython is upstream and other stakeholders as downstream. With the new repository, everybody will be downstream. We will have more motivation to have fine-grained dependencies and features as downstream.

That makes sense to me and would be beneficial for Ruff :) 

What do you think about CPython API compatibility? This has come up in one of my PRs and is not really a concern for Ruff. 
I didn't look them in deep yet. But the rough idea is rust-level ast doesn't necessarily are same as python-level ast.
Our parser and (rust) ast can have more information then what (c)python ast has. And it actually does already a bit.
RustPython can make python compatibility on python side or rust-python transition level.
I hope I have more time to look in it tomorrow.
So I started playing around with the tree sitter rust binding and I think we might switch to that.

The interface isn't as easy to use (have to use their query language) but it supports Python 2, and keeps the door open for us to reuse the architecture for JVM languages and others 

I'll keep my visitor changes around if you want so we can apply them to the new parser crate(s)
@thejcannon Thank you so much! That will be very helpful 😄 I am planning to work on this issue soon.
format/cformat seems reasonable to be placed out of common crate.
Currently they are depending on `BorrowedStr` which is tightly coupled with vm::PyStr. It will require a bit of design works engineering to decouple them from rustpython-vm implementation details.
New repository is created: https://github.com/RustPython/Parser
I created a new team @RustPython/parser and invited @charliermarsh 

@charliermarsh please feel free to add any qualified parser contributors. maybe @MichaReiser ?

Fix patch:
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 731e629f67..45a21e35bb 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -18,10 +18,8 @@ env:
   CARGO_ARGS: --no-default-features --features stdlib,zlib,importlib,encodings,ssl,jit
   NON_WASM_PACKAGES: >-
     -p rustpython-common
-    -p rustpython-compiler-core
     -p rustpython-compiler
     -p rustpython-codegen
-    -p rustpython-parser
     -p rustpython-vm
     -p rustpython-stdlib
     -p rustpython-jit
@@ -105,7 +103,6 @@ jobs:
     env:
       RUST_BACKTRACE: full
     name: Run rust tests
-    needs: lalrpop
     runs-on:  ${{ matrix.os }}
     strategy:
       matrix:
@@ -113,11 +110,6 @@ jobs:
       fail-fast: false
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
       - uses: dtolnay/rust-toolchain@stable
         with:
           components: clippy
@@ -167,16 +159,9 @@ jobs:
   exotic_targets:
     if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
     name: Ensure compilation on various targets
-    needs: lalrpop
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
-
       - uses: dtolnay/rust-toolchain@stable
         with:
           target: i686-unknown-linux-gnu
@@ -239,7 +224,6 @@ jobs:
 
   snippets_cpython:
     if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
-    needs: lalrpop
     env:
       RUST_BACKTRACE: full
     name: Run snippets and cpython tests
@@ -250,12 +234,6 @@ jobs:
       fail-fast: false
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
-
       - uses: dtolnay/rust-toolchain@stable
       - uses: actions/setup-python@v4
         with:
@@ -316,50 +294,11 @@ jobs:
       - name: Check whats_left is not broken
         run: python -I whats_left.py
 
-  lalrpop:
-    if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
-    name: Generate parser with lalrpop
-    strategy:
-      matrix:
-        os: [ubuntu-latest, windows-latest]
-    runs-on:  ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
-      - name: Check if cached generated parser exists
-        id: generated_parser
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "compiler/parser/python.rs"
-      - if: runner.os == 'Windows'
-        name: Force python.lalrpop to be lf  # actions@checkout ignore .gitattributes
-        run: |
-          set file compiler/parser/python.lalrpop; ((Get-Content $file) -join "`n") + "`n" | Set-Content -NoNewline $file
-      - name: Install lalrpop
-        if: steps.generated_parser.outputs.files_exists == 'false'
-        uses: baptiste0928/cargo-install@v2
-        with:
-          crate: lalrpop
-          version: "0.19.9"
-      - name: Run lalrpop
-        if: steps.generated_parser.outputs.files_exists == 'false'
-        run: lalrpop compiler/parser/python.lalrpop
-
   lint:
     name: Check Rust code with rustfmt and clippy
-    needs: lalrpop
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
       - uses: dtolnay/rust-toolchain@stable
         with:
             components: rustfmt, clippy
@@ -372,28 +311,22 @@ jobs:
           python-version: "3.11"
       - name: install ruff
         run: python -m pip install ruff
-      - name: run lint
-        run: ruff extra_tests wasm examples compiler/ast  --exclude='./.*',./Lib,./vm/Lib,./benches/ --select=E9,F63,F7,F82 --show-source
+      - name: run python lint
+        run: ruff extra_tests wasm examples  --exclude='./.*',./Lib,./vm/Lib,./benches/ --select=E9,F63,F7,F82 --show-source
       - name: install prettier
         run: yarn global add prettier && echo "$(yarn global bin)" >>$GITHUB_PATH
       - name: check wasm code with prettier
         # prettier doesn't handle ignore files very well: https://github.com/prettier/prettier/issues/8506
         run: cd wasm && git ls-files -z | xargs -0 prettier --check -u
-      - name: Check update_asdl.sh consistency
-        run: bash scripts/update_asdl.sh && git diff --exit-code
+      # - name: Check update_asdl.sh consistency
+      #   run: bash scripts/update_asdl.sh && git diff --exit-code
 
   miri:
     if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
     name: Run tests under miri
-    needs: lalrpop
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
       - uses: dtolnay/rust-toolchain@master
         with:
             toolchain: nightly
@@ -408,15 +341,9 @@ jobs:
   wasm:
     if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
     name: Check the WASM package and demo
-    needs: lalrpop
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
       - uses: dtolnay/rust-toolchain@stable
 
       - uses: Swatinem/rust-cache@v2
@@ -462,15 +389,9 @@ jobs:
   wasm-wasi:
     if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
     name: Run snippets and cpython tests on wasm-wasi
-    needs: lalrpop
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
-      - name: Cache generated parser
-        uses: actions/cache@v3
-        with:
-          path: compiler/parser/python.rs
-          key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }}
       - uses: dtolnay/rust-toolchain@stable
         with:
           target: wasm32-wasi
diff --git a/Cargo.lock b/Cargo.lock
index f3fd953bdf..e844f5343c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1077,9 +1077,9 @@ dependencies = [
 
 [[package]]
 name = "lalrpop"
-version = "0.19.9"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87"
+checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8"
 dependencies = [
  "ascii-canvas",
  "bit-set",
@@ -1089,9 +1089,8 @@ dependencies = [
  "itertools",
  "lalrpop-util",
  "petgraph",
- "pico-args",
  "regex",
- "regex-syntax",
+ "regex-syntax 0.7.1",
  "string_cache",
  "term",
  "tiny-keccak",
@@ -1100,12 +1099,9 @@ dependencies = [
 
 [[package]]
 name = "lalrpop-util"
-version = "0.19.9"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5c1f7869c94d214466c5fd432dfed12c379fd87786768d36455892d46b18edd"
-dependencies = [
- "regex",
-]
+checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d"
 
 [[package]]
 name = "lazy_static"
@@ -1639,12 +1635,6 @@ dependencies = [
  "siphasher",
 ]
 
-[[package]]
-name = "pico-args"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468"
-
 [[package]]
 name = "pin-utils"
 version = "0.1.0"
@@ -1866,7 +1856,7 @@ checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax",
+ "regex-syntax 0.6.28",
 ]
 
 [[package]]
@@ -1881,6 +1871,12 @@ version = "0.6.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
 
+[[package]]
+name = "regex-syntax"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c"
+
 [[package]]
 name = "region"
 version = "2.2.0"
@@ -1971,6 +1967,7 @@ dependencies = [
 [[package]]
 name = "rustpython-ast"
 version = "0.2.0"
+source = "git+https://github.com/RustPython/Parser.git?rev=6b60f85cc4ca248af9b787697c41be2adb7a3ec8#6b60f85cc4ca248af9b787697c41be2adb7a3ec8"
 dependencies = [
  "num-bigint",
  "rustpython-compiler-core",
@@ -2030,6 +2027,7 @@ dependencies = [
 [[package]]
 name = "rustpython-compiler-core"
 version = "0.2.0"
+source = "git+https://github.com/RustPython/Parser.git?rev=6b60f85cc4ca248af9b787697c41be2adb7a3ec8#6b60f85cc4ca248af9b787697c41be2adb7a3ec8"
 dependencies = [
  "bitflags",
  "bstr",
@@ -2037,7 +2035,6 @@ dependencies = [
  "lz4_flex",
  "num-bigint",
  "num-complex",
- "serde",
 ]
 
 [[package]]
@@ -2092,21 +2089,21 @@ dependencies = [
 [[package]]
 name = "rustpython-literal"
 version = "0.2.0"
+source = "git+https://github.com/RustPython/Parser.git?rev=6b60f85cc4ca248af9b787697c41be2adb7a3ec8#6b60f85cc4ca248af9b787697c41be2adb7a3ec8"
 dependencies = [
  "hexf-parse",
  "lexical-parse-float",
  "num-traits",
- "rand",
  "unic-ucd-category",
 ]
 
 [[package]]
 name = "rustpython-parser"
 version = "0.2.0"
+source = "git+https://github.com/RustPython/Parser.git?rev=6b60f85cc4ca248af9b787697c41be2adb7a3ec8#6b60f85cc4ca248af9b787697c41be2adb7a3ec8"
 dependencies = [
  "ahash",
  "anyhow",
- "insta",
  "itertools",
  "lalrpop",
  "lalrpop-util",
@@ -2118,7 +2115,6 @@ dependencies = [
  "rustc-hash",
  "rustpython-ast",
  "rustpython-compiler-core",
- "serde",
  "tiny-keccak",
  "unic-emoji-char",
  "unic-ucd-ident",
diff --git a/Cargo.toml b/Cargo.toml
index 31056168c4..4428fa44ff 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,16 +12,24 @@ include = ["LICENSE", "Cargo.toml", "src/**/*.rs"]
 [workspace]
 resolver = "2"
 members = [
-    "compiler", "compiler/ast", "compiler/core", "compiler/literal", "compiler/codegen", "compiler/parser",
+    "compiler", "compiler/codegen",
     ".", "common", "derive", "jit", "vm", "pylib", "stdlib", "wasm/lib", "derive-impl",
 ]
 
 [workspace.dependencies]
+rustpython-literal = { git = "https://github.com/RustPython/Parser.git", rev = "6b60f85cc4ca248af9b787697c41be2adb7a3ec8" }
+rustpython-compiler-core = { git = "https://github.com/RustPython/Parser.git", rev = "6b60f85cc4ca248af9b787697c41be2adb7a3ec8" }
+rustpython-parser = { git = "https://github.com/RustPython/Parser.git", rev = "6b60f85cc4ca248af9b787697c41be2adb7a3ec8" }
+rustpython-ast = { git = "https://github.com/RustPython/Parser.git", rev = "6b60f85cc4ca248af9b787697c41be2adb7a3ec8" }
+# rustpython-literal = { path = "../RustPython-parser/literal" }
+# rustpython-compiler-core = { path = "../RustPython-parser/core" }
+# rustpython-parser = { path = "../RustPython-parser/parser" }
+# rustpython-ast = { path = "../RustPython-parser/ast" }
+
 ahash = "0.7.6"
 anyhow = "1.0.45"
 ascii = "1.0"
 atty = "0.2.14"
-bincode = "1.3.3"
 bitflags = "1.3.2"
 bstr = "0.2.17"
 cfg-if = "1.0"
@@ -72,11 +80,12 @@ ssl-vendor = ["rustpython-stdlib/ssl-vendor"]
 
 [dependencies]
 rustpython-compiler = { path = "compiler", version = "0.2.0" }
-rustpython-parser = { path = "compiler/parser", version = "0.2.0" }
 rustpython-pylib = { path = "pylib", optional = true, default-features = false }
 rustpython-stdlib = { path = "stdlib", optional = true, default-features = false }
 rustpython-vm = { path = "vm", version = "0.2.0", default-features = false, features = ["compiler"] }
 
+rustpython-parser = { workspace = true }
+
 atty = { workspace = true }
 cfg-if = { workspace = true }
 log = { workspace = true }
diff --git a/common/Cargo.toml b/common/Cargo.toml
index 7395f2e08c..f358b37ab6 100644
--- a/common/Cargo.toml
+++ b/common/Cargo.toml
@@ -11,7 +11,7 @@ license = "MIT"
 threading = ["parking_lot"]
 
 [dependencies]
-rustpython-literal = { path = "../compiler/literal" }
+rustpython-literal = { workspace = true }
 
 ascii = { workspace = true }
 bitflags = { workspace = true }
diff --git a/compiler/Cargo.toml b/compiler/Cargo.toml
index ff6ea77508..22c182fafb 100644
--- a/compiler/Cargo.toml
+++ b/compiler/Cargo.toml
@@ -6,6 +6,6 @@ authors = ["RustPython Team"]
 edition = "2021"
 
 [dependencies]
-rustpython-compiler-core = { path = "core" }
 rustpython-codegen = { path = "codegen" }
-rustpython-parser = { path = "parser" }
+rustpython-compiler-core = { workspace = true }
+rustpython-parser = { workspace = true }
diff --git a/compiler/ast/Cargo.toml b/compiler/ast/Cargo.toml
deleted file mode 100644
index 5de211dd72..0000000000
--- a/compiler/ast/Cargo.toml
+++ /dev/null
@@ -1,20 +0,0 @@
-[package]
-name = "rustpython-ast"
-version = "0.2.0"
-description = "AST definitions for RustPython"
-authors = ["RustPython Team"]
-edition = "2021"
-repository = "https://github.com/RustPython/RustPython"
-license = "MIT"
-
-[features]
-default = ["constant-optimization", "fold"]
-constant-optimization = ["fold"]
-fold = []
-unparse = ["rustpython-literal"]
-
-[dependencies]
-rustpython-compiler-core = { path = "../core", version = "0.2.0" }
-rustpython-literal = { path = "../literal", version = "0.2.0", optional = true }
-
-num-bigint = { workspace = true }
diff --git a/compiler/ast/Python.asdl b/compiler/ast/Python.asdl
deleted file mode 100644
index e9423a7c98..0000000000
--- a/compiler/ast/Python.asdl
+++ /dev/null
@@ -1,145 +0,0 @@
--- ASDL's 4 builtin types are:
--- identifier, int, string, constant
-
-module Python
-{
-    mod = Module(stmt* body, type_ignore* type_ignores)
-        | Interactive(stmt* body)
-        | Expression(expr body)
-        | FunctionType(expr* argtypes, expr returns)
-
-    stmt = FunctionDef(identifier name, arguments args,
-                       stmt* body, expr* decorator_list, expr? returns,
-                       string? type_comment)
-          | AsyncFunctionDef(identifier name, arguments args,
-                             stmt* body, expr* decorator_list, expr? returns,
-                             string? type_comment)
-
-          | ClassDef(identifier name,
-             expr* bases,
-             keyword* keywords,
-             stmt* body,
-             expr* decorator_list)
-          | Return(expr? value)
-
-          | Delete(expr* targets)
-          | Assign(expr* targets, expr value, string? type_comment)
-          | AugAssign(expr target, operator op, expr value)
-          -- 'simple' indicates that we annotate simple name without parens
-          | AnnAssign(expr target, expr annotation, expr? value, int simple)
-
-          -- use 'orelse' because else is a keyword in target languages
-          | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)
-          | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)
-          | While(expr test, stmt* body, stmt* orelse)
-          | If(expr test, stmt* body, stmt* orelse)
-          | With(withitem* items, stmt* body, string? type_comment)
-          | AsyncWith(withitem* items, stmt* body, string? type_comment)
-
-          | Match(expr subject, match_case* cases)
-
-          | Raise(expr? exc, expr? cause)
-          | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)
-          | TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)
-          | Assert(expr test, expr? msg)
-
-          | Import(alias* names)
-          | ImportFrom(identifier? module, alias* names, int? level)
-
-          | Global(identifier* names)
-          | Nonlocal(identifier* names)
-          | Expr(expr value)
-          | Pass | Break | Continue
-
-          -- col_offset is the byte offset in the utf8 string the parser uses
-          attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
-
-          -- BoolOp() can use left & right?
-    expr = BoolOp(boolop op, expr* values)
-         | NamedExpr(expr target, expr value)
-         | BinOp(expr left, operator op, expr right)
-         | UnaryOp(unaryop op, expr operand)
-         | Lambda(arguments args, expr body)
-         | IfExp(expr test, expr body, expr orelse)
-         | Dict(expr* keys, expr* values)
-         | Set(expr* elts)
-         | ListComp(expr elt, comprehension* generators)
-         | SetComp(expr elt, comprehension* generators)
-         | DictComp(expr key, expr value, comprehension* generators)
-         | GeneratorExp(expr elt, comprehension* generators)
-         -- the grammar constrains where yield expressions can occur
-         | Await(expr value)
-         | Yield(expr? value)
-         | YieldFrom(expr value)
-         -- need sequences for compare to distinguish between
-         -- x < 4 < 3 and (x < 4) < 3
-         | Compare(expr left, cmpop* ops, expr* comparators)
-         | Call(expr func, expr* args, keyword* keywords)
-         | FormattedValue(expr value, int conversion, expr? format_spec)
-         | JoinedStr(expr* values)
-         | Constant(constant value, string? kind)
-
-         -- the following expression can appear in assignment context
-         | Attribute(expr value, identifier attr, expr_context ctx)
-         | Subscript(expr value, expr slice, expr_context ctx)
-         | Starred(expr value, expr_context ctx)
-         | Name(identifier id, expr_context ctx)
-         | List(expr* elts, expr_context ctx)
-         | Tuple(expr* elts, expr_context ctx)
-
-         -- can appear only in Subscript
-         | Slice(expr? lower, expr? upper, expr? step)
-
-          -- col_offset is the byte offset in the utf8 string the parser uses
-          attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
-
-    expr_context = Load | Store | Del
-
-    boolop = And | Or
-
-    operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift
-                 | RShift | BitOr | BitXor | BitAnd | FloorDiv
-
-    unaryop = Invert | Not | UAdd | USub
-
-    cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn
-
-    comprehension = (expr target, expr iter, expr* ifs, int is_async)
-
-    excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body)
-                    attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
-
-    arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs,
-                 expr* kw_defaults, arg? kwarg, expr* defaults)
-
-    arg = (identifier arg, expr? annotation, string? type_comment)
-           attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
-
-    -- keyword arguments supplied to call (NULL identifier for **kwargs)
-    keyword = (identifier? arg, expr value)
-               attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
-
-    -- import name with optional 'as' alias.
-    alias = (identifier name, identifier? asname)
-             attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
-
-    withitem = (expr context_expr, expr? optional_vars)
-
-    match_case = (pattern pattern, expr? guard, stmt* body)
-
-    pattern = MatchValue(expr value)
-            | MatchSingleton(constant value)
-            | MatchSequence(pattern* patterns)
-            | MatchMapping(expr* keys, pattern* patterns, identifier? rest)
-            | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns)
-
-            | MatchStar(identifier? name)
-            -- The optional "rest" MatchMapping parameter handles capturing extra mapping keys
-
-            | MatchAs(pattern? pattern, identifier? name)
-            | MatchOr(pattern* patterns)
-
-             attributes (int lineno, int col_offset, int end_lineno, int end_col_offset)
-
-    type_ignore = TypeIgnore(int lineno, string tag)
-}
diff --git a/compiler/ast/asdl.py b/compiler/ast/asdl.py
deleted file mode 100644
index e3e6c34d2a..0000000000
--- a/compiler/ast/asdl.py
+++ /dev/null
@@ -1,385 +0,0 @@
-#-------------------------------------------------------------------------------
-# Parser for ASDL [1] definition files. Reads in an ASDL description and parses
-# it into an AST that describes it.
-#
-# The EBNF we're parsing here: Figure 1 of the paper [1]. Extended to support
-# modules and attributes after a product. Words starting with Capital letters
-# are terminals. Literal tokens are in "double quotes". Others are
-# non-terminals. Id is either TokenId or ConstructorId.
-#
-# module        ::= "module" Id "{" [definitions] "}"
-# definitions   ::= { TypeId "=" type }
-# type          ::= product | sum
-# product       ::= fields ["attributes" fields]
-# fields        ::= "(" { field, "," } field ")"
-# field         ::= TypeId ["?" | "*"] [Id]
-# sum           ::= constructor { "|" constructor } ["attributes" fields]
-# constructor   ::= ConstructorId [fields]
-#
-# [1] "The Zephyr Abstract Syntax Description Language" by Wang, et. al. See
-#     http://asdl.sourceforge.net/
-#-------------------------------------------------------------------------------
-from collections import namedtuple
-import re
-
-__all__ = [
-    'builtin_types', 'parse', 'AST', 'Module', 'Type', 'Constructor',
-    'Field', 'Sum', 'Product', 'VisitorBase', 'Check', 'check']
-
-# The following classes define nodes into which the ASDL description is parsed.
-# Note: this is a "meta-AST". ASDL files (such as Python.asdl) describe the AST
-# structure used by a programming language. But ASDL files themselves need to be
-# parsed. This module parses ASDL files and uses a simple AST to represent them.
-# See the EBNF at the top of the file to understand the logical connection
-# between the various node types.
-
-builtin_types = {'identifier', 'string', 'int', 'constant'}
-
-class AST:
-    def __repr__(self):
-        raise NotImplementedError
-
-class Module(AST):
-    def __init__(self, name, dfns):
-        self.name = name
-        self.dfns = dfns
-        self.types = {type.name: type.value for type in dfns}
-
-    def __repr__(self):
-        return 'Module({0.name}, {0.dfns})'.format(self)
-
-class Type(AST):
-    def __init__(self, name, value):
-        self.name = name
-        self.value = value
-
-    def __repr__(self):
-        return 'Type({0.name}, {0.value})'.format(self)
-
-class Constructor(AST):
-    def __init__(self, name, fields=None):
-        self.name = name
-        self.fields = fields or []
-
-    def __repr__(self):
-        return 'Constructor({0.name}, {0.fields})'.format(self)
-
-class Field(AST):
-    def __init__(self, type, name=None, seq=False, opt=False):
-        self.type = type
-        self.name = name
-        self.seq = seq
-        self.opt = opt
-
-    def __str__(self):
-        if self.seq:
-            extra = "*"
-        elif self.opt:
-            extra = "?"
-        else:
-            extra = ""
-
-        return "{}{} {}".format(self.type, extra, self.name)
-
-    def __repr__(self):
-        if self.seq:
-            extra = ", seq=True"
-        elif self.opt:
-            extra = ", opt=True"
-        else:
-            extra = ""
-        if self.name is None:
-            return 'Field({0.type}{1})'.format(self, extra)
-        else:
-            return 'Field({0.type}, {0.name}{1})'.format(self, extra)
-
-class Sum(AST):
-    def __init__(self, types, attributes=None):
-        self.types = types
-        self.attributes = attributes or []
-
-    def __repr__(self):
-        if self.attributes:
-            return 'Sum({0.types}, {0.attributes})'.format(self)
-        else:
-            return 'Sum({0.types})'.format(self)
-
-class Product(AST):
-    def __init__(self, fields, attributes=None):
-        self.fields = fields
-        self.attributes = attributes or []
-
-    def __repr__(self):
-        if self.attributes:
-            return 'Product({0.fields}, {0.attributes})'.format(self)
-        else:
-            return 'Product({0.fields})'.format(self)
-
-# A generic visitor for the meta-AST that describes ASDL. This can be used by
-# emitters. Note that this visitor does not provide a generic visit method, so a
-# subclass needs to define visit methods from visitModule to as deep as the
-# interesting node.
-# We also define a Check visitor that makes sure the parsed ASDL is well-formed.
-
-class VisitorBase(object):
-    """Generic tree visitor for ASTs."""
-    def __init__(self):
-        self.cache = {}
-
-    def visit(self, obj, *args):
-        klass = obj.__class__
-        meth = self.cache.get(klass)
-        if meth is None:
-            methname = "visit" + klass.__name__
-            meth = getattr(self, methname, None)
-            self.cache[klass] = meth
-        if meth:
-            try:
-                meth(obj, *args)
-            except Exception as e:
-                print("Error visiting %r: %s" % (obj, e))
-                raise
-
-class Check(VisitorBase):
-    """A visitor that checks a parsed ASDL tree for correctness.
-
-    Errors are printed and accumulated.
-    """
-    def __init__(self):
-        super(Check, self).__init__()
-        self.cons = {}
-        self.errors = 0
-        self.types = {}
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type):
-        self.visit(type.value, str(type.name))
-
-    def visitSum(self, sum, name):
-        for t in sum.types:
-            self.visit(t, name)
-
-    def visitConstructor(self, cons, name):
-        key = str(cons.name)
-        conflict = self.cons.get(key)
-        if conflict is None:
-            self.cons[key] = name
-        else:
-            print('Redefinition of constructor {}'.format(key))
-            print('Defined in {} and {}'.format(conflict, name))
-            self.errors += 1
-        for f in cons.fields:
-            self.visit(f, key)
-
-    def visitField(self, field, name):
-        key = str(field.type)
-        l = self.types.setdefault(key, [])
-        l.append(name)
-
-    def visitProduct(self, prod, name):
-        for f in prod.fields:
-            self.visit(f, name)
-
-def check(mod):
-    """Check the parsed ASDL tree for correctness.
-
-    Return True if success. For failure, the errors are printed out and False
-    is returned.
-    """
-    v = Check()
-    v.visit(mod)
-
-    for t in v.types:
-        if t not in mod.types and not t in builtin_types:
-            v.errors += 1
-            uses = ", ".join(v.types[t])
-            print('Undefined type {}, used in {}'.format(t, uses))
-    return not v.errors
-
-# The ASDL parser itself comes next. The only interesting external interface
-# here is the top-level parse function.
-
-def parse(filename):
-    """Parse ASDL from the given file and return a Module node describing it."""
-    with open(filename, encoding="utf-8") as f:
-        parser = ASDLParser()
-        return parser.parse(f.read())
-
-# Types for describing tokens in an ASDL specification.
-class TokenKind:
-    """TokenKind is provides a scope for enumerated token kinds."""
-    (ConstructorId, TypeId, Equals, Comma, Question, Pipe, Asterisk,
-     LParen, RParen, LBrace, RBrace) = range(11)
-
-    operator_table = {
-        '=': Equals, ',': Comma,    '?': Question, '|': Pipe,    '(': LParen,
-        ')': RParen, '*': Asterisk, '{': LBrace,   '}': RBrace}
-
-Token = namedtuple('Token', 'kind value lineno')
-
-class ASDLSyntaxError(Exception):
-    def __init__(self, msg, lineno=None):
-        self.msg = msg
-        self.lineno = lineno or '<unknown>'
-
-    def __str__(self):
-        return 'Syntax error on line {0.lineno}: {0.msg}'.format(self)
-
-def tokenize_asdl(buf):
-    """Tokenize the given buffer. Yield Token objects."""
-    for lineno, line in enumerate(buf.splitlines(), 1):
-        for m in re.finditer(r'\s*(\w+|--.*|.)', line.strip()):
-            c = m.group(1)
-            if c[0].isalpha():
-                # Some kind of identifier
-                if c[0].isupper():
-                    yield Token(TokenKind.ConstructorId, c, lineno)
-                else:
-                    yield Token(TokenKind.TypeId, c, lineno)
-            elif c[:2] == '--':
-                # Comment
-                break
-            else:
-                # Operators
-                try:
-                    op_kind = TokenKind.operator_table[c]
-                except KeyError:
-                    raise ASDLSyntaxError('Invalid operator %s' % c, lineno)
-                yield Token(op_kind, c, lineno)
-
-class ASDLParser:
-    """Parser for ASDL files.
-
-    Create, then call the parse method on a buffer containing ASDL.
-    This is a simple recursive descent parser that uses tokenize_asdl for the
-    lexing.
-    """
-    def __init__(self):
-        self._tokenizer = None
-        self.cur_token = None
-
-    def parse(self, buf):
-        """Parse the ASDL in the buffer and return an AST with a Module root.
-        """
-        self._tokenizer = tokenize_asdl(buf)
-        self._advance()
-        return self._parse_module()
-
-    def _parse_module(self):
-        if self._at_keyword('module'):
-            self._advance()
-        else:
-            raise ASDLSyntaxError(
-                'Expected "module" (found {})'.format(self.cur_token.value),
-                self.cur_token.lineno)
-        name = self._match(self._id_kinds)
-        self._match(TokenKind.LBrace)
-        defs = self._parse_definitions()
-        self._match(TokenKind.RBrace)
-        return Module(name, defs)
-
-    def _parse_definitions(self):
-        defs = []
-        while self.cur_token.kind == TokenKind.TypeId:
-            typename = self._advance()
-            self._match(TokenKind.Equals)
-            type = self._parse_type()
-            defs.append(Type(typename, type))
-        return defs
-
-    def _parse_type(self):
-        if self.cur_token.kind == TokenKind.LParen:
-            # If we see a (, it's a product
-            return self._parse_product()
-        else:
-            # Otherwise it's a sum. Look for ConstructorId
-            sumlist = [Constructor(self._match(TokenKind.ConstructorId),
-                                   self._parse_optional_fields())]
-            while self.cur_token.kind  == TokenKind.Pipe:
-                # More constructors
-                self._advance()
-                sumlist.append(Constructor(
-                                self._match(TokenKind.ConstructorId),
-                                self._parse_optional_fields()))
-            return Sum(sumlist, self._parse_optional_attributes())
-
-    def _parse_product(self):
-        return Product(self._parse_fields(), self._parse_optional_attributes())
-
-    def _parse_fields(self):
-        fields = []
-        self._match(TokenKind.LParen)
-        while self.cur_token.kind == TokenKind.TypeId:
-            typename = self._advance()
-            is_seq, is_opt = self._parse_optional_field_quantifier()
-            id = (self._advance() if self.cur_token.kind in self._id_kinds
-                                  else None)
-            fields.append(Field(typename, id, seq=is_seq, opt=is_opt))
-            if self.cur_token.kind == TokenKind.RParen:
-                break
-            elif self.cur_token.kind == TokenKind.Comma:
-                self._advance()
-        self._match(TokenKind.RParen)
-        return fields
-
-    def _parse_optional_fields(self):
-        if self.cur_token.kind == TokenKind.LParen:
-            return self._parse_fields()
-        else:
-            return None
-
-    def _parse_optional_attributes(self):
-        if self._at_keyword('attributes'):
-            self._advance()
-            return self._parse_fields()
-        else:
-            return None
-
-    def _parse_optional_field_quantifier(self):
-        is_seq, is_opt = False, False
-        if self.cur_token.kind == TokenKind.Asterisk:
-            is_seq = True
-            self._advance()
-        elif self.cur_token.kind == TokenKind.Question:
-            is_opt = True
-            self._advance()
-        return is_seq, is_opt
-
-    def _advance(self):
-        """ Return the value of the current token and read the next one into
-            self.cur_token.
-        """
-        cur_val = None if self.cur_token is None else self.cur_token.value
-        try:
-            self.cur_token = next(self._tokenizer)
-        except StopIteration:
-            self.cur_token = None
-        return cur_val
-
-    _id_kinds = (TokenKind.ConstructorId, TokenKind.TypeId)
-
-    def _match(self, kind):
-        """The 'match' primitive of RD parsers.
-
-        * Verifies that the current token is of the given kind (kind can
-          be a tuple, in which the kind must match one of its members).
-        * Returns the value of the current token
-        * Reads in the next token
-        """
-        if (isinstance(kind, tuple) and self.cur_token.kind in kind or
-            self.cur_token.kind == kind
-            ):
-            value = self.cur_token.value
-            self._advance()
-            return value
-        else:
-            raise ASDLSyntaxError(
-                'Unmatched {} (found {})'.format(kind, self.cur_token.kind),
-                self.cur_token.lineno)
-
-    def _at_keyword(self, keyword):
-        return (self.cur_token.kind == TokenKind.TypeId and
-                self.cur_token.value == keyword)
diff --git a/compiler/ast/asdl_rs.py b/compiler/ast/asdl_rs.py
deleted file mode 100755
index c9b819dae2..0000000000
--- a/compiler/ast/asdl_rs.py
+++ /dev/null
@@ -1,749 +0,0 @@
-#! /usr/bin/env python
-"""Generate Rust code from an ASDL description."""
-
-import sys
-import json
-import textwrap
-
-from argparse import ArgumentParser
-from pathlib import Path
-
-import asdl
-
-TABSIZE = 4
-AUTOGEN_MESSAGE = "// File automatically generated by {}.\n"
-
-builtin_type_mapping = {
-    "identifier": "Ident",
-    "string": "String",
-    "int": "usize",
-    "constant": "Constant",
-}
-assert builtin_type_mapping.keys() == asdl.builtin_types
-
-
-def get_rust_type(name):
-    """Return a string for the C name of the type.
-
-    This function special cases the default types provided by asdl.
-    """
-    if name in asdl.builtin_types:
-        return builtin_type_mapping[name]
-    elif name.islower():
-        return "".join(part.capitalize() for part in name.split("_"))
-    else:
-        return name
-
-
-def is_simple(sum):
-    """Return True if a sum is a simple.
-
-    A sum is simple if its types have no fields, e.g.
-    unaryop = Invert | Not | UAdd | USub
-    """
-    for t in sum.types:
-        if t.fields:
-            return False
-    return True
-
-
-def asdl_of(name, obj):
-    if isinstance(obj, asdl.Product) or isinstance(obj, asdl.Constructor):
-        fields = ", ".join(map(str, obj.fields))
-        if fields:
-            fields = "({})".format(fields)
-        return "{}{}".format(name, fields)
-    else:
-        if is_simple(obj):
-            types = " | ".join(type.name for type in obj.types)
-        else:
-            sep = "\n{}| ".format(" " * (len(name) + 1))
-            types = sep.join(asdl_of(type.name, type) for type in obj.types)
-        return "{} = {}".format(name, types)
-
-
-class EmitVisitor(asdl.VisitorBase):
-    """Visit that emits lines"""
-
-    def __init__(self, file):
-        self.file = file
-        self.identifiers = set()
-        super(EmitVisitor, self).__init__()
-
-    def emit_identifier(self, name):
-        name = str(name)
-        if name in self.identifiers:
-            return
-        self.emit("_Py_IDENTIFIER(%s);" % name, 0)
-        self.identifiers.add(name)
-
-    def emit(self, line, depth):
-        if line:
-            line = (" " * TABSIZE * depth) + line
-        self.file.write(line + "\n")
-
-
-class TypeInfo:
-    def __init__(self, name):
-        self.name = name
-        self.has_userdata = None
-        self.children = set()
-        self.boxed = False
-        self.product = False
-
-    def __repr__(self):
-        return f"<TypeInfo: {self.name}>"
-
-    def determine_userdata(self, typeinfo, stack):
-        if self.name in stack:
-            return None
-        stack.add(self.name)
-        for child, child_seq in self.children:
-            if child in asdl.builtin_types:
-                continue
-            childinfo = typeinfo[child]
-            child_has_userdata = childinfo.determine_userdata(typeinfo, stack)
-            if self.has_userdata is None and child_has_userdata is True:
-                self.has_userdata = True
-
-        stack.remove(self.name)
-        return self.has_userdata
-
-
-class FindUserdataTypesVisitor(asdl.VisitorBase):
-    def __init__(self, typeinfo):
-        self.typeinfo = typeinfo
-        super().__init__()
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-        stack = set()
-        for info in self.typeinfo.values():
-            info.determine_userdata(self.typeinfo, stack)
-
-    def visitType(self, type):
-        self.typeinfo[type.name] = TypeInfo(type.name)
-        self.visit(type.value, type.name)
-
-    def visitSum(self, sum, name):
-        info = self.typeinfo[name]
-        if is_simple(sum):
-            info.has_userdata = False
-        else:
-            if len(sum.types) > 1:
-                info.boxed = True
-            if sum.attributes:
-                # attributes means Located, which has the `custom: U` field
-                info.has_userdata = True
-        for variant in sum.types:
-            self.add_children(name, variant.fields)
-
-    def visitProduct(self, product, name):
-        info = self.typeinfo[name]
-        if product.attributes:
-            # attributes means Located, which has the `custom: U` field
-            info.has_userdata = True
-        if len(product.fields) > 2:
-            info.boxed = True
-        info.product = True
-        self.add_children(name, product.fields)
-
-    def add_children(self, name, fields):
-        self.typeinfo[name].children.update((field.type, field.seq) for field in fields)
-
-
-def rust_field(field_name):
-    if field_name == "type":
-        return "type_"
-    else:
-        return field_name
-
-
-class TypeInfoEmitVisitor(EmitVisitor):
-    def __init__(self, file, typeinfo):
-        self.typeinfo = typeinfo
-        super().__init__(file)
-
-    def has_userdata(self, typ):
-        return self.typeinfo[typ].has_userdata
-
-    def get_generics(self, typ, *generics):
-        if self.has_userdata(typ):
-            return [f"<{g}>" for g in generics]
-        else:
-            return ["" for g in generics]
-
-
-class StructVisitor(TypeInfoEmitVisitor):
-    """Visitor to generate typedefs for AST."""
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type, depth=0):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        if is_simple(sum):
-            self.simple_sum(sum, name, depth)
-        else:
-            self.sum_with_constructors(sum, name, depth)
-
-    def emit_attrs(self, depth):
-        self.emit("#[derive(Clone, Debug, PartialEq)]", depth)
-
-    def simple_sum(self, sum, name, depth):
-        rustname = get_rust_type(name)
-        self.emit_attrs(depth)
-        self.emit(f"pub enum {rustname} {{", depth)
-        for variant in sum.types:
-            self.emit(f"{variant.name},", depth + 1)
-        self.emit("}", depth)
-        self.emit("", depth)
-
-    def sum_with_constructors(self, sum, name, depth):
-        typeinfo = self.typeinfo[name]
-        generics, generics_applied = self.get_generics(name, "U = ()", "U")
-        enumname = rustname = get_rust_type(name)
-        # all the attributes right now are for location, so if it has attrs we
-        # can just wrap it in Located<>
-        if sum.attributes:
-            enumname = rustname + "Kind"
-        self.emit_attrs(depth)
-        self.emit(f"pub enum {enumname}{generics} {{", depth)
-        for t in sum.types:
-            self.visit(t, typeinfo, depth + 1)
-        self.emit("}", depth)
-        if sum.attributes:
-            self.emit(
-                f"pub type {rustname}<U = ()> = Located<{enumname}{generics_applied}, U>;",
-                depth,
-            )
-        self.emit("", depth)
-
-    def visitConstructor(self, cons, parent, depth):
-        if cons.fields:
-            self.emit(f"{cons.name} {{", depth)
-            for f in cons.fields:
-                self.visit(f, parent, "", depth + 1, cons.name)
-            self.emit("},", depth)
-        else:
-            self.emit(f"{cons.name},", depth)
-
-    def visitField(self, field, parent, vis, depth, constructor=None):
-        typ = get_rust_type(field.type)
-        fieldtype = self.typeinfo.get(field.type)
-        if fieldtype and fieldtype.has_userdata:
-            typ = f"{typ}<U>"
-        # don't box if we're doing Vec<T>, but do box if we're doing Vec<Option<Box<T>>>
-        if fieldtype and fieldtype.boxed and (not (parent.product or field.seq) or field.opt):
-            typ = f"Box<{typ}>"
-        if field.opt or (
-            # When a dictionary literal contains dictionary unpacking (e.g., `{**d}`),
-            # the expression to be unpacked goes in `values` with a `None` at the corresponding
-            # position in `keys`. To handle this, the type of `keys` needs to be `Option<Vec<T>>`.
-            constructor == "Dict" and field.name == "keys"
-        ):
-            typ = f"Option<{typ}>"
-        if field.seq:
-            typ = f"Vec<{typ}>"
-        name = rust_field(field.name)
-        self.emit(f"{vis}{name}: {typ},", depth)
-
-    def visitProduct(self, product, name, depth):
-        typeinfo = self.typeinfo[name]
-        generics, generics_applied = self.get_generics(name, "U = ()", "U")
-        dataname = rustname = get_rust_type(name)
-        if product.attributes:
-            dataname = rustname + "Data"
-        self.emit_attrs(depth)
-        has_expr = any(f.type != "identifier" for f in product.fields)
-        if has_expr:
-            datadef = f"{dataname}{generics}"
-        else:
-            datadef = dataname
-        self.emit(f"pub struct {datadef} {{", depth)
-        for f in product.fields:
-            self.visit(f, typeinfo, "pub ", depth + 1)
-        self.emit("}", depth)
-        if product.attributes:
-            # attributes should just be location info
-            if not has_expr:
-                generics_applied = ""
-            self.emit(
-                f"pub type {rustname}<U = ()> = Located<{dataname}{generics_applied}, U>;",
-                depth,
-            )
-        self.emit("", depth)
-
-
-class FoldTraitDefVisitor(TypeInfoEmitVisitor):
-    def visitModule(self, mod, depth):
-        self.emit("pub trait Fold<U> {", depth)
-        self.emit("type TargetU;", depth + 1)
-        self.emit("type Error;", depth + 1)
-        self.emit(
-            "fn map_user(&mut self, user: U) -> Result<Self::TargetU, Self::Error>;",
-            depth + 2,
-        )
-        for dfn in mod.dfns:
-            self.visit(dfn, depth + 2)
-        self.emit("}", depth)
-
-    def visitType(self, type, depth):
-        name = type.name
-        apply_u, apply_target_u = self.get_generics(name, "U", "Self::TargetU")
-        enumname = get_rust_type(name)
-        self.emit(
-            f"fn fold_{name}(&mut self, node: {enumname}{apply_u}) -> Result<{enumname}{apply_target_u}, Self::Error> {{",
-            depth,
-        )
-        self.emit(f"fold_{name}(self, node)", depth + 1)
-        self.emit("}", depth)
-
-
-class FoldImplVisitor(TypeInfoEmitVisitor):
-    def visitModule(self, mod, depth):
-        self.emit(
-            "fn fold_located<U, F: Fold<U> + ?Sized, T, MT>(folder: &mut F, node: Located<T, U>, f: impl FnOnce(&mut F, T) -> Result<MT, F::Error>) -> Result<Located<MT, F::TargetU>, F::Error> {",
-            depth,
-        )
-        self.emit(
-            "Ok(Located { custom: folder.map_user(node.custom)?, location: node.location, end_location: node.end_location, node: f(folder, node.node)? })",
-            depth + 1,
-        )
-        self.emit("}", depth)
-        for dfn in mod.dfns:
-            self.visit(dfn, depth)
-
-    def visitType(self, type, depth=0):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        apply_t, apply_u, apply_target_u = self.get_generics(
-            name, "T", "U", "F::TargetU"
-        )
-        enumname = get_rust_type(name)
-        is_located = bool(sum.attributes)
-
-        self.emit(f"impl<T, U> Foldable<T, U> for {enumname}{apply_t} {{", depth)
-        self.emit(f"type Mapped = {enumname}{apply_u};", depth + 1)
-        self.emit(
-            "fn fold<F: Fold<T, TargetU = U> + ?Sized>(self, folder: &mut F) -> Result<Self::Mapped, F::Error> {",
-            depth + 1,
-        )
-        self.emit(f"folder.fold_{name}(self)", depth + 2)
-        self.emit("}", depth + 1)
-        self.emit("}", depth)
-
-        self.emit(
-            f"pub fn fold_{name}<U, F: Fold<U> + ?Sized>(#[allow(unused)] folder: &mut F, node: {enumname}{apply_u}) -> Result<{enumname}{apply_target_u}, F::Error> {{",
-            depth,
-        )
-        if is_located:
-            self.emit("fold_located(folder, node, |folder, node| {", depth)
-            enumname += "Kind"
-        self.emit("match node {", depth + 1)
-        for cons in sum.types:
-            fields_pattern = self.make_pattern(cons.fields)
-            self.emit(
-                f"{enumname}::{cons.name} {{ {fields_pattern} }} => {{", depth + 2
-            )
-            self.gen_construction(f"{enumname}::{cons.name}", cons.fields, depth + 3)
-            self.emit("}", depth + 2)
-        self.emit("}", depth + 1)
-        if is_located:
-            self.emit("})", depth)
-        self.emit("}", depth)
-
-    def visitProduct(self, product, name, depth):
-        apply_t, apply_u, apply_target_u = self.get_generics(
-            name, "T", "U", "F::TargetU"
-        )
-        structname = get_rust_type(name)
-        is_located = bool(product.attributes)
-
-        self.emit(f"impl<T, U> Foldable<T, U> for {structname}{apply_t} {{", depth)
-        self.emit(f"type Mapped = {structname}{apply_u};", depth + 1)
-        self.emit(
-            "fn fold<F: Fold<T, TargetU = U> + ?Sized>(self, folder: &mut F) -> Result<Self::Mapped, F::Error> {",
-            depth + 1,
-        )
-        self.emit(f"folder.fold_{name}(self)", depth + 2)
-        self.emit("}", depth + 1)
-        self.emit("}", depth)
-
-        self.emit(
-            f"pub fn fold_{name}<U, F: Fold<U> + ?Sized>(#[allow(unused)] folder: &mut F, node: {structname}{apply_u}) -> Result<{structname}{apply_target_u}, F::Error> {{",
-            depth,
-        )
-        if is_located:
-            self.emit("fold_located(folder, node, |folder, node| {", depth)
-            structname += "Data"
-        fields_pattern = self.make_pattern(product.fields)
-        self.emit(f"let {structname} {{ {fields_pattern} }} = node;", depth + 1)
-        self.gen_construction(structname, product.fields, depth + 1)
-        if is_located:
-            self.emit("})", depth)
-        self.emit("}", depth)
-
-    def make_pattern(self, fields):
-        return ",".join(rust_field(f.name) for f in fields)
-
-    def gen_construction(self, cons_path, fields, depth):
-        self.emit(f"Ok({cons_path} {{", depth)
-        for field in fields:
-            name = rust_field(field.name)
-            self.emit(f"{name}: Foldable::fold({name}, folder)?,", depth + 1)
-        self.emit("})", depth)
-
-
-class FoldModuleVisitor(TypeInfoEmitVisitor):
-    def visitModule(self, mod):
-        depth = 0
-        self.emit('#[cfg(feature = "fold")]', depth)
-        self.emit("pub mod fold {", depth)
-        self.emit("use super::*;", depth + 1)
-        self.emit("use crate::fold_helpers::Foldable;", depth + 1)
-        FoldTraitDefVisitor(self.file, self.typeinfo).visit(mod, depth + 1)
-        FoldImplVisitor(self.file, self.typeinfo).visit(mod, depth + 1)
-        self.emit("}", depth)
-
-
-class ClassDefVisitor(EmitVisitor):
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type, depth=0):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        structname = "NodeKind" + get_rust_type(name)
-        self.emit(
-            f'#[pyclass(module = "_ast", name = {json.dumps(name)}, base = "AstNode")]',
-            depth,
-        )
-        self.emit(f"struct {structname};", depth)
-        self.emit("#[pyclass(flags(HAS_DICT, BASETYPE))]", depth)
-        self.emit(f"impl {structname} {{}}", depth)
-        for cons in sum.types:
-            self.visit(cons, sum.attributes, structname, depth)
-
-    def visitConstructor(self, cons, attrs, base, depth):
-        self.gen_classdef(cons.name, cons.fields, attrs, depth, base)
-
-    def visitProduct(self, product, name, depth):
-        self.gen_classdef(name, product.fields, product.attributes, depth)
-
-    def gen_classdef(self, name, fields, attrs, depth, base="AstNode"):
-        structname = "Node" + get_rust_type(name)
-        self.emit(
-            f'#[pyclass(module = "_ast", name = {json.dumps(name)}, base = {json.dumps(base)})]',
-            depth,
-        )
-        self.emit(f"struct {structname};", depth)
-        self.emit("#[pyclass(flags(HAS_DICT, BASETYPE))]", depth)
-        self.emit(f"impl {structname} {{", depth)
-        self.emit(f"#[extend_class]", depth + 1)
-        self.emit(
-            "fn extend_class_with_fields(ctx: &Context, class: &'static Py<PyType>) {",
-            depth + 1,
-        )
-        fields = ",".join(
-            f"ctx.new_str(ascii!({json.dumps(f.name)})).into()" for f in fields
-        )
-        self.emit(
-            f"class.set_attr(identifier!(ctx, _fields), ctx.new_tuple(vec![{fields}]).into());",
-            depth + 2,
-        )
-        attrs = ",".join(
-            f"ctx.new_str(ascii!({json.dumps(attr.name)})).into()" for attr in attrs
-        )
-        self.emit(
-            f"class.set_attr(identifier!(ctx, _attributes), ctx.new_list(vec![{attrs}]).into());",
-            depth + 2,
-        )
-        self.emit("}", depth + 1)
-        self.emit("}", depth)
-
-
-class ExtendModuleVisitor(EmitVisitor):
-    def visitModule(self, mod):
-        depth = 0
-        self.emit(
-            "pub fn extend_module_nodes(vm: &VirtualMachine, module: &Py<PyModule>) {",
-            depth,
-        )
-        self.emit("extend_module!(vm, module, {", depth + 1)
-        for dfn in mod.dfns:
-            self.visit(dfn, depth + 2)
-        self.emit("})", depth + 1)
-        self.emit("}", depth)
-
-    def visitType(self, type, depth):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        rust_name = get_rust_type(name)
-        self.emit(
-            f"{json.dumps(name)} => NodeKind{rust_name}::make_class(&vm.ctx),", depth
-        )
-        for cons in sum.types:
-            self.visit(cons, depth)
-
-    def visitConstructor(self, cons, depth):
-        self.gen_extension(cons.name, depth)
-
-    def visitProduct(self, product, name, depth):
-        self.gen_extension(name, depth)
-
-    def gen_extension(self, name, depth):
-        rust_name = get_rust_type(name)
-        self.emit(f"{json.dumps(name)} => Node{rust_name}::make_class(&vm.ctx),", depth)
-
-
-class TraitImplVisitor(EmitVisitor):
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type, depth=0):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        enumname = get_rust_type(name)
-        if sum.attributes:
-            enumname += "Kind"
-
-        self.emit(f"impl NamedNode for ast::{enumname} {{", depth)
-        self.emit(f"const NAME: &'static str = {json.dumps(name)};", depth + 1)
-        self.emit("}", depth)
-        self.emit(f"impl Node for ast::{enumname} {{", depth)
-        self.emit(
-            "fn ast_to_object(self, _vm: &VirtualMachine) -> PyObjectRef {", depth + 1
-        )
-        self.emit("match self {", depth + 2)
-        for variant in sum.types:
-            self.constructor_to_object(variant, enumname, depth + 3)
-        self.emit("}", depth + 2)
-        self.emit("}", depth + 1)
-        self.emit(
-            "fn ast_from_object(_vm: &VirtualMachine, _object: PyObjectRef) -> PyResult<Self> {",
-            depth + 1,
-        )
-        self.gen_sum_fromobj(sum, name, enumname, depth + 2)
-        self.emit("}", depth + 1)
-        self.emit("}", depth)
-
-    def constructor_to_object(self, cons, enumname, depth):
-        fields_pattern = self.make_pattern(cons.fields)
-        self.emit(f"ast::{enumname}::{cons.name} {{ {fields_pattern} }} => {{", depth)
-        self.make_node(cons.name, cons.fields, depth + 1)
-        self.emit("}", depth)
-
-    def visitProduct(self, product, name, depth):
-        structname = get_rust_type(name)
-        if product.attributes:
-            structname += "Data"
-
-        self.emit(f"impl NamedNode for ast::{structname} {{", depth)
-        self.emit(f"const NAME: &'static str = {json.dumps(name)};", depth + 1)
-        self.emit("}", depth)
-        self.emit(f"impl Node for ast::{structname} {{", depth)
-        self.emit(
-            "fn ast_to_object(self, _vm: &VirtualMachine) -> PyObjectRef {", depth + 1
-        )
-        fields_pattern = self.make_pattern(product.fields)
-        self.emit(f"let ast::{structname} {{ {fields_pattern} }} = self;", depth + 2)
-        self.make_node(name, product.fields, depth + 2)
-        self.emit("}", depth + 1)
-        self.emit(
-            "fn ast_from_object(_vm: &VirtualMachine, _object: PyObjectRef) -> PyResult<Self> {",
-            depth + 1,
-        )
-        self.gen_product_fromobj(product, name, structname, depth + 2)
-        self.emit("}", depth + 1)
-        self.emit("}", depth)
-
-    def make_node(self, variant, fields, depth):
-        rust_variant = get_rust_type(variant)
-        self.emit(
-            f"let _node = AstNode.into_ref_with_type(_vm, Node{rust_variant}::static_type().to_owned()).unwrap();",
-            depth,
-        )
-        if fields:
-            self.emit("let _dict = _node.as_object().dict().unwrap();", depth)
-        for f in fields:
-            self.emit(
-                f"_dict.set_item({json.dumps(f.name)}, {rust_field(f.name)}.ast_to_object(_vm), _vm).unwrap();",
-                depth,
-            )
-        self.emit("_node.into()", depth)
-
-    def make_pattern(self, fields):
-        return ",".join(rust_field(f.name) for f in fields)
-
-    def gen_sum_fromobj(self, sum, sumname, enumname, depth):
-        if sum.attributes:
-            self.extract_location(sumname, depth)
-
-        self.emit("let _cls = _object.class();", depth)
-        self.emit("Ok(", depth)
-        for cons in sum.types:
-            self.emit(f"if _cls.is(Node{cons.name}::static_type()) {{", depth)
-            self.gen_construction(f"{enumname}::{cons.name}", cons, sumname, depth + 1)
-            self.emit("} else", depth)
-
-        self.emit("{", depth)
-        msg = f'format!("expected some sort of {sumname}, but got {{}}",_object.repr(_vm)?)'
-        self.emit(f"return Err(_vm.new_type_error({msg}));", depth + 1)
-        self.emit("})", depth)
-
-    def gen_product_fromobj(self, product, prodname, structname, depth):
-        if product.attributes:
-            self.extract_location(prodname, depth)
-
-        self.emit("Ok(", depth)
-        self.gen_construction(structname, product, prodname, depth + 1)
-        self.emit(")", depth)
-
-    def gen_construction(self, cons_path, cons, name, depth):
-        self.emit(f"ast::{cons_path} {{", depth)
-        for field in cons.fields:
-            self.emit(
-                f"{rust_field(field.name)}: {self.decode_field(field, name)},",
-                depth + 1,
-            )
-        self.emit("}", depth)
-
-    def extract_location(self, typename, depth):
-        row = self.decode_field(asdl.Field("int", "lineno"), typename)
-        column = self.decode_field(asdl.Field("int", "col_offset"), typename)
-        self.emit(f"let _location = ast::Location::new({row}, {column});", depth)
-
-    def decode_field(self, field, typename):
-        name = json.dumps(field.name)
-        if field.opt and not field.seq:
-            return f"get_node_field_opt(_vm, &_object, {name})?.map(|obj| Node::ast_from_object(_vm, obj)).transpose()?"
-        else:
-            return f"Node::ast_from_object(_vm, get_node_field(_vm, &_object, {name}, {json.dumps(typename)})?)?"
-
-
-class ChainOfVisitors:
-    def __init__(self, *visitors):
-        self.visitors = visitors
-
-    def visit(self, object):
-        for v in self.visitors:
-            v.visit(object)
-            v.emit("", 0)
-
-
-def write_ast_def(mod, typeinfo, f):
-    f.write(
-        textwrap.dedent(
-            """
-        #![allow(clippy::derive_partial_eq_without_eq)]
-        
-        pub use crate::constant::*;
-        pub use crate::Location;
-
-        type Ident = String;
-        \n
-    """
-        )
-    )
-    StructVisitor(f, typeinfo).emit_attrs(0)
-    f.write(
-        textwrap.dedent(
-            """
-        pub struct Located<T, U = ()> {
-            pub location: Location,
-            pub end_location: Option<Location>,
-            pub custom: U,
-            pub node: T,
-        }
-    
-        impl<T> Located<T> {
-            pub fn new(location: Location, end_location: Location, node: T) -> Self {
-                Self { location, end_location: Some(end_location), custom: (), node }
-            }
-            
-            pub const fn start(&self) -> Location {
-                self.location
-            }
-            
-            /// Returns the node's [`end_location`](Located::end_location) or [`location`](Located::start) if 
-            /// [`end_location`](Located::end_location) is `None`.
-            pub fn end(&self) -> Location {
-                self.end_location.unwrap_or(self.location)
-            }      
-        }
-        
-        impl<T, U> std::ops::Deref for Located<T, U> {
-            type Target = T;
-            
-            fn deref(&self) -> &Self::Target {
-                &self.node
-            }
-        }
-        \n
-    """.lstrip()
-        )
-    )
-
-    c = ChainOfVisitors(StructVisitor(f, typeinfo), FoldModuleVisitor(f, typeinfo))
-    c.visit(mod)
-
-
-def write_ast_mod(mod, f):
-    f.write(
-        textwrap.dedent(
-            """
-        #![allow(clippy::all)]
-
-        use super::*;
-        use crate::common::ascii;
-
-    """
-        )
-    )
-
-    c = ChainOfVisitors(ClassDefVisitor(f), TraitImplVisitor(f), ExtendModuleVisitor(f))
-    c.visit(mod)
-
-
-def main(input_filename, ast_mod_filename, ast_def_filename, dump_module=False):
-    auto_gen_msg = AUTOGEN_MESSAGE.format("/".join(Path(__file__).parts[-2:]))
-    mod = asdl.parse(input_filename)
-    if dump_module:
-        print("Parsed Module:")
-        print(mod)
-    if not asdl.check(mod):
-        sys.exit(1)
-
-    typeinfo = {}
-    FindUserdataTypesVisitor(typeinfo).visit(mod)
-
-    with ast_def_filename.open("w") as def_file, ast_mod_filename.open("w") as mod_file:
-        def_file.write(auto_gen_msg)
-        write_ast_def(mod, typeinfo, def_file)
-
-        mod_file.write(auto_gen_msg)
-        write_ast_mod(mod, mod_file)
-
-    print(f"{ast_def_filename}, {ast_mod_filename} regenerated.")
-
-
-if __name__ == "__main__":
-    parser = ArgumentParser()
-    parser.add_argument("input_file", type=Path)
-    parser.add_argument("-M", "--mod-file", type=Path, required=True)
-    parser.add_argument("-D", "--def-file", type=Path, required=True)
-    parser.add_argument("-d", "--dump-module", action="store_true")
-
-    args = parser.parse_args()
-    main(args.input_file, args.mod_file, args.def_file, args.dump_module)
diff --git a/compiler/ast/src/ast_gen.rs b/compiler/ast/src/ast_gen.rs
deleted file mode 100644
index 6771dd0eb5..0000000000
--- a/compiler/ast/src/ast_gen.rs
+++ /dev/null
@@ -1,1320 +0,0 @@
-// File automatically generated by ast/asdl_rs.py.
-
-#![allow(clippy::derive_partial_eq_without_eq)]
-
-pub use crate::constant::*;
-pub use crate::Location;
-
-type Ident = String;
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct Located<T, U = ()> {
-    pub location: Location,
-    pub end_location: Option<Location>,
-    pub custom: U,
-    pub node: T,
-}
-
-impl<T> Located<T> {
-    pub fn new(location: Location, end_location: Location, node: T) -> Self {
-        Self {
-            location,
-            end_location: Some(end_location),
-            custom: (),
-            node,
-        }
-    }
-
-    pub const fn start(&self) -> Location {
-        self.location
-    }
-
-    /// Returns the node's [`end_location`](Located::end_location) or [`location`](Located::start) if
-    /// [`end_location`](Located::end_location) is `None`.
-    pub fn end(&self) -> Location {
-        self.end_location.unwrap_or(self.location)
-    }
-}
-
-impl<T, U> std::ops::Deref for Located<T, U> {
-    type Target = T;
-
-    fn deref(&self) -> &Self::Target {
-        &self.node
-    }
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum Mod<U = ()> {
-    Module {
-        body: Vec<Stmt<U>>,
-        type_ignores: Vec<TypeIgnore>,
-    },
-    Interactive {
-        body: Vec<Stmt<U>>,
-    },
-    Expression {
-        body: Box<Expr<U>>,
-    },
-    FunctionType {
-        argtypes: Vec<Expr<U>>,
-        returns: Box<Expr<U>>,
-    },
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum StmtKind<U = ()> {
-    FunctionDef {
-        name: Ident,
-        args: Box<Arguments<U>>,
-        body: Vec<Stmt<U>>,
-        decorator_list: Vec<Expr<U>>,
-        returns: Option<Box<Expr<U>>>,
-        type_comment: Option<String>,
-    },
-    AsyncFunctionDef {
-        name: Ident,
-        args: Box<Arguments<U>>,
-        body: Vec<Stmt<U>>,
-        decorator_list: Vec<Expr<U>>,
-        returns: Option<Box<Expr<U>>>,
-        type_comment: Option<String>,
-    },
-    ClassDef {
-        name: Ident,
-        bases: Vec<Expr<U>>,
-        keywords: Vec<Keyword<U>>,
-        body: Vec<Stmt<U>>,
-        decorator_list: Vec<Expr<U>>,
-    },
-    Return {
-        value: Option<Box<Expr<U>>>,
-    },
-    Delete {
-        targets: Vec<Expr<U>>,
-    },
-    Assign {
-        targets: Vec<Expr<U>>,
-        value: Box<Expr<U>>,
-        type_comment: Option<String>,
-    },
-    AugAssign {
-        target: Box<Expr<U>>,
-        op: Operator,
-        value: Box<Expr<U>>,
-    },
-    AnnAssign {
-        target: Box<Expr<U>>,
-        annotation: Box<Expr<U>>,
-        value: Option<Box<Expr<U>>>,
-        simple: usize,
-    },
-    For {
-        target: Box<Expr<U>>,
-        iter: Box<Expr<U>>,
-        body: Vec<Stmt<U>>,
-        orelse: Vec<Stmt<U>>,
-        type_comment: Option<String>,
-    },
-    AsyncFor {
-        target: Box<Expr<U>>,
-        iter: Box<Expr<U>>,
-        body: Vec<Stmt<U>>,
-        orelse: Vec<Stmt<U>>,
-        type_comment: Option<String>,
-    },
-    While {
-        test: Box<Expr<U>>,
-        body: Vec<Stmt<U>>,
-        orelse: Vec<Stmt<U>>,
-    },
-    If {
-        test: Box<Expr<U>>,
-        body: Vec<Stmt<U>>,
-        orelse: Vec<Stmt<U>>,
-    },
-    With {
-        items: Vec<Withitem<U>>,
-        body: Vec<Stmt<U>>,
-        type_comment: Option<String>,
-    },
-    AsyncWith {
-        items: Vec<Withitem<U>>,
-        body: Vec<Stmt<U>>,
-        type_comment: Option<String>,
-    },
-    Match {
-        subject: Box<Expr<U>>,
-        cases: Vec<MatchCase<U>>,
-    },
-    Raise {
-        exc: Option<Box<Expr<U>>>,
-        cause: Option<Box<Expr<U>>>,
-    },
-    Try {
-        body: Vec<Stmt<U>>,
-        handlers: Vec<Excepthandler<U>>,
-        orelse: Vec<Stmt<U>>,
-        finalbody: Vec<Stmt<U>>,
-    },
-    TryStar {
-        body: Vec<Stmt<U>>,
-        handlers: Vec<Excepthandler<U>>,
-        orelse: Vec<Stmt<U>>,
-        finalbody: Vec<Stmt<U>>,
-    },
-    Assert {
-        test: Box<Expr<U>>,
-        msg: Option<Box<Expr<U>>>,
-    },
-    Import {
-        names: Vec<Alias<U>>,
-    },
-    ImportFrom {
-        module: Option<Ident>,
-        names: Vec<Alias<U>>,
-        level: Option<usize>,
-    },
-    Global {
-        names: Vec<Ident>,
-    },
-    Nonlocal {
-        names: Vec<Ident>,
-    },
-    Expr {
-        value: Box<Expr<U>>,
-    },
-    Pass,
-    Break,
-    Continue,
-}
-pub type Stmt<U = ()> = Located<StmtKind<U>, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum ExprKind<U = ()> {
-    BoolOp {
-        op: Boolop,
-        values: Vec<Expr<U>>,
-    },
-    NamedExpr {
-        target: Box<Expr<U>>,
-        value: Box<Expr<U>>,
-    },
-    BinOp {
-        left: Box<Expr<U>>,
-        op: Operator,
-        right: Box<Expr<U>>,
-    },
-    UnaryOp {
-        op: Unaryop,
-        operand: Box<Expr<U>>,
-    },
-    Lambda {
-        args: Box<Arguments<U>>,
-        body: Box<Expr<U>>,
-    },
-    IfExp {
-        test: Box<Expr<U>>,
-        body: Box<Expr<U>>,
-        orelse: Box<Expr<U>>,
-    },
-    Dict {
-        keys: Vec<Option<Expr<U>>>,
-        values: Vec<Expr<U>>,
-    },
-    Set {
-        elts: Vec<Expr<U>>,
-    },
-    ListComp {
-        elt: Box<Expr<U>>,
-        generators: Vec<Comprehension<U>>,
-    },
-    SetComp {
-        elt: Box<Expr<U>>,
-        generators: Vec<Comprehension<U>>,
-    },
-    DictComp {
-        key: Box<Expr<U>>,
-        value: Box<Expr<U>>,
-        generators: Vec<Comprehension<U>>,
-    },
-    GeneratorExp {
-        elt: Box<Expr<U>>,
-        generators: Vec<Comprehension<U>>,
-    },
-    Await {
-        value: Box<Expr<U>>,
-    },
-    Yield {
-        value: Option<Box<Expr<U>>>,
-    },
-    YieldFrom {
-        value: Box<Expr<U>>,
-    },
-    Compare {
-        left: Box<Expr<U>>,
-        ops: Vec<Cmpop>,
-        comparators: Vec<Expr<U>>,
-    },
-    Call {
-        func: Box<Expr<U>>,
-        args: Vec<Expr<U>>,
-        keywords: Vec<Keyword<U>>,
-    },
-    FormattedValue {
-        value: Box<Expr<U>>,
-        conversion: usize,
-        format_spec: Option<Box<Expr<U>>>,
-    },
-    JoinedStr {
-        values: Vec<Expr<U>>,
-    },
-    Constant {
-        value: Constant,
-        kind: Option<String>,
-    },
-    Attribute {
-        value: Box<Expr<U>>,
-        attr: Ident,
-        ctx: ExprContext,
-    },
-    Subscript {
-        value: Box<Expr<U>>,
-        slice: Box<Expr<U>>,
-        ctx: ExprContext,
-    },
-    Starred {
-        value: Box<Expr<U>>,
-        ctx: ExprContext,
-    },
-    Name {
-        id: Ident,
-        ctx: ExprContext,
-    },
-    List {
-        elts: Vec<Expr<U>>,
-        ctx: ExprContext,
-    },
-    Tuple {
-        elts: Vec<Expr<U>>,
-        ctx: ExprContext,
-    },
-    Slice {
-        lower: Option<Box<Expr<U>>>,
-        upper: Option<Box<Expr<U>>>,
-        step: Option<Box<Expr<U>>>,
-    },
-}
-pub type Expr<U = ()> = Located<ExprKind<U>, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum ExprContext {
-    Load,
-    Store,
-    Del,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum Boolop {
-    And,
-    Or,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum Operator {
-    Add,
-    Sub,
-    Mult,
-    MatMult,
-    Div,
-    Mod,
-    Pow,
-    LShift,
-    RShift,
-    BitOr,
-    BitXor,
-    BitAnd,
-    FloorDiv,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum Unaryop {
-    Invert,
-    Not,
-    UAdd,
-    USub,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum Cmpop {
-    Eq,
-    NotEq,
-    Lt,
-    LtE,
-    Gt,
-    GtE,
-    Is,
-    IsNot,
-    In,
-    NotIn,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct Comprehension<U = ()> {
-    pub target: Expr<U>,
-    pub iter: Expr<U>,
-    pub ifs: Vec<Expr<U>>,
-    pub is_async: usize,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum ExcepthandlerKind<U = ()> {
-    ExceptHandler {
-        type_: Option<Box<Expr<U>>>,
-        name: Option<Ident>,
-        body: Vec<Stmt<U>>,
-    },
-}
-pub type Excepthandler<U = ()> = Located<ExcepthandlerKind<U>, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct Arguments<U = ()> {
-    pub posonlyargs: Vec<Arg<U>>,
-    pub args: Vec<Arg<U>>,
-    pub vararg: Option<Box<Arg<U>>>,
-    pub kwonlyargs: Vec<Arg<U>>,
-    pub kw_defaults: Vec<Expr<U>>,
-    pub kwarg: Option<Box<Arg<U>>>,
-    pub defaults: Vec<Expr<U>>,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct ArgData<U = ()> {
-    pub arg: Ident,
-    pub annotation: Option<Box<Expr<U>>>,
-    pub type_comment: Option<String>,
-}
-pub type Arg<U = ()> = Located<ArgData<U>, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct KeywordData<U = ()> {
-    pub arg: Option<Ident>,
-    pub value: Expr<U>,
-}
-pub type Keyword<U = ()> = Located<KeywordData<U>, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct AliasData {
-    pub name: Ident,
-    pub asname: Option<Ident>,
-}
-pub type Alias<U = ()> = Located<AliasData, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct Withitem<U = ()> {
-    pub context_expr: Expr<U>,
-    pub optional_vars: Option<Box<Expr<U>>>,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub struct MatchCase<U = ()> {
-    pub pattern: Pattern<U>,
-    pub guard: Option<Box<Expr<U>>>,
-    pub body: Vec<Stmt<U>>,
-}
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum PatternKind<U = ()> {
-    MatchValue {
-        value: Box<Expr<U>>,
-    },
-    MatchSingleton {
-        value: Constant,
-    },
-    MatchSequence {
-        patterns: Vec<Pattern<U>>,
-    },
-    MatchMapping {
-        keys: Vec<Expr<U>>,
-        patterns: Vec<Pattern<U>>,
-        rest: Option<Ident>,
-    },
-    MatchClass {
-        cls: Box<Expr<U>>,
-        patterns: Vec<Pattern<U>>,
-        kwd_attrs: Vec<Ident>,
-        kwd_patterns: Vec<Pattern<U>>,
-    },
-    MatchStar {
-        name: Option<Ident>,
-    },
-    MatchAs {
-        pattern: Option<Box<Pattern<U>>>,
-        name: Option<Ident>,
-    },
-    MatchOr {
-        patterns: Vec<Pattern<U>>,
-    },
-}
-pub type Pattern<U = ()> = Located<PatternKind<U>, U>;
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum TypeIgnore {
-    TypeIgnore { lineno: usize, tag: String },
-}
-
-#[cfg(feature = "fold")]
-pub mod fold {
-    use super::*;
-    use crate::fold_helpers::Foldable;
-    pub trait Fold<U> {
-        type TargetU;
-        type Error;
-        fn map_user(&mut self, user: U) -> Result<Self::TargetU, Self::Error>;
-        fn fold_mod(&mut self, node: Mod<U>) -> Result<Mod<Self::TargetU>, Self::Error> {
-            fold_mod(self, node)
-        }
-        fn fold_stmt(&mut self, node: Stmt<U>) -> Result<Stmt<Self::TargetU>, Self::Error> {
-            fold_stmt(self, node)
-        }
-        fn fold_expr(&mut self, node: Expr<U>) -> Result<Expr<Self::TargetU>, Self::Error> {
-            fold_expr(self, node)
-        }
-        fn fold_expr_context(&mut self, node: ExprContext) -> Result<ExprContext, Self::Error> {
-            fold_expr_context(self, node)
-        }
-        fn fold_boolop(&mut self, node: Boolop) -> Result<Boolop, Self::Error> {
-            fold_boolop(self, node)
-        }
-        fn fold_operator(&mut self, node: Operator) -> Result<Operator, Self::Error> {
-            fold_operator(self, node)
-        }
-        fn fold_unaryop(&mut self, node: Unaryop) -> Result<Unaryop, Self::Error> {
-            fold_unaryop(self, node)
-        }
-        fn fold_cmpop(&mut self, node: Cmpop) -> Result<Cmpop, Self::Error> {
-            fold_cmpop(self, node)
-        }
-        fn fold_comprehension(
-            &mut self,
-            node: Comprehension<U>,
-        ) -> Result<Comprehension<Self::TargetU>, Self::Error> {
-            fold_comprehension(self, node)
-        }
-        fn fold_excepthandler(
-            &mut self,
-            node: Excepthandler<U>,
-        ) -> Result<Excepthandler<Self::TargetU>, Self::Error> {
-            fold_excepthandler(self, node)
-        }
-        fn fold_arguments(
-            &mut self,
-            node: Arguments<U>,
-        ) -> Result<Arguments<Self::TargetU>, Self::Error> {
-            fold_arguments(self, node)
-        }
-        fn fold_arg(&mut self, node: Arg<U>) -> Result<Arg<Self::TargetU>, Self::Error> {
-            fold_arg(self, node)
-        }
-        fn fold_keyword(
-            &mut self,
-            node: Keyword<U>,
-        ) -> Result<Keyword<Self::TargetU>, Self::Error> {
-            fold_keyword(self, node)
-        }
-        fn fold_alias(&mut self, node: Alias<U>) -> Result<Alias<Self::TargetU>, Self::Error> {
-            fold_alias(self, node)
-        }
-        fn fold_withitem(
-            &mut self,
-            node: Withitem<U>,
-        ) -> Result<Withitem<Self::TargetU>, Self::Error> {
-            fold_withitem(self, node)
-        }
-        fn fold_match_case(
-            &mut self,
-            node: MatchCase<U>,
-        ) -> Result<MatchCase<Self::TargetU>, Self::Error> {
-            fold_match_case(self, node)
-        }
-        fn fold_pattern(
-            &mut self,
-            node: Pattern<U>,
-        ) -> Result<Pattern<Self::TargetU>, Self::Error> {
-            fold_pattern(self, node)
-        }
-        fn fold_type_ignore(&mut self, node: TypeIgnore) -> Result<TypeIgnore, Self::Error> {
-            fold_type_ignore(self, node)
-        }
-    }
-    fn fold_located<U, F: Fold<U> + ?Sized, T, MT>(
-        folder: &mut F,
-        node: Located<T, U>,
-        f: impl FnOnce(&mut F, T) -> Result<MT, F::Error>,
-    ) -> Result<Located<MT, F::TargetU>, F::Error> {
-        Ok(Located {
-            custom: folder.map_user(node.custom)?,
-            location: node.location,
-            end_location: node.end_location,
-            node: f(folder, node.node)?,
-        })
-    }
-    impl<T, U> Foldable<T, U> for Mod<T> {
-        type Mapped = Mod<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_mod(self)
-        }
-    }
-    pub fn fold_mod<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Mod<U>,
-    ) -> Result<Mod<F::TargetU>, F::Error> {
-        match node {
-            Mod::Module { body, type_ignores } => Ok(Mod::Module {
-                body: Foldable::fold(body, folder)?,
-                type_ignores: Foldable::fold(type_ignores, folder)?,
-            }),
-            Mod::Interactive { body } => Ok(Mod::Interactive {
-                body: Foldable::fold(body, folder)?,
-            }),
-            Mod::Expression { body } => Ok(Mod::Expression {
-                body: Foldable::fold(body, folder)?,
-            }),
-            Mod::FunctionType { argtypes, returns } => Ok(Mod::FunctionType {
-                argtypes: Foldable::fold(argtypes, folder)?,
-                returns: Foldable::fold(returns, folder)?,
-            }),
-        }
-    }
-    impl<T, U> Foldable<T, U> for Stmt<T> {
-        type Mapped = Stmt<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_stmt(self)
-        }
-    }
-    pub fn fold_stmt<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Stmt<U>,
-    ) -> Result<Stmt<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| match node {
-            StmtKind::FunctionDef {
-                name,
-                args,
-                body,
-                decorator_list,
-                returns,
-                type_comment,
-            } => Ok(StmtKind::FunctionDef {
-                name: Foldable::fold(name, folder)?,
-                args: Foldable::fold(args, folder)?,
-                body: Foldable::fold(body, folder)?,
-                decorator_list: Foldable::fold(decorator_list, folder)?,
-                returns: Foldable::fold(returns, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::AsyncFunctionDef {
-                name,
-                args,
-                body,
-                decorator_list,
-                returns,
-                type_comment,
-            } => Ok(StmtKind::AsyncFunctionDef {
-                name: Foldable::fold(name, folder)?,
-                args: Foldable::fold(args, folder)?,
-                body: Foldable::fold(body, folder)?,
-                decorator_list: Foldable::fold(decorator_list, folder)?,
-                returns: Foldable::fold(returns, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::ClassDef {
-                name,
-                bases,
-                keywords,
-                body,
-                decorator_list,
-            } => Ok(StmtKind::ClassDef {
-                name: Foldable::fold(name, folder)?,
-                bases: Foldable::fold(bases, folder)?,
-                keywords: Foldable::fold(keywords, folder)?,
-                body: Foldable::fold(body, folder)?,
-                decorator_list: Foldable::fold(decorator_list, folder)?,
-            }),
-            StmtKind::Return { value } => Ok(StmtKind::Return {
-                value: Foldable::fold(value, folder)?,
-            }),
-            StmtKind::Delete { targets } => Ok(StmtKind::Delete {
-                targets: Foldable::fold(targets, folder)?,
-            }),
-            StmtKind::Assign {
-                targets,
-                value,
-                type_comment,
-            } => Ok(StmtKind::Assign {
-                targets: Foldable::fold(targets, folder)?,
-                value: Foldable::fold(value, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::AugAssign { target, op, value } => Ok(StmtKind::AugAssign {
-                target: Foldable::fold(target, folder)?,
-                op: Foldable::fold(op, folder)?,
-                value: Foldable::fold(value, folder)?,
-            }),
-            StmtKind::AnnAssign {
-                target,
-                annotation,
-                value,
-                simple,
-            } => Ok(StmtKind::AnnAssign {
-                target: Foldable::fold(target, folder)?,
-                annotation: Foldable::fold(annotation, folder)?,
-                value: Foldable::fold(value, folder)?,
-                simple: Foldable::fold(simple, folder)?,
-            }),
-            StmtKind::For {
-                target,
-                iter,
-                body,
-                orelse,
-                type_comment,
-            } => Ok(StmtKind::For {
-                target: Foldable::fold(target, folder)?,
-                iter: Foldable::fold(iter, folder)?,
-                body: Foldable::fold(body, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::AsyncFor {
-                target,
-                iter,
-                body,
-                orelse,
-                type_comment,
-            } => Ok(StmtKind::AsyncFor {
-                target: Foldable::fold(target, folder)?,
-                iter: Foldable::fold(iter, folder)?,
-                body: Foldable::fold(body, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::While { test, body, orelse } => Ok(StmtKind::While {
-                test: Foldable::fold(test, folder)?,
-                body: Foldable::fold(body, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-            }),
-            StmtKind::If { test, body, orelse } => Ok(StmtKind::If {
-                test: Foldable::fold(test, folder)?,
-                body: Foldable::fold(body, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-            }),
-            StmtKind::With {
-                items,
-                body,
-                type_comment,
-            } => Ok(StmtKind::With {
-                items: Foldable::fold(items, folder)?,
-                body: Foldable::fold(body, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::AsyncWith {
-                items,
-                body,
-                type_comment,
-            } => Ok(StmtKind::AsyncWith {
-                items: Foldable::fold(items, folder)?,
-                body: Foldable::fold(body, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            }),
-            StmtKind::Match { subject, cases } => Ok(StmtKind::Match {
-                subject: Foldable::fold(subject, folder)?,
-                cases: Foldable::fold(cases, folder)?,
-            }),
-            StmtKind::Raise { exc, cause } => Ok(StmtKind::Raise {
-                exc: Foldable::fold(exc, folder)?,
-                cause: Foldable::fold(cause, folder)?,
-            }),
-            StmtKind::Try {
-                body,
-                handlers,
-                orelse,
-                finalbody,
-            } => Ok(StmtKind::Try {
-                body: Foldable::fold(body, folder)?,
-                handlers: Foldable::fold(handlers, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-                finalbody: Foldable::fold(finalbody, folder)?,
-            }),
-            StmtKind::TryStar {
-                body,
-                handlers,
-                orelse,
-                finalbody,
-            } => Ok(StmtKind::TryStar {
-                body: Foldable::fold(body, folder)?,
-                handlers: Foldable::fold(handlers, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-                finalbody: Foldable::fold(finalbody, folder)?,
-            }),
-            StmtKind::Assert { test, msg } => Ok(StmtKind::Assert {
-                test: Foldable::fold(test, folder)?,
-                msg: Foldable::fold(msg, folder)?,
-            }),
-            StmtKind::Import { names } => Ok(StmtKind::Import {
-                names: Foldable::fold(names, folder)?,
-            }),
-            StmtKind::ImportFrom {
-                module,
-                names,
-                level,
-            } => Ok(StmtKind::ImportFrom {
-                module: Foldable::fold(module, folder)?,
-                names: Foldable::fold(names, folder)?,
-                level: Foldable::fold(level, folder)?,
-            }),
-            StmtKind::Global { names } => Ok(StmtKind::Global {
-                names: Foldable::fold(names, folder)?,
-            }),
-            StmtKind::Nonlocal { names } => Ok(StmtKind::Nonlocal {
-                names: Foldable::fold(names, folder)?,
-            }),
-            StmtKind::Expr { value } => Ok(StmtKind::Expr {
-                value: Foldable::fold(value, folder)?,
-            }),
-            StmtKind::Pass {} => Ok(StmtKind::Pass {}),
-            StmtKind::Break {} => Ok(StmtKind::Break {}),
-            StmtKind::Continue {} => Ok(StmtKind::Continue {}),
-        })
-    }
-    impl<T, U> Foldable<T, U> for Expr<T> {
-        type Mapped = Expr<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_expr(self)
-        }
-    }
-    pub fn fold_expr<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Expr<U>,
-    ) -> Result<Expr<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| match node {
-            ExprKind::BoolOp { op, values } => Ok(ExprKind::BoolOp {
-                op: Foldable::fold(op, folder)?,
-                values: Foldable::fold(values, folder)?,
-            }),
-            ExprKind::NamedExpr { target, value } => Ok(ExprKind::NamedExpr {
-                target: Foldable::fold(target, folder)?,
-                value: Foldable::fold(value, folder)?,
-            }),
-            ExprKind::BinOp { left, op, right } => Ok(ExprKind::BinOp {
-                left: Foldable::fold(left, folder)?,
-                op: Foldable::fold(op, folder)?,
-                right: Foldable::fold(right, folder)?,
-            }),
-            ExprKind::UnaryOp { op, operand } => Ok(ExprKind::UnaryOp {
-                op: Foldable::fold(op, folder)?,
-                operand: Foldable::fold(operand, folder)?,
-            }),
-            ExprKind::Lambda { args, body } => Ok(ExprKind::Lambda {
-                args: Foldable::fold(args, folder)?,
-                body: Foldable::fold(body, folder)?,
-            }),
-            ExprKind::IfExp { test, body, orelse } => Ok(ExprKind::IfExp {
-                test: Foldable::fold(test, folder)?,
-                body: Foldable::fold(body, folder)?,
-                orelse: Foldable::fold(orelse, folder)?,
-            }),
-            ExprKind::Dict { keys, values } => Ok(ExprKind::Dict {
-                keys: Foldable::fold(keys, folder)?,
-                values: Foldable::fold(values, folder)?,
-            }),
-            ExprKind::Set { elts } => Ok(ExprKind::Set {
-                elts: Foldable::fold(elts, folder)?,
-            }),
-            ExprKind::ListComp { elt, generators } => Ok(ExprKind::ListComp {
-                elt: Foldable::fold(elt, folder)?,
-                generators: Foldable::fold(generators, folder)?,
-            }),
-            ExprKind::SetComp { elt, generators } => Ok(ExprKind::SetComp {
-                elt: Foldable::fold(elt, folder)?,
-                generators: Foldable::fold(generators, folder)?,
-            }),
-            ExprKind::DictComp {
-                key,
-                value,
-                generators,
-            } => Ok(ExprKind::DictComp {
-                key: Foldable::fold(key, folder)?,
-                value: Foldable::fold(value, folder)?,
-                generators: Foldable::fold(generators, folder)?,
-            }),
-            ExprKind::GeneratorExp { elt, generators } => Ok(ExprKind::GeneratorExp {
-                elt: Foldable::fold(elt, folder)?,
-                generators: Foldable::fold(generators, folder)?,
-            }),
-            ExprKind::Await { value } => Ok(ExprKind::Await {
-                value: Foldable::fold(value, folder)?,
-            }),
-            ExprKind::Yield { value } => Ok(ExprKind::Yield {
-                value: Foldable::fold(value, folder)?,
-            }),
-            ExprKind::YieldFrom { value } => Ok(ExprKind::YieldFrom {
-                value: Foldable::fold(value, folder)?,
-            }),
-            ExprKind::Compare {
-                left,
-                ops,
-                comparators,
-            } => Ok(ExprKind::Compare {
-                left: Foldable::fold(left, folder)?,
-                ops: Foldable::fold(ops, folder)?,
-                comparators: Foldable::fold(comparators, folder)?,
-            }),
-            ExprKind::Call {
-                func,
-                args,
-                keywords,
-            } => Ok(ExprKind::Call {
-                func: Foldable::fold(func, folder)?,
-                args: Foldable::fold(args, folder)?,
-                keywords: Foldable::fold(keywords, folder)?,
-            }),
-            ExprKind::FormattedValue {
-                value,
-                conversion,
-                format_spec,
-            } => Ok(ExprKind::FormattedValue {
-                value: Foldable::fold(value, folder)?,
-                conversion: Foldable::fold(conversion, folder)?,
-                format_spec: Foldable::fold(format_spec, folder)?,
-            }),
-            ExprKind::JoinedStr { values } => Ok(ExprKind::JoinedStr {
-                values: Foldable::fold(values, folder)?,
-            }),
-            ExprKind::Constant { value, kind } => Ok(ExprKind::Constant {
-                value: Foldable::fold(value, folder)?,
-                kind: Foldable::fold(kind, folder)?,
-            }),
-            ExprKind::Attribute { value, attr, ctx } => Ok(ExprKind::Attribute {
-                value: Foldable::fold(value, folder)?,
-                attr: Foldable::fold(attr, folder)?,
-                ctx: Foldable::fold(ctx, folder)?,
-            }),
-            ExprKind::Subscript { value, slice, ctx } => Ok(ExprKind::Subscript {
-                value: Foldable::fold(value, folder)?,
-                slice: Foldable::fold(slice, folder)?,
-                ctx: Foldable::fold(ctx, folder)?,
-            }),
-            ExprKind::Starred { value, ctx } => Ok(ExprKind::Starred {
-                value: Foldable::fold(value, folder)?,
-                ctx: Foldable::fold(ctx, folder)?,
-            }),
-            ExprKind::Name { id, ctx } => Ok(ExprKind::Name {
-                id: Foldable::fold(id, folder)?,
-                ctx: Foldable::fold(ctx, folder)?,
-            }),
-            ExprKind::List { elts, ctx } => Ok(ExprKind::List {
-                elts: Foldable::fold(elts, folder)?,
-                ctx: Foldable::fold(ctx, folder)?,
-            }),
-            ExprKind::Tuple { elts, ctx } => Ok(ExprKind::Tuple {
-                elts: Foldable::fold(elts, folder)?,
-                ctx: Foldable::fold(ctx, folder)?,
-            }),
-            ExprKind::Slice { lower, upper, step } => Ok(ExprKind::Slice {
-                lower: Foldable::fold(lower, folder)?,
-                upper: Foldable::fold(upper, folder)?,
-                step: Foldable::fold(step, folder)?,
-            }),
-        })
-    }
-    impl<T, U> Foldable<T, U> for ExprContext {
-        type Mapped = ExprContext;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_expr_context(self)
-        }
-    }
-    pub fn fold_expr_context<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: ExprContext,
-    ) -> Result<ExprContext, F::Error> {
-        match node {
-            ExprContext::Load {} => Ok(ExprContext::Load {}),
-            ExprContext::Store {} => Ok(ExprContext::Store {}),
-            ExprContext::Del {} => Ok(ExprContext::Del {}),
-        }
-    }
-    impl<T, U> Foldable<T, U> for Boolop {
-        type Mapped = Boolop;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_boolop(self)
-        }
-    }
-    pub fn fold_boolop<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Boolop,
-    ) -> Result<Boolop, F::Error> {
-        match node {
-            Boolop::And {} => Ok(Boolop::And {}),
-            Boolop::Or {} => Ok(Boolop::Or {}),
-        }
-    }
-    impl<T, U> Foldable<T, U> for Operator {
-        type Mapped = Operator;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_operator(self)
-        }
-    }
-    pub fn fold_operator<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Operator,
-    ) -> Result<Operator, F::Error> {
-        match node {
-            Operator::Add {} => Ok(Operator::Add {}),
-            Operator::Sub {} => Ok(Operator::Sub {}),
-            Operator::Mult {} => Ok(Operator::Mult {}),
-            Operator::MatMult {} => Ok(Operator::MatMult {}),
-            Operator::Div {} => Ok(Operator::Div {}),
-            Operator::Mod {} => Ok(Operator::Mod {}),
-            Operator::Pow {} => Ok(Operator::Pow {}),
-            Operator::LShift {} => Ok(Operator::LShift {}),
-            Operator::RShift {} => Ok(Operator::RShift {}),
-            Operator::BitOr {} => Ok(Operator::BitOr {}),
-            Operator::BitXor {} => Ok(Operator::BitXor {}),
-            Operator::BitAnd {} => Ok(Operator::BitAnd {}),
-            Operator::FloorDiv {} => Ok(Operator::FloorDiv {}),
-        }
-    }
-    impl<T, U> Foldable<T, U> for Unaryop {
-        type Mapped = Unaryop;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_unaryop(self)
-        }
-    }
-    pub fn fold_unaryop<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Unaryop,
-    ) -> Result<Unaryop, F::Error> {
-        match node {
-            Unaryop::Invert {} => Ok(Unaryop::Invert {}),
-            Unaryop::Not {} => Ok(Unaryop::Not {}),
-            Unaryop::UAdd {} => Ok(Unaryop::UAdd {}),
-            Unaryop::USub {} => Ok(Unaryop::USub {}),
-        }
-    }
-    impl<T, U> Foldable<T, U> for Cmpop {
-        type Mapped = Cmpop;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_cmpop(self)
-        }
-    }
-    pub fn fold_cmpop<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Cmpop,
-    ) -> Result<Cmpop, F::Error> {
-        match node {
-            Cmpop::Eq {} => Ok(Cmpop::Eq {}),
-            Cmpop::NotEq {} => Ok(Cmpop::NotEq {}),
-            Cmpop::Lt {} => Ok(Cmpop::Lt {}),
-            Cmpop::LtE {} => Ok(Cmpop::LtE {}),
-            Cmpop::Gt {} => Ok(Cmpop::Gt {}),
-            Cmpop::GtE {} => Ok(Cmpop::GtE {}),
-            Cmpop::Is {} => Ok(Cmpop::Is {}),
-            Cmpop::IsNot {} => Ok(Cmpop::IsNot {}),
-            Cmpop::In {} => Ok(Cmpop::In {}),
-            Cmpop::NotIn {} => Ok(Cmpop::NotIn {}),
-        }
-    }
-    impl<T, U> Foldable<T, U> for Comprehension<T> {
-        type Mapped = Comprehension<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_comprehension(self)
-        }
-    }
-    pub fn fold_comprehension<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Comprehension<U>,
-    ) -> Result<Comprehension<F::TargetU>, F::Error> {
-        let Comprehension {
-            target,
-            iter,
-            ifs,
-            is_async,
-        } = node;
-        Ok(Comprehension {
-            target: Foldable::fold(target, folder)?,
-            iter: Foldable::fold(iter, folder)?,
-            ifs: Foldable::fold(ifs, folder)?,
-            is_async: Foldable::fold(is_async, folder)?,
-        })
-    }
-    impl<T, U> Foldable<T, U> for Excepthandler<T> {
-        type Mapped = Excepthandler<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_excepthandler(self)
-        }
-    }
-    pub fn fold_excepthandler<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Excepthandler<U>,
-    ) -> Result<Excepthandler<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| match node {
-            ExcepthandlerKind::ExceptHandler { type_, name, body } => {
-                Ok(ExcepthandlerKind::ExceptHandler {
-                    type_: Foldable::fold(type_, folder)?,
-                    name: Foldable::fold(name, folder)?,
-                    body: Foldable::fold(body, folder)?,
-                })
-            }
-        })
-    }
-    impl<T, U> Foldable<T, U> for Arguments<T> {
-        type Mapped = Arguments<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_arguments(self)
-        }
-    }
-    pub fn fold_arguments<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Arguments<U>,
-    ) -> Result<Arguments<F::TargetU>, F::Error> {
-        let Arguments {
-            posonlyargs,
-            args,
-            vararg,
-            kwonlyargs,
-            kw_defaults,
-            kwarg,
-            defaults,
-        } = node;
-        Ok(Arguments {
-            posonlyargs: Foldable::fold(posonlyargs, folder)?,
-            args: Foldable::fold(args, folder)?,
-            vararg: Foldable::fold(vararg, folder)?,
-            kwonlyargs: Foldable::fold(kwonlyargs, folder)?,
-            kw_defaults: Foldable::fold(kw_defaults, folder)?,
-            kwarg: Foldable::fold(kwarg, folder)?,
-            defaults: Foldable::fold(defaults, folder)?,
-        })
-    }
-    impl<T, U> Foldable<T, U> for Arg<T> {
-        type Mapped = Arg<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_arg(self)
-        }
-    }
-    pub fn fold_arg<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Arg<U>,
-    ) -> Result<Arg<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| {
-            let ArgData {
-                arg,
-                annotation,
-                type_comment,
-            } = node;
-            Ok(ArgData {
-                arg: Foldable::fold(arg, folder)?,
-                annotation: Foldable::fold(annotation, folder)?,
-                type_comment: Foldable::fold(type_comment, folder)?,
-            })
-        })
-    }
-    impl<T, U> Foldable<T, U> for Keyword<T> {
-        type Mapped = Keyword<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_keyword(self)
-        }
-    }
-    pub fn fold_keyword<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Keyword<U>,
-    ) -> Result<Keyword<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| {
-            let KeywordData { arg, value } = node;
-            Ok(KeywordData {
-                arg: Foldable::fold(arg, folder)?,
-                value: Foldable::fold(value, folder)?,
-            })
-        })
-    }
-    impl<T, U> Foldable<T, U> for Alias<T> {
-        type Mapped = Alias<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_alias(self)
-        }
-    }
-    pub fn fold_alias<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Alias<U>,
-    ) -> Result<Alias<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| {
-            let AliasData { name, asname } = node;
-            Ok(AliasData {
-                name: Foldable::fold(name, folder)?,
-                asname: Foldable::fold(asname, folder)?,
-            })
-        })
-    }
-    impl<T, U> Foldable<T, U> for Withitem<T> {
-        type Mapped = Withitem<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_withitem(self)
-        }
-    }
-    pub fn fold_withitem<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Withitem<U>,
-    ) -> Result<Withitem<F::TargetU>, F::Error> {
-        let Withitem {
-            context_expr,
-            optional_vars,
-        } = node;
-        Ok(Withitem {
-            context_expr: Foldable::fold(context_expr, folder)?,
-            optional_vars: Foldable::fold(optional_vars, folder)?,
-        })
-    }
-    impl<T, U> Foldable<T, U> for MatchCase<T> {
-        type Mapped = MatchCase<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_match_case(self)
-        }
-    }
-    pub fn fold_match_case<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: MatchCase<U>,
-    ) -> Result<MatchCase<F::TargetU>, F::Error> {
-        let MatchCase {
-            pattern,
-            guard,
-            body,
-        } = node;
-        Ok(MatchCase {
-            pattern: Foldable::fold(pattern, folder)?,
-            guard: Foldable::fold(guard, folder)?,
-            body: Foldable::fold(body, folder)?,
-        })
-    }
-    impl<T, U> Foldable<T, U> for Pattern<T> {
-        type Mapped = Pattern<U>;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_pattern(self)
-        }
-    }
-    pub fn fold_pattern<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: Pattern<U>,
-    ) -> Result<Pattern<F::TargetU>, F::Error> {
-        fold_located(folder, node, |folder, node| match node {
-            PatternKind::MatchValue { value } => Ok(PatternKind::MatchValue {
-                value: Foldable::fold(value, folder)?,
-            }),
-            PatternKind::MatchSingleton { value } => Ok(PatternKind::MatchSingleton {
-                value: Foldable::fold(value, folder)?,
-            }),
-            PatternKind::MatchSequence { patterns } => Ok(PatternKind::MatchSequence {
-                patterns: Foldable::fold(patterns, folder)?,
-            }),
-            PatternKind::MatchMapping {
-                keys,
-                patterns,
-                rest,
-            } => Ok(PatternKind::MatchMapping {
-                keys: Foldable::fold(keys, folder)?,
-                patterns: Foldable::fold(patterns, folder)?,
-                rest: Foldable::fold(rest, folder)?,
-            }),
-            PatternKind::MatchClass {
-                cls,
-                patterns,
-                kwd_attrs,
-                kwd_patterns,
-            } => Ok(PatternKind::MatchClass {
-                cls: Foldable::fold(cls, folder)?,
-                patterns: Foldable::fold(patterns, folder)?,
-                kwd_attrs: Foldable::fold(kwd_attrs, folder)?,
-                kwd_patterns: Foldable::fold(kwd_patterns, folder)?,
-            }),
-            PatternKind::MatchStar { name } => Ok(PatternKind::MatchStar {
-                name: Foldable::fold(name, folder)?,
-            }),
-            PatternKind::MatchAs { pattern, name } => Ok(PatternKind::MatchAs {
-                pattern: Foldable::fold(pattern, folder)?,
-                name: Foldable::fold(name, folder)?,
-            }),
-            PatternKind::MatchOr { patterns } => Ok(PatternKind::MatchOr {
-                patterns: Foldable::fold(patterns, folder)?,
-            }),
-        })
-    }
-    impl<T, U> Foldable<T, U> for TypeIgnore {
-        type Mapped = TypeIgnore;
-        fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-            self,
-            folder: &mut F,
-        ) -> Result<Self::Mapped, F::Error> {
-            folder.fold_type_ignore(self)
-        }
-    }
-    pub fn fold_type_ignore<U, F: Fold<U> + ?Sized>(
-        #[allow(unused)] folder: &mut F,
-        node: TypeIgnore,
-    ) -> Result<TypeIgnore, F::Error> {
-        match node {
-            TypeIgnore::TypeIgnore { lineno, tag } => Ok(TypeIgnore::TypeIgnore {
-                lineno: Foldable::fold(lineno, folder)?,
-                tag: Foldable::fold(tag, folder)?,
-            }),
-        }
-    }
-}
diff --git a/compiler/ast/src/constant.rs b/compiler/ast/src/constant.rs
deleted file mode 100644
index 3514e52178..0000000000
--- a/compiler/ast/src/constant.rs
+++ /dev/null
@@ -1,239 +0,0 @@
-use num_bigint::BigInt;
-pub use rustpython_compiler_core::ConversionFlag;
-
-#[derive(Clone, Debug, PartialEq)]
-pub enum Constant {
-    None,
-    Bool(bool),
-    Str(String),
-    Bytes(Vec<u8>),
-    Int(BigInt),
-    Tuple(Vec<Constant>),
-    Float(f64),
-    Complex { real: f64, imag: f64 },
-    Ellipsis,
-}
-
-impl From<String> for Constant {
-    fn from(s: String) -> Constant {
-        Self::Str(s)
-    }
-}
-impl From<Vec<u8>> for Constant {
-    fn from(b: Vec<u8>) -> Constant {
-        Self::Bytes(b)
-    }
-}
-impl From<bool> for Constant {
-    fn from(b: bool) -> Constant {
-        Self::Bool(b)
-    }
-}
-impl From<BigInt> for Constant {
-    fn from(i: BigInt) -> Constant {
-        Self::Int(i)
-    }
-}
-
-#[cfg(feature = "rustpython-literal")]
-impl std::fmt::Display for Constant {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        match self {
-            Constant::None => f.pad("None"),
-            Constant::Bool(b) => f.pad(if *b { "True" } else { "False" }),
-            Constant::Str(s) => rustpython_literal::escape::UnicodeEscape::new_repr(s.as_str())
-                .str_repr()
-                .write(f),
-            Constant::Bytes(b) => {
-                let escape = rustpython_literal::escape::AsciiEscape::new_repr(b);
-                let repr = escape.bytes_repr().to_string().unwrap();
-                f.pad(&repr)
-            }
-            Constant::Int(i) => i.fmt(f),
-            Constant::Tuple(tup) => {
-                if let [elt] = &**tup {
-                    write!(f, "({elt},)")
-                } else {
-                    f.write_str("(")?;
-                    for (i, elt) in tup.iter().enumerate() {
-                        if i != 0 {
-                            f.write_str(", ")?;
-                        }
-                        elt.fmt(f)?;
-                    }
-                    f.write_str(")")
-                }
-            }
-            Constant::Float(fp) => f.pad(&rustpython_literal::float::to_string(*fp)),
-            Constant::Complex { real, imag } => {
-                if *real == 0.0 {
-                    write!(f, "{imag}j")
-                } else {
-                    write!(f, "({real}{imag:+}j)")
-                }
-            }
-            Constant::Ellipsis => f.pad("..."),
-        }
-    }
-}
-
-#[cfg(feature = "constant-optimization")]
-#[non_exhaustive]
-#[derive(Default)]
-pub struct ConstantOptimizer {}
-
-#[cfg(feature = "constant-optimization")]
-impl ConstantOptimizer {
-    #[inline]
-    pub fn new() -> Self {
-        Self {}
-    }
-}
-
-#[cfg(feature = "constant-optimization")]
-impl<U> crate::fold::Fold<U> for ConstantOptimizer {
-    type TargetU = U;
-    type Error = std::convert::Infallible;
-    #[inline]
-    fn map_user(&mut self, user: U) -> Result<Self::TargetU, Self::Error> {
-        Ok(user)
-    }
-    fn fold_expr(&mut self, node: crate::Expr<U>) -> Result<crate::Expr<U>, Self::Error> {
-        match node.node {
-            crate::ExprKind::Tuple { elts, ctx } => {
-                let elts = elts
-                    .into_iter()
-                    .map(|x| self.fold_expr(x))
-                    .collect::<Result<Vec<_>, _>>()?;
-                let expr = if elts
-                    .iter()
-                    .all(|e| matches!(e.node, crate::ExprKind::Constant { .. }))
-                {
-                    let tuple = elts
-                        .into_iter()
-                        .map(|e| match e.node {
-                            crate::ExprKind::Constant { value, .. } => value,
-                            _ => unreachable!(),
-                        })
-                        .collect();
-                    crate::ExprKind::Constant {
-                        value: Constant::Tuple(tuple),
-                        kind: None,
-                    }
-                } else {
-                    crate::ExprKind::Tuple { elts, ctx }
-                };
-                Ok(crate::Expr {
-                    node: expr,
-                    custom: node.custom,
-                    location: node.location,
-                    end_location: node.end_location,
-                })
-            }
-            _ => crate::fold::fold_expr(self, node),
-        }
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[cfg(feature = "constant-optimization")]
-    #[test]
-    fn test_constant_opt() {
-        use crate::{fold::Fold, *};
-
-        let start = Default::default();
-        let end = None;
-        let custom = ();
-        let ast = Located {
-            location: start,
-            end_location: end,
-            custom,
-            node: ExprKind::Tuple {
-                ctx: ExprContext::Load,
-                elts: vec![
-                    Located {
-                        location: start,
-                        end_location: end,
-                        custom,
-                        node: ExprKind::Constant {
-                            value: BigInt::from(1).into(),
-                            kind: None,
-                        },
-                    },
-                    Located {
-                        location: start,
-                        end_location: end,
-                        custom,
-                        node: ExprKind::Constant {
-                            value: BigInt::from(2).into(),
-                            kind: None,
-                        },
-                    },
-                    Located {
-                        location: start,
-                        end_location: end,
-                        custom,
-                        node: ExprKind::Tuple {
-                            ctx: ExprContext::Load,
-                            elts: vec![
-                                Located {
-                                    location: start,
-                                    end_location: end,
-                                    custom,
-                                    node: ExprKind::Constant {
-                                        value: BigInt::from(3).into(),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: start,
-                                    end_location: end,
-                                    custom,
-                                    node: ExprKind::Constant {
-                                        value: BigInt::from(4).into(),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: start,
-                                    end_location: end,
-                                    custom,
-                                    node: ExprKind::Constant {
-                                        value: BigInt::from(5).into(),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                ],
-            },
-        };
-        let new_ast = ConstantOptimizer::new()
-            .fold_expr(ast)
-            .unwrap_or_else(|e| match e {});
-        assert_eq!(
-            new_ast,
-            Located {
-                location: start,
-                end_location: end,
-                custom,
-                node: ExprKind::Constant {
-                    value: Constant::Tuple(vec![
-                        BigInt::from(1).into(),
-                        BigInt::from(2).into(),
-                        Constant::Tuple(vec![
-                            BigInt::from(3).into(),
-                            BigInt::from(4).into(),
-                            BigInt::from(5).into(),
-                        ])
-                    ]),
-                    kind: None
-                },
-            }
-        );
-    }
-}
diff --git a/compiler/ast/src/fold_helpers.rs b/compiler/ast/src/fold_helpers.rs
deleted file mode 100644
index 969ea4e587..0000000000
--- a/compiler/ast/src/fold_helpers.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-use crate::{constant, fold::Fold};
-
-pub(crate) trait Foldable<T, U> {
-    type Mapped;
-    fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-        self,
-        folder: &mut F,
-    ) -> Result<Self::Mapped, F::Error>;
-}
-
-impl<T, U, X> Foldable<T, U> for Vec<X>
-where
-    X: Foldable<T, U>,
-{
-    type Mapped = Vec<X::Mapped>;
-    fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-        self,
-        folder: &mut F,
-    ) -> Result<Self::Mapped, F::Error> {
-        self.into_iter().map(|x| x.fold(folder)).collect()
-    }
-}
-
-impl<T, U, X> Foldable<T, U> for Option<X>
-where
-    X: Foldable<T, U>,
-{
-    type Mapped = Option<X::Mapped>;
-    fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-        self,
-        folder: &mut F,
-    ) -> Result<Self::Mapped, F::Error> {
-        self.map(|x| x.fold(folder)).transpose()
-    }
-}
-
-impl<T, U, X> Foldable<T, U> for Box<X>
-where
-    X: Foldable<T, U>,
-{
-    type Mapped = Box<X::Mapped>;
-    fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-        self,
-        folder: &mut F,
-    ) -> Result<Self::Mapped, F::Error> {
-        (*self).fold(folder).map(Box::new)
-    }
-}
-
-macro_rules! simple_fold {
-    ($($t:ty),+$(,)?) => {
-        $(impl<T, U> $crate::fold_helpers::Foldable<T, U> for $t {
-            type Mapped = Self;
-            #[inline]
-            fn fold<F: Fold<T, TargetU = U> + ?Sized>(
-                self,
-                _folder: &mut F,
-            ) -> Result<Self::Mapped, F::Error> {
-                Ok(self)
-            }
-        })+
-    };
-}
-
-simple_fold!(usize, String, bool, constant::Constant);
diff --git a/compiler/ast/src/impls.rs b/compiler/ast/src/impls.rs
deleted file mode 100644
index a93028874c..0000000000
--- a/compiler/ast/src/impls.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-use crate::{Constant, ExprKind};
-
-impl<U> ExprKind<U> {
-    /// Returns a short name for the node suitable for use in error messages.
-    pub fn name(&self) -> &'static str {
-        match self {
-            ExprKind::BoolOp { .. } | ExprKind::BinOp { .. } | ExprKind::UnaryOp { .. } => {
-                "operator"
-            }
-            ExprKind::Subscript { .. } => "subscript",
-            ExprKind::Await { .. } => "await expression",
-            ExprKind::Yield { .. } | ExprKind::YieldFrom { .. } => "yield expression",
-            ExprKind::Compare { .. } => "comparison",
-            ExprKind::Attribute { .. } => "attribute",
-            ExprKind::Call { .. } => "function call",
-            ExprKind::Constant { value, .. } => match value {
-                Constant::Str(_)
-                | Constant::Int(_)
-                | Constant::Float(_)
-                | Constant::Complex { .. }
-                | Constant::Bytes(_) => "literal",
-                Constant::Tuple(_) => "tuple",
-                Constant::Bool(b) => {
-                    if *b {
-                        "True"
-                    } else {
-                        "False"
-                    }
-                }
-                Constant::None => "None",
-                Constant::Ellipsis => "ellipsis",
-            },
-            ExprKind::List { .. } => "list",
-            ExprKind::Tuple { .. } => "tuple",
-            ExprKind::Dict { .. } => "dict display",
-            ExprKind::Set { .. } => "set display",
-            ExprKind::ListComp { .. } => "list comprehension",
-            ExprKind::DictComp { .. } => "dict comprehension",
-            ExprKind::SetComp { .. } => "set comprehension",
-            ExprKind::GeneratorExp { .. } => "generator expression",
-            ExprKind::Starred { .. } => "starred",
-            ExprKind::Slice { .. } => "slice",
-            ExprKind::JoinedStr { values } => {
-                if values
-                    .iter()
-                    .any(|e| matches!(e.node, ExprKind::JoinedStr { .. }))
-                {
-                    "f-string expression"
-                } else {
-                    "literal"
-                }
-            }
-            ExprKind::FormattedValue { .. } => "f-string expression",
-            ExprKind::Name { .. } => "name",
-            ExprKind::Lambda { .. } => "lambda",
-            ExprKind::IfExp { .. } => "conditional expression",
-            ExprKind::NamedExpr { .. } => "named expression",
-        }
-    }
-}
diff --git a/compiler/ast/src/lib.rs b/compiler/ast/src/lib.rs
deleted file mode 100644
index d668bede69..0000000000
--- a/compiler/ast/src/lib.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-mod ast_gen;
-mod constant;
-#[cfg(feature = "fold")]
-mod fold_helpers;
-mod impls;
-#[cfg(feature = "unparse")]
-mod unparse;
-
-pub use ast_gen::*;
-pub use rustpython_compiler_core::Location;
-
-pub type Suite<U = ()> = Vec<Stmt<U>>;
diff --git a/compiler/ast/src/unparse.rs b/compiler/ast/src/unparse.rs
deleted file mode 100644
index 40570fc7ff..0000000000
--- a/compiler/ast/src/unparse.rs
+++ /dev/null
@@ -1,536 +0,0 @@
-use crate::{
-    Arg, Arguments, Boolop, Cmpop, Comprehension, Constant, ConversionFlag, Expr, ExprKind,
-    Operator,
-};
-use std::fmt;
-
-mod precedence {
-    macro_rules! precedence {
-        ($($op:ident,)*) => {
-            precedence!(@0, $($op,)*);
-        };
-        (@$i:expr, $op1:ident, $($op:ident,)*) => {
-            pub const $op1: u8 = $i;
-            precedence!(@$i + 1, $($op,)*);
-        };
-        (@$i:expr,) => {};
-    }
-    precedence!(
-        TUPLE, TEST, OR, AND, NOT, CMP, // "EXPR" =
-        BOR, BXOR, BAND, SHIFT, ARITH, TERM, FACTOR, POWER, AWAIT, ATOM,
-    );
-    pub const EXPR: u8 = BOR;
-}
-
-#[repr(transparent)]
-struct Unparser<'a> {
-    f: fmt::Formatter<'a>,
-}
-impl<'a> Unparser<'a> {
-    fn new<'b>(f: &'b mut fmt::Formatter<'a>) -> &'b mut Unparser<'a> {
-        unsafe { &mut *(f as *mut fmt::Formatter<'a> as *mut Unparser<'a>) }
-    }
-
-    fn p(&mut self, s: &str) -> fmt::Result {
-        self.f.write_str(s)
-    }
-    fn p_if(&mut self, cond: bool, s: &str) -> fmt::Result {
-        if cond {
-            self.f.write_str(s)?;
-        }
-        Ok(())
-    }
-    fn p_delim(&mut self, first: &mut bool, s: &str) -> fmt::Result {
-        self.p_if(!std::mem::take(first), s)
-    }
-    fn write_fmt(&mut self, f: fmt::Arguments<'_>) -> fmt::Result {
-        self.f.write_fmt(f)
-    }
-
-    fn unparse_expr<U>(&mut self, ast: &Expr<U>, level: u8) -> fmt::Result {
-        macro_rules! op_prec {
-            ($op_ty:ident, $x:expr, $enu:path, $($var:ident($op:literal, $prec:ident)),*$(,)?) => {
-                match $x {
-                    $(<$enu>::$var => (op_prec!(@space $op_ty, $op), precedence::$prec),)*
-                }
-            };
-            (@space bin, $op:literal) => {
-                concat!(" ", $op, " ")
-            };
-            (@space un, $op:literal) => {
-                $op
-            };
-        }
-        macro_rules! group_if {
-            ($lvl:expr, $body:block) => {{
-                let group = level > $lvl;
-                self.p_if(group, "(")?;
-                let ret = $body;
-                self.p_if(group, ")")?;
-                ret
-            }};
-        }
-        match &ast.node {
-            ExprKind::BoolOp { op, values } => {
-                let (op, prec) = op_prec!(bin, op, Boolop, And("and", AND), Or("or", OR));
-                group_if!(prec, {
-                    let mut first = true;
-                    for val in values {
-                        self.p_delim(&mut first, op)?;
-                        self.unparse_expr(val, prec + 1)?;
-                    }
-                })
-            }
-            ExprKind::NamedExpr { target, value } => {
-                group_if!(precedence::TUPLE, {
-                    self.unparse_expr(target, precedence::ATOM)?;
-                    self.p(" := ")?;
-                    self.unparse_expr(value, precedence::ATOM)?;
-                })
-            }
-            ExprKind::BinOp { left, op, right } => {
-                let right_associative = matches!(op, Operator::Pow);
-                let (op, prec) = op_prec!(
-                    bin,
-                    op,
-                    Operator,
-                    Add("+", ARITH),
-                    Sub("-", ARITH),
-                    Mult("*", TERM),
-                    MatMult("@", TERM),
-                    Div("/", TERM),
-                    Mod("%", TERM),
-                    Pow("**", POWER),
-                    LShift("<<", SHIFT),
-                    RShift(">>", SHIFT),
-                    BitOr("|", BOR),
-                    BitXor("^", BXOR),
-                    BitAnd("&", BAND),
-                    FloorDiv("//", TERM),
-                );
-                group_if!(prec, {
-                    self.unparse_expr(left, prec + right_associative as u8)?;
-                    self.p(op)?;
-                    self.unparse_expr(right, prec + !right_associative as u8)?;
-                })
-            }
-            ExprKind::UnaryOp { op, operand } => {
-                let (op, prec) = op_prec!(
-                    un,
-                    op,
-                    crate::Unaryop,
-                    Invert("~", FACTOR),
-                    Not("not ", NOT),
-                    UAdd("+", FACTOR),
-                    USub("-", FACTOR)
-                );
-                group_if!(prec, {
-                    self.p(op)?;
-                    self.unparse_expr(operand, prec)?;
-                })
-            }
-            ExprKind::Lambda { args, body } => {
-                group_if!(precedence::TEST, {
-                    let pos = args.args.len() + args.posonlyargs.len();
-                    self.p(if pos > 0 { "lambda " } else { "lambda" })?;
-                    self.unparse_args(args)?;
-                    write!(self, ": {}", **body)?;
-                })
-            }
-            ExprKind::IfExp { test, body, orelse } => {
-                group_if!(precedence::TEST, {
-                    self.unparse_expr(body, precedence::TEST + 1)?;
-                    self.p(" if ")?;
-                    self.unparse_expr(test, precedence::TEST + 1)?;
-                    self.p(" else ")?;
-                    self.unparse_expr(orelse, precedence::TEST)?;
-                })
-            }
-            ExprKind::Dict { keys, values } => {
-                self.p("{")?;
-                let mut first = true;
-                let (packed, unpacked) = values.split_at(keys.len());
-                for (k, v) in keys.iter().zip(packed) {
-                    self.p_delim(&mut first, ", ")?;
-                    if let Some(k) = k {
-                        write!(self, "{}: {}", *k, *v)?;
-                    } else {
-                        write!(self, "**{}", *v)?;
-                    }
-                }
-                for d in unpacked {
-                    self.p_delim(&mut first, ", ")?;
-                    write!(self, "**{}", *d)?;
-                }
-                self.p("}")?;
-            }
-            ExprKind::Set { elts } => {
-                self.p("{")?;
-                let mut first = true;
-                for v in elts {
-                    self.p_delim(&mut first, ", ")?;
-                    self.unparse_expr(v, precedence::TEST)?;
-                }
-                self.p("}")?;
-            }
-            ExprKind::ListComp { elt, generators } => {
-                self.p("[")?;
-                self.unparse_expr(elt, precedence::TEST)?;
-                self.unparse_comp(generators)?;
-                self.p("]")?;
-            }
-            ExprKind::SetComp { elt, generators } => {
-                self.p("{")?;
-                self.unparse_expr(elt, precedence::TEST)?;
-                self.unparse_comp(generators)?;
-                self.p("}")?;
-            }
-            ExprKind::DictComp {
-                key,
-                value,
-                generators,
-            } => {
-                self.p("{")?;
-                self.unparse_expr(key, precedence::TEST)?;
-                self.p(": ")?;
-                self.unparse_expr(value, precedence::TEST)?;
-                self.unparse_comp(generators)?;
-                self.p("}")?;
-            }
-            ExprKind::GeneratorExp { elt, generators } => {
-                self.p("(")?;
-                self.unparse_expr(elt, precedence::TEST)?;
-                self.unparse_comp(generators)?;
-                self.p(")")?;
-            }
-            ExprKind::Await { value } => {
-                group_if!(precedence::AWAIT, {
-                    self.p("await ")?;
-                    self.unparse_expr(value, precedence::ATOM)?;
-                })
-            }
-            ExprKind::Yield { value } => {
-                if let Some(value) = value {
-                    write!(self, "(yield {})", **value)?;
-                } else {
-                    self.p("(yield)")?;
-                }
-            }
-            ExprKind::YieldFrom { value } => {
-                write!(self, "(yield from {})", **value)?;
-            }
-            ExprKind::Compare {
-                left,
-                ops,
-                comparators,
-            } => {
-                group_if!(precedence::CMP, {
-                    let new_lvl = precedence::CMP + 1;
-                    self.unparse_expr(left, new_lvl)?;
-                    for (op, cmp) in ops.iter().zip(comparators) {
-                        let op = match op {
-                            Cmpop::Eq => " == ",
-                            Cmpop::NotEq => " != ",
-                            Cmpop::Lt => " < ",
-                            Cmpop::LtE => " <= ",
-                            Cmpop::Gt => " > ",
-                            Cmpop::GtE => " >= ",
-                            Cmpop::Is => " is ",
-                            Cmpop::IsNot => " is not ",
-                            Cmpop::In => " in ",
-                            Cmpop::NotIn => " not in ",
-                        };
-                        self.p(op)?;
-                        self.unparse_expr(cmp, new_lvl)?;
-                    }
-                })
-            }
-            ExprKind::Call {
-                func,
-                args,
-                keywords,
-            } => {
-                self.unparse_expr(func, precedence::ATOM)?;
-                self.p("(")?;
-                if let (
-                    [Expr {
-                        node: ExprKind::GeneratorExp { elt, generators },
-                        ..
-                    }],
-                    [],
-                ) = (&**args, &**keywords)
-                {
-                    // make sure a single genexpr doesn't get double parens
-                    self.unparse_expr(elt, precedence::TEST)?;
-                    self.unparse_comp(generators)?;
-                } else {
-                    let mut first = true;
-                    for arg in args {
-                        self.p_delim(&mut first, ", ")?;
-                        self.unparse_expr(arg, precedence::TEST)?;
-                    }
-                    for kw in keywords {
-                        self.p_delim(&mut first, ", ")?;
-                        if let Some(arg) = &kw.node.arg {
-                            self.p(arg)?;
-                            self.p("=")?;
-                        } else {
-                            self.p("**")?;
-                        }
-                        self.unparse_expr(&kw.node.value, precedence::TEST)?;
-                    }
-                }
-                self.p(")")?;
-            }
-            ExprKind::FormattedValue {
-                value,
-                conversion,
-                format_spec,
-            } => self.unparse_formatted(value, *conversion, format_spec.as_deref())?,
-            ExprKind::JoinedStr { values } => self.unparse_joined_str(values, false)?,
-            ExprKind::Constant { value, kind } => {
-                if let Some(kind) = kind {
-                    self.p(kind)?;
-                }
-                assert_eq!(f64::MAX_10_EXP, 308);
-                let inf_str = "1e309";
-                match value {
-                    Constant::Float(f) if f.is_infinite() => self.p(inf_str)?,
-                    Constant::Complex { real, imag }
-                        if real.is_infinite() || imag.is_infinite() =>
-                    {
-                        self.p(&value.to_string().replace("inf", inf_str))?
-                    }
-                    _ => fmt::Display::fmt(value, &mut self.f)?,
-                }
-            }
-            ExprKind::Attribute { value, attr, .. } => {
-                self.unparse_expr(value, precedence::ATOM)?;
-                let period = if let ExprKind::Constant {
-                    value: Constant::Int(_),
-                    ..
-                } = &value.node
-                {
-                    " ."
-                } else {
-                    "."
-                };
-                self.p(period)?;
-                self.p(attr)?;
-            }
-            ExprKind::Subscript { value, slice, .. } => {
-                self.unparse_expr(value, precedence::ATOM)?;
-                let mut lvl = precedence::TUPLE;
-                if let ExprKind::Tuple { elts, .. } = &slice.node {
-                    if elts
-                        .iter()
-                        .any(|expr| matches!(expr.node, ExprKind::Starred { .. }))
-                    {
-                        lvl += 1
-                    }
-                }
-                self.p("[")?;
-                self.unparse_expr(slice, lvl)?;
-                self.p("]")?;
-            }
-            ExprKind::Starred { value, .. } => {
-                self.p("*")?;
-                self.unparse_expr(value, precedence::EXPR)?;
-            }
-            ExprKind::Name { id, .. } => self.p(id)?,
-            ExprKind::List { elts, .. } => {
-                self.p("[")?;
-                let mut first = true;
-                for elt in elts {
-                    self.p_delim(&mut first, ", ")?;
-                    self.unparse_expr(elt, precedence::TEST)?;
-                }
-                self.p("]")?;
-            }
-            ExprKind::Tuple { elts, .. } => {
-                if elts.is_empty() {
-                    self.p("()")?;
-                } else {
-                    group_if!(precedence::TUPLE, {
-                        let mut first = true;
-                        for elt in elts {
-                            self.p_delim(&mut first, ", ")?;
-                            self.unparse_expr(elt, precedence::TEST)?;
-                        }
-                        self.p_if(elts.len() == 1, ",")?;
-                    })
-                }
-            }
-            ExprKind::Slice { lower, upper, step } => {
-                if let Some(lower) = lower {
-                    self.unparse_expr(lower, precedence::TEST)?;
-                }
-                self.p(":")?;
-                if let Some(upper) = upper {
-                    self.unparse_expr(upper, precedence::TEST)?;
-                }
-                if let Some(step) = step {
-                    self.p(":")?;
-                    self.unparse_expr(step, precedence::TEST)?;
-                }
-            }
-        }
-        Ok(())
-    }
-
-    fn unparse_args<U>(&mut self, args: &Arguments<U>) -> fmt::Result {
-        let mut first = true;
-        let defaults_start = args.posonlyargs.len() + args.args.len() - args.defaults.len();
-        for (i, arg) in args.posonlyargs.iter().chain(&args.args).enumerate() {
-            self.p_delim(&mut first, ", ")?;
-            self.unparse_arg(arg)?;
-            if let Some(i) = i.checked_sub(defaults_start) {
-                write!(self, "={}", &args.defaults[i])?;
-            }
-            self.p_if(i + 1 == args.posonlyargs.len(), ", /")?;
-        }
-        if args.vararg.is_some() || !args.kwonlyargs.is_empty() {
-            self.p_delim(&mut first, ", ")?;
-            self.p("*")?;
-        }
-        if let Some(vararg) = &args.vararg {
-            self.unparse_arg(vararg)?;
-        }
-        let defaults_start = args.kwonlyargs.len() - args.kw_defaults.len();
-        for (i, kwarg) in args.kwonlyargs.iter().enumerate() {
-            self.p_delim(&mut first, ", ")?;
-            self.unparse_arg(kwarg)?;
-            if let Some(default) = i
-                .checked_sub(defaults_start)
-                .and_then(|i| args.kw_defaults.get(i))
-            {
-                write!(self, "={default}")?;
-            }
-        }
-        if let Some(kwarg) = &args.kwarg {
-            self.p_delim(&mut first, ", ")?;
-            self.p("**")?;
-            self.unparse_arg(kwarg)?;
-        }
-        Ok(())
-    }
-    fn unparse_arg<U>(&mut self, arg: &Arg<U>) -> fmt::Result {
-        self.p(&arg.node.arg)?;
-        if let Some(ann) = &arg.node.annotation {
-            write!(self, ": {}", **ann)?;
-        }
-        Ok(())
-    }
-
-    fn unparse_comp<U>(&mut self, generators: &[Comprehension<U>]) -> fmt::Result {
-        for comp in generators {
-            self.p(if comp.is_async > 0 {
-                " async for "
-            } else {
-                " for "
-            })?;
-            self.unparse_expr(&comp.target, precedence::TUPLE)?;
-            self.p(" in ")?;
-            self.unparse_expr(&comp.iter, precedence::TEST + 1)?;
-            for cond in &comp.ifs {
-                self.p(" if ")?;
-                self.unparse_expr(cond, precedence::TEST + 1)?;
-            }
-        }
-        Ok(())
-    }
-
-    fn unparse_fstring_body<U>(&mut self, values: &[Expr<U>], is_spec: bool) -> fmt::Result {
-        for value in values {
-            self.unparse_fstring_elem(value, is_spec)?;
-        }
-        Ok(())
-    }
-
-    fn unparse_formatted<U>(
-        &mut self,
-        val: &Expr<U>,
-        conversion: usize,
-        spec: Option<&Expr<U>>,
-    ) -> fmt::Result {
-        let buffered = to_string_fmt(|f| Unparser::new(f).unparse_expr(val, precedence::TEST + 1));
-        let brace = if buffered.starts_with('{') {
-            // put a space to avoid escaping the bracket
-            "{ "
-        } else {
-            "{"
-        };
-        self.p(brace)?;
-        self.p(&buffered)?;
-        drop(buffered);
-
-        if conversion != ConversionFlag::None as usize {
-            self.p("!")?;
-            let buf = &[conversion as u8];
-            let c = std::str::from_utf8(buf).unwrap();
-            self.p(c)?;
-        }
-
-        if let Some(spec) = spec {
-            self.p(":")?;
-            self.unparse_fstring_elem(spec, true)?;
-        }
-
-        self.p("}")?;
-
-        Ok(())
-    }
-
-    fn unparse_fstring_elem<U>(&mut self, expr: &Expr<U>, is_spec: bool) -> fmt::Result {
-        match &expr.node {
-            ExprKind::Constant { value, .. } => {
-                if let Constant::Str(s) = value {
-                    self.unparse_fstring_str(s)
-                } else {
-                    unreachable!()
-                }
-            }
-            ExprKind::JoinedStr { values } => self.unparse_joined_str(values, is_spec),
-            ExprKind::FormattedValue {
-                value,
-                conversion,
-                format_spec,
-            } => self.unparse_formatted(value, *conversion, format_spec.as_deref()),
-            _ => unreachable!(),
-        }
-    }
-
-    fn unparse_fstring_str(&mut self, s: &str) -> fmt::Result {
-        let s = s.replace('{', "{{").replace('}', "}}");
-        self.p(&s)
-    }
-
-    fn unparse_joined_str<U>(&mut self, values: &[Expr<U>], is_spec: bool) -> fmt::Result {
-        if is_spec {
-            self.unparse_fstring_body(values, is_spec)
-        } else {
-            self.p("f")?;
-            let body = to_string_fmt(|f| Unparser::new(f).unparse_fstring_body(values, is_spec));
-            rustpython_literal::escape::UnicodeEscape::new_repr(&body)
-                .str_repr()
-                .write(&mut self.f)
-        }
-    }
-}
-
-impl<U> fmt::Display for Expr<U> {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        Unparser::new(f).unparse_expr(self, precedence::TEST)
-    }
-}
-
-fn to_string_fmt(f: impl FnOnce(&mut fmt::Formatter) -> fmt::Result) -> String {
-    use std::cell::Cell;
-    struct Fmt<F>(Cell<Option<F>>);
-    impl<F: FnOnce(&mut fmt::Formatter) -> fmt::Result> fmt::Display for Fmt<F> {
-        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-            self.0.take().unwrap()(f)
-        }
-    }
-    Fmt(Cell::new(Some(f))).to_string()
-}
diff --git a/compiler/codegen/Cargo.toml b/compiler/codegen/Cargo.toml
index 3bb891ed3f..861c9fba1a 100644
--- a/compiler/codegen/Cargo.toml
+++ b/compiler/codegen/Cargo.toml
@@ -8,8 +8,8 @@ license = "MIT"
 edition = "2021"
 
 [dependencies]
-rustpython-ast = { path = "../ast", features = ["unparse"] }
-rustpython-compiler-core = { path = "../core", version = "0.2.0" }
+rustpython-ast = { workspace = true, features=["unparse"] }
+rustpython-compiler-core = { workspace = true }
 
 ahash = { workspace = true }
 bitflags = { workspace = true }
@@ -20,6 +20,6 @@ num-complex = { workspace = true }
 num-traits = { workspace = true }
 
 [dev-dependencies]
-rustpython-parser = { path = "../parser" }
+rustpython-parser = { workspace = true }
 
 insta = { workspace = true }
diff --git a/compiler/core/Cargo.toml b/compiler/core/Cargo.toml
deleted file mode 100644
index 79622a9569..0000000000
--- a/compiler/core/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name = "rustpython-compiler-core"
-description = "RustPython specific bytecode."
-version = "0.2.0"
-authors = ["RustPython Team"]
-edition = "2021"
-repository = "https://github.com/RustPython/RustPython"
-license = "MIT"
-
-[dependencies]
-bitflags = { workspace = true }
-bstr = { workspace = true }
-itertools = { workspace = true }
-num-bigint = { workspace = true }
-num-complex = { workspace = true }
-serde = { version = "1.0.133", optional = true, default-features = false, features = ["derive"] }
-
-lz4_flex = "0.9.2"
diff --git a/compiler/core/src/bytecode.rs b/compiler/core/src/bytecode.rs
deleted file mode 100644
index a522d3fbf1..0000000000
--- a/compiler/core/src/bytecode.rs
+++ /dev/null
@@ -1,1610 +0,0 @@
-//! Implement python as a virtual machine with bytecode. This module
-//! implements bytecode structure.
-
-use crate::{marshal, Location};
-use bitflags::bitflags;
-use itertools::Itertools;
-use num_bigint::BigInt;
-use num_complex::Complex64;
-use std::marker::PhantomData;
-use std::{collections::BTreeSet, fmt, hash, mem};
-
-pub trait Constant: Sized {
-    type Name: AsRef<str>;
-
-    /// Transforms the given Constant to a BorrowedConstant
-    fn borrow_constant(&self) -> BorrowedConstant<Self>;
-}
-
-impl Constant for ConstantData {
-    type Name = String;
-    fn borrow_constant(&self) -> BorrowedConstant<Self> {
-        use BorrowedConstant::*;
-        match self {
-            ConstantData::Integer { value } => Integer { value },
-            ConstantData::Float { value } => Float { value: *value },
-            ConstantData::Complex { value } => Complex { value: *value },
-            ConstantData::Boolean { value } => Boolean { value: *value },
-            ConstantData::Str { value } => Str { value },
-            ConstantData::Bytes { value } => Bytes { value },
-            ConstantData::Code { code } => Code { code },
-            ConstantData::Tuple { elements } => Tuple { elements },
-            ConstantData::None => None,
-            ConstantData::Ellipsis => Ellipsis,
-        }
-    }
-}
-
-/// A Constant Bag
-pub trait ConstantBag: Sized + Copy {
-    type Constant: Constant;
-    fn make_constant<C: Constant>(&self, constant: BorrowedConstant<C>) -> Self::Constant;
-    fn make_int(&self, value: BigInt) -> Self::Constant;
-    fn make_tuple(&self, elements: impl Iterator<Item = Self::Constant>) -> Self::Constant;
-    fn make_code(&self, code: CodeObject<Self::Constant>) -> Self::Constant;
-    fn make_name(&self, name: &str) -> <Self::Constant as Constant>::Name;
-}
-
-pub trait AsBag {
-    type Bag: ConstantBag;
-    #[allow(clippy::wrong_self_convention)]
-    fn as_bag(self) -> Self::Bag;
-}
-
-impl<Bag: ConstantBag> AsBag for Bag {
-    type Bag = Self;
-    fn as_bag(self) -> Self {
-        self
-    }
-}
-
-#[derive(Clone, Copy)]
-pub struct BasicBag;
-
-impl ConstantBag for BasicBag {
-    type Constant = ConstantData;
-    fn make_constant<C: Constant>(&self, constant: BorrowedConstant<C>) -> Self::Constant {
-        constant.to_owned()
-    }
-    fn make_int(&self, value: BigInt) -> Self::Constant {
-        ConstantData::Integer { value }
-    }
-    fn make_tuple(&self, elements: impl Iterator<Item = Self::Constant>) -> Self::Constant {
-        ConstantData::Tuple {
-            elements: elements.collect(),
-        }
-    }
-    fn make_code(&self, code: CodeObject<Self::Constant>) -> Self::Constant {
-        ConstantData::Code {
-            code: Box::new(code),
-        }
-    }
-    fn make_name(&self, name: &str) -> <Self::Constant as Constant>::Name {
-        name.to_owned()
-    }
-}
-
-/// Primary container of a single code object. Each python function has
-/// a code object. Also a module has a code object.
-#[derive(Clone)]
-pub struct CodeObject<C: Constant = ConstantData> {
-    pub instructions: Box<[CodeUnit]>,
-    pub locations: Box<[Location]>,
-    pub flags: CodeFlags,
-    pub posonlyarg_count: u32,
-    // Number of positional-only arguments
-    pub arg_count: u32,
-    pub kwonlyarg_count: u32,
-    pub source_path: C::Name,
-    pub first_line_number: u32,
-    pub max_stackdepth: u32,
-    pub obj_name: C::Name,
-    // Name of the object that created this code object
-    pub cell2arg: Option<Box<[i32]>>,
-    pub constants: Box<[C]>,
-    pub names: Box<[C::Name]>,
-    pub varnames: Box<[C::Name]>,
-    pub cellvars: Box<[C::Name]>,
-    pub freevars: Box<[C::Name]>,
-}
-
-bitflags! {
-    pub struct CodeFlags: u16 {
-        const NEW_LOCALS = 0x01;
-        const IS_GENERATOR = 0x02;
-        const IS_COROUTINE = 0x04;
-        const HAS_VARARGS = 0x08;
-        const HAS_VARKEYWORDS = 0x10;
-        const IS_OPTIMIZED = 0x20;
-    }
-}
-
-impl CodeFlags {
-    pub const NAME_MAPPING: &'static [(&'static str, CodeFlags)] = &[
-        ("GENERATOR", CodeFlags::IS_GENERATOR),
-        ("COROUTINE", CodeFlags::IS_COROUTINE),
-        (
-            "ASYNC_GENERATOR",
-            Self::from_bits_truncate(Self::IS_GENERATOR.bits | Self::IS_COROUTINE.bits),
-        ),
-        ("VARARGS", CodeFlags::HAS_VARARGS),
-        ("VARKEYWORDS", CodeFlags::HAS_VARKEYWORDS),
-    ];
-}
-
-/// an opcode argument that may be extended by a prior ExtendedArg
-#[derive(Copy, Clone, PartialEq, Eq)]
-#[repr(transparent)]
-pub struct OpArgByte(pub u8);
-impl OpArgByte {
-    pub const fn null() -> Self {
-        OpArgByte(0)
-    }
-}
-impl fmt::Debug for OpArgByte {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        self.0.fmt(f)
-    }
-}
-
-/// a full 32-bit op_arg, including any possible ExtendedArg extension
-#[derive(Copy, Clone, Debug)]
-#[repr(transparent)]
-pub struct OpArg(pub u32);
-impl OpArg {
-    pub const fn null() -> Self {
-        OpArg(0)
-    }
-
-    /// Returns how many CodeUnits a instruction with this op_arg will be encoded as
-    #[inline]
-    pub fn instr_size(self) -> usize {
-        (self.0 > 0xff) as usize + (self.0 > 0xff_ff) as usize + (self.0 > 0xff_ff_ff) as usize + 1
-    }
-
-    /// returns the arg split into any necessary ExtendedArg components (in big-endian order) and
-    /// the arg for the real opcode itself
-    #[inline(always)]
-    pub fn split(self) -> (impl ExactSizeIterator<Item = OpArgByte>, OpArgByte) {
-        let mut it = self
-            .0
-            .to_le_bytes()
-            .map(OpArgByte)
-            .into_iter()
-            .take(self.instr_size());
-        let lo = it.next().unwrap();
-        (it.rev(), lo)
-    }
-}
-
-#[derive(Default, Copy, Clone)]
-#[repr(transparent)]
-pub struct OpArgState {
-    state: u32,
-}
-
-impl OpArgState {
-    #[inline(always)]
-    pub fn get(&mut self, ins: CodeUnit) -> (Instruction, OpArg) {
-        let arg = self.extend(ins.arg);
-        if ins.op != Instruction::ExtendedArg {
-            self.reset();
-        }
-        (ins.op, arg)
-    }
-    #[inline(always)]
-    pub fn extend(&mut self, arg: OpArgByte) -> OpArg {
-        self.state = self.state << 8 | u32::from(arg.0);
-        OpArg(self.state)
-    }
-    #[inline(always)]
-    pub fn reset(&mut self) {
-        self.state = 0
-    }
-}
-
-pub trait OpArgType: Copy {
-    fn from_op_arg(x: u32) -> Option<Self>;
-    fn to_op_arg(self) -> u32;
-}
-
-impl OpArgType for u32 {
-    #[inline(always)]
-    fn from_op_arg(x: u32) -> Option<Self> {
-        Some(x)
-    }
-    #[inline(always)]
-    fn to_op_arg(self) -> u32 {
-        self
-    }
-}
-
-impl OpArgType for bool {
-    #[inline(always)]
-    fn from_op_arg(x: u32) -> Option<Self> {
-        Some(x != 0)
-    }
-    #[inline(always)]
-    fn to_op_arg(self) -> u32 {
-        self as u32
-    }
-}
-
-macro_rules! op_arg_enum {
-    ($(#[$attr:meta])* $vis:vis enum $name:ident { $($(#[$var_attr:meta])* $var:ident = $value:literal,)* }) => {
-        $(#[$attr])*
-        $vis enum $name {
-            $($(#[$var_attr])* $var = $value,)*
-        }
-
-        impl OpArgType for $name {
-            fn to_op_arg(self) -> u32 {
-                self as u32
-            }
-            fn from_op_arg(x: u32) -> Option<Self> {
-                Some(match u8::try_from(x).ok()? {
-                    $($value => Self::$var,)*
-                    _ => return None,
-                })
-            }
-        }
-    };
-}
-
-#[derive(Copy, Clone)]
-pub struct Arg<T: OpArgType>(PhantomData<T>);
-
-impl<T: OpArgType> Arg<T> {
-    #[inline]
-    pub fn marker() -> Self {
-        Arg(PhantomData)
-    }
-    #[inline]
-    pub fn new(arg: T) -> (Self, OpArg) {
-        (Self(PhantomData), OpArg(arg.to_op_arg()))
-    }
-    #[inline]
-    pub fn new_single(arg: T) -> (Self, OpArgByte)
-    where
-        T: Into<u8>,
-    {
-        (Self(PhantomData), OpArgByte(arg.into()))
-    }
-    #[inline(always)]
-    pub fn get(self, arg: OpArg) -> T {
-        self.try_get(arg).unwrap()
-    }
-    #[inline(always)]
-    pub fn try_get(self, arg: OpArg) -> Option<T> {
-        T::from_op_arg(arg.0)
-    }
-    #[inline(always)]
-    /// # Safety
-    /// T::from_op_arg(self) must succeed
-    pub unsafe fn get_unchecked(self, arg: OpArg) -> T {
-        match T::from_op_arg(arg.0) {
-            Some(t) => t,
-            None => std::hint::unreachable_unchecked(),
-        }
-    }
-}
-
-impl<T: OpArgType> PartialEq for Arg<T> {
-    fn eq(&self, _: &Self) -> bool {
-        true
-    }
-}
-impl<T: OpArgType> Eq for Arg<T> {}
-
-impl<T: OpArgType> fmt::Debug for Arg<T> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        write!(f, "Arg<{}>", std::any::type_name::<T>())
-    }
-}
-
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Ord, PartialOrd)]
-#[repr(transparent)]
-// XXX: if you add a new instruction that stores a Label, make sure to add it in
-// Instruction::label_arg
-pub struct Label(pub u32);
-
-impl OpArgType for Label {
-    #[inline(always)]
-    fn from_op_arg(x: u32) -> Option<Self> {
-        Some(Label(x))
-    }
-    #[inline(always)]
-    fn to_op_arg(self) -> u32 {
-        self.0
-    }
-}
-
-impl fmt::Display for Label {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        self.0.fmt(f)
-    }
-}
-
-op_arg_enum!(
-    /// Transforms a value prior to formatting it.
-    #[derive(Copy, Clone, Debug, PartialEq, Eq)]
-    #[repr(u8)]
-    pub enum ConversionFlag {
-        /// No conversion
-        None = 0, // CPython uses -1 but not pleasure for us
-        /// Converts by calling `str(<value>)`.
-        Str = b's',
-        /// Converts by calling `ascii(<value>)`.
-        Ascii = b'a',
-        /// Converts by calling `repr(<value>)`.
-        Repr = b'r',
-    }
-);
-
-impl TryFrom<usize> for ConversionFlag {
-    type Error = usize;
-    fn try_from(b: usize) -> Result<Self, Self::Error> {
-        u32::try_from(b).ok().and_then(Self::from_op_arg).ok_or(b)
-    }
-}
-
-op_arg_enum!(
-    /// The kind of Raise that occurred.
-    #[derive(Copy, Clone, Debug, PartialEq, Eq)]
-    #[repr(u8)]
-    pub enum RaiseKind {
-        Reraise = 0,
-        Raise = 1,
-        RaiseCause = 2,
-    }
-);
-
-pub type NameIdx = u32;
-
-/// A Single bytecode instruction.
-#[derive(Debug, Copy, Clone, PartialEq, Eq)]
-#[repr(u8)]
-pub enum Instruction {
-    /// Importing by name
-    ImportName {
-        idx: Arg<NameIdx>,
-    },
-    /// Importing without name
-    ImportNameless,
-    /// Import *
-    ImportStar,
-    /// from ... import ...
-    ImportFrom {
-        idx: Arg<NameIdx>,
-    },
-    LoadFast(Arg<NameIdx>),
-    LoadNameAny(Arg<NameIdx>),
-    LoadGlobal(Arg<NameIdx>),
-    LoadDeref(Arg<NameIdx>),
-    LoadClassDeref(Arg<NameIdx>),
-    StoreFast(Arg<NameIdx>),
-    StoreLocal(Arg<NameIdx>),
-    StoreGlobal(Arg<NameIdx>),
-    StoreDeref(Arg<NameIdx>),
-    DeleteFast(Arg<NameIdx>),
-    DeleteLocal(Arg<NameIdx>),
-    DeleteGlobal(Arg<NameIdx>),
-    DeleteDeref(Arg<NameIdx>),
-    LoadClosure(Arg<NameIdx>),
-    Subscript,
-    StoreSubscript,
-    DeleteSubscript,
-    StoreAttr {
-        idx: Arg<NameIdx>,
-    },
-    DeleteAttr {
-        idx: Arg<NameIdx>,
-    },
-    LoadConst {
-        /// index into constants vec
-        idx: Arg<u32>,
-    },
-    UnaryOperation {
-        op: Arg<UnaryOperator>,
-    },
-    BinaryOperation {
-        op: Arg<BinaryOperator>,
-    },
-    BinaryOperationInplace {
-        op: Arg<BinaryOperator>,
-    },
-    LoadAttr {
-        idx: Arg<NameIdx>,
-    },
-    TestOperation {
-        op: Arg<TestOperator>,
-    },
-    CompareOperation {
-        op: Arg<ComparisonOperator>,
-    },
-    Pop,
-    Rotate2,
-    Rotate3,
-    Duplicate,
-    Duplicate2,
-    GetIter,
-    Continue {
-        target: Arg<Label>,
-    },
-    Break {
-        target: Arg<Label>,
-    },
-    Jump {
-        target: Arg<Label>,
-    },
-    /// Pop the top of the stack, and jump if this value is true.
-    JumpIfTrue {
-        target: Arg<Label>,
-    },
-    /// Pop the top of the stack, and jump if this value is false.
-    JumpIfFalse {
-        target: Arg<Label>,
-    },
-    /// Peek at the top of the stack, and jump if this value is true.
-    /// Otherwise, pop top of stack.
-    JumpIfTrueOrPop {
-        target: Arg<Label>,
-    },
-    /// Peek at the top of the stack, and jump if this value is false.
-    /// Otherwise, pop top of stack.
-    JumpIfFalseOrPop {
-        target: Arg<Label>,
-    },
-    MakeFunction(Arg<MakeFunctionFlags>),
-    CallFunctionPositional {
-        nargs: Arg<u32>,
-    },
-    CallFunctionKeyword {
-        nargs: Arg<u32>,
-    },
-    CallFunctionEx {
-        has_kwargs: Arg<bool>,
-    },
-    LoadMethod {
-        idx: Arg<NameIdx>,
-    },
-    CallMethodPositional {
-        nargs: Arg<u32>,
-    },
-    CallMethodKeyword {
-        nargs: Arg<u32>,
-    },
-    CallMethodEx {
-        has_kwargs: Arg<bool>,
-    },
-    ForIter {
-        target: Arg<Label>,
-    },
-    ReturnValue,
-    YieldValue,
-    YieldFrom,
-    SetupAnnotation,
-    SetupLoop,
-
-    /// Setup a finally handler, which will be called whenever one of this events occurs:
-    /// - the block is popped
-    /// - the function returns
-    /// - an exception is returned
-    SetupFinally {
-        handler: Arg<Label>,
-    },
-
-    /// Enter a finally block, without returning, excepting, just because we are there.
-    EnterFinally,
-
-    /// Marker bytecode for the end of a finally sequence.
-    /// When this bytecode is executed, the eval loop does one of those things:
-    /// - Continue at a certain bytecode position
-    /// - Propagate the exception
-    /// - Return from a function
-    /// - Do nothing at all, just continue
-    EndFinally,
-
-    SetupExcept {
-        handler: Arg<Label>,
-    },
-    SetupWith {
-        end: Arg<Label>,
-    },
-    WithCleanupStart,
-    WithCleanupFinish,
-    PopBlock,
-    Raise {
-        kind: Arg<RaiseKind>,
-    },
-    BuildString {
-        size: Arg<u32>,
-    },
-    BuildTuple {
-        size: Arg<u32>,
-    },
-    BuildTupleUnpack {
-        size: Arg<u32>,
-    },
-    BuildList {
-        size: Arg<u32>,
-    },
-    BuildListUnpack {
-        size: Arg<u32>,
-    },
-    BuildSet {
-        size: Arg<u32>,
-    },
-    BuildSetUnpack {
-        size: Arg<u32>,
-    },
-    BuildMap {
-        size: Arg<u32>,
-    },
-    BuildMapForCall {
-        size: Arg<u32>,
-    },
-    DictUpdate,
-    BuildSlice {
-        /// whether build a slice with a third step argument
-        step: Arg<bool>,
-    },
-    ListAppend {
-        i: Arg<u32>,
-    },
-    SetAdd {
-        i: Arg<u32>,
-    },
-    MapAdd {
-        i: Arg<u32>,
-    },
-
-    PrintExpr,
-    LoadBuildClass,
-    UnpackSequence {
-        size: Arg<u32>,
-    },
-    UnpackEx {
-        args: Arg<UnpackExArgs>,
-    },
-    FormatValue {
-        conversion: Arg<ConversionFlag>,
-    },
-    PopException,
-    Reverse {
-        amount: Arg<u32>,
-    },
-    GetAwaitable,
-    BeforeAsyncWith,
-    SetupAsyncWith {
-        end: Arg<Label>,
-    },
-    GetAIter,
-    GetANext,
-    EndAsyncFor,
-    ExtendedArg,
-}
-const _: () = assert!(mem::size_of::<Instruction>() == 1);
-
-impl From<Instruction> for u8 {
-    #[inline]
-    fn from(ins: Instruction) -> u8 {
-        // SAFETY: there's no padding bits
-        unsafe { std::mem::transmute::<Instruction, u8>(ins) }
-    }
-}
-
-impl TryFrom<u8> for Instruction {
-    type Error = crate::marshal::MarshalError;
-
-    #[inline]
-    fn try_from(value: u8) -> Result<Self, crate::marshal::MarshalError> {
-        if value <= u8::from(Instruction::ExtendedArg) {
-            Ok(unsafe { std::mem::transmute::<u8, Instruction>(value) })
-        } else {
-            Err(crate::marshal::MarshalError::InvalidBytecode)
-        }
-    }
-}
-
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct CodeUnit {
-    pub op: Instruction,
-    pub arg: OpArgByte,
-}
-
-const _: () = assert!(mem::size_of::<CodeUnit>() == 2);
-
-impl CodeUnit {
-    pub fn new(op: Instruction, arg: OpArgByte) -> Self {
-        Self { op, arg }
-    }
-}
-
-use self::Instruction::*;
-
-bitflags! {
-    pub struct MakeFunctionFlags: u8 {
-        const CLOSURE = 0x01;
-        const ANNOTATIONS = 0x02;
-        const KW_ONLY_DEFAULTS = 0x04;
-        const DEFAULTS = 0x08;
-    }
-}
-impl OpArgType for MakeFunctionFlags {
-    #[inline(always)]
-    fn from_op_arg(x: u32) -> Option<Self> {
-        Some(unsafe { MakeFunctionFlags::from_bits_unchecked(x as u8) })
-    }
-    #[inline(always)]
-    fn to_op_arg(self) -> u32 {
-        self.bits().into()
-    }
-}
-
-/// A Constant (which usually encapsulates data within it)
-///
-/// # Examples
-/// ```
-/// use rustpython_compiler_core::ConstantData;
-/// let a = ConstantData::Float {value: 120f64};
-/// let b = ConstantData::Boolean {value: false};
-/// assert_ne!(a, b);
-/// ```
-#[derive(Debug, Clone)]
-pub enum ConstantData {
-    Tuple { elements: Vec<ConstantData> },
-    Integer { value: BigInt },
-    Float { value: f64 },
-    Complex { value: Complex64 },
-    Boolean { value: bool },
-    Str { value: String },
-    Bytes { value: Vec<u8> },
-    Code { code: Box<CodeObject> },
-    None,
-    Ellipsis,
-}
-
-impl PartialEq for ConstantData {
-    fn eq(&self, other: &Self) -> bool {
-        use ConstantData::*;
-        match (self, other) {
-            (Integer { value: a }, Integer { value: b }) => a == b,
-            // we want to compare floats *by actual value* - if we have the *exact same* float
-            // already in a constant cache, we want to use that
-            (Float { value: a }, Float { value: b }) => a.to_bits() == b.to_bits(),
-            (Complex { value: a }, Complex { value: b }) => {
-                a.re.to_bits() == b.re.to_bits() && a.im.to_bits() == b.im.to_bits()
-            }
-            (Boolean { value: a }, Boolean { value: b }) => a == b,
-            (Str { value: a }, Str { value: b }) => a == b,
-            (Bytes { value: a }, Bytes { value: b }) => a == b,
-            (Code { code: a }, Code { code: b }) => std::ptr::eq(a.as_ref(), b.as_ref()),
-            (Tuple { elements: a }, Tuple { elements: b }) => a == b,
-            (None, None) => true,
-            (Ellipsis, Ellipsis) => true,
-            _ => false,
-        }
-    }
-}
-
-impl Eq for ConstantData {}
-
-impl hash::Hash for ConstantData {
-    fn hash<H: hash::Hasher>(&self, state: &mut H) {
-        use ConstantData::*;
-        mem::discriminant(self).hash(state);
-        match self {
-            Integer { value } => value.hash(state),
-            Float { value } => value.to_bits().hash(state),
-            Complex { value } => {
-                value.re.to_bits().hash(state);
-                value.im.to_bits().hash(state);
-            }
-            Boolean { value } => value.hash(state),
-            Str { value } => value.hash(state),
-            Bytes { value } => value.hash(state),
-            Code { code } => std::ptr::hash(code.as_ref(), state),
-            Tuple { elements } => elements.hash(state),
-            None => {}
-            Ellipsis => {}
-        }
-    }
-}
-
-/// A borrowed Constant
-pub enum BorrowedConstant<'a, C: Constant> {
-    Integer { value: &'a BigInt },
-    Float { value: f64 },
-    Complex { value: Complex64 },
-    Boolean { value: bool },
-    Str { value: &'a str },
-    Bytes { value: &'a [u8] },
-    Code { code: &'a CodeObject<C> },
-    Tuple { elements: &'a [C] },
-    None,
-    Ellipsis,
-}
-
-impl<C: Constant> Copy for BorrowedConstant<'_, C> {}
-impl<C: Constant> Clone for BorrowedConstant<'_, C> {
-    fn clone(&self) -> Self {
-        *self
-    }
-}
-
-impl<C: Constant> BorrowedConstant<'_, C> {
-    pub fn fmt_display(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        match self {
-            BorrowedConstant::Integer { value } => write!(f, "{value}"),
-            BorrowedConstant::Float { value } => write!(f, "{value}"),
-            BorrowedConstant::Complex { value } => write!(f, "{value}"),
-            BorrowedConstant::Boolean { value } => {
-                write!(f, "{}", if *value { "True" } else { "False" })
-            }
-            BorrowedConstant::Str { value } => write!(f, "{value:?}"),
-            BorrowedConstant::Bytes { value } => write!(f, "b\"{}\"", value.escape_ascii()),
-            BorrowedConstant::Code { code } => write!(f, "{code:?}"),
-            BorrowedConstant::Tuple { elements } => {
-                write!(f, "(")?;
-                let mut first = true;
-                for c in *elements {
-                    if first {
-                        first = false
-                    } else {
-                        write!(f, ", ")?;
-                    }
-                    c.borrow_constant().fmt_display(f)?;
-                }
-                write!(f, ")")
-            }
-            BorrowedConstant::None => write!(f, "None"),
-            BorrowedConstant::Ellipsis => write!(f, "..."),
-        }
-    }
-    pub fn to_owned(self) -> ConstantData {
-        use ConstantData::*;
-        match self {
-            BorrowedConstant::Integer { value } => Integer {
-                value: value.clone(),
-            },
-            BorrowedConstant::Float { value } => Float { value },
-            BorrowedConstant::Complex { value } => Complex { value },
-            BorrowedConstant::Boolean { value } => Boolean { value },
-            BorrowedConstant::Str { value } => Str {
-                value: value.to_owned(),
-            },
-            BorrowedConstant::Bytes { value } => Bytes {
-                value: value.to_owned(),
-            },
-            BorrowedConstant::Code { code } => Code {
-                code: Box::new(code.map_clone_bag(&BasicBag)),
-            },
-            BorrowedConstant::Tuple { elements } => Tuple {
-                elements: elements
-                    .iter()
-                    .map(|c| c.borrow_constant().to_owned())
-                    .collect(),
-            },
-            BorrowedConstant::None => None,
-            BorrowedConstant::Ellipsis => Ellipsis,
-        }
-    }
-}
-
-op_arg_enum!(
-    /// The possible comparison operators
-    #[derive(Debug, Copy, Clone, PartialEq, Eq)]
-    #[repr(u8)]
-    pub enum ComparisonOperator {
-        // be intentional with bits so that we can do eval_ord with just a bitwise and
-        // bits: | Equal | Greater | Less |
-        Less = 0b001,
-        Greater = 0b010,
-        NotEqual = 0b011,
-        Equal = 0b100,
-        LessOrEqual = 0b101,
-        GreaterOrEqual = 0b110,
-    }
-);
-
-op_arg_enum!(
-    #[derive(Debug, Copy, Clone, PartialEq, Eq)]
-    #[repr(u8)]
-    pub enum TestOperator {
-        In = 0,
-        NotIn = 1,
-        Is = 2,
-        IsNot = 3,
-        /// two exceptions that match?
-        ExceptionMatch = 4,
-    }
-);
-
-op_arg_enum!(
-    /// The possible Binary operators
-    /// # Examples
-    ///
-    /// ```ignore
-    /// use rustpython_compiler_core::Instruction::BinaryOperation;
-    /// use rustpython_compiler_core::BinaryOperator::Add;
-    /// let op = BinaryOperation {op: Add};
-    /// ```
-    #[derive(Debug, Copy, Clone, PartialEq, Eq)]
-    #[repr(u8)]
-    pub enum BinaryOperator {
-        Power = 0,
-        Multiply = 1,
-        MatrixMultiply = 2,
-        Divide = 3,
-        FloorDivide = 4,
-        Modulo = 5,
-        Add = 6,
-        Subtract = 7,
-        Lshift = 8,
-        Rshift = 9,
-        And = 10,
-        Xor = 11,
-        Or = 12,
-    }
-);
-
-op_arg_enum!(
-    /// The possible unary operators
-    #[derive(Debug, Copy, Clone, PartialEq, Eq)]
-    #[repr(u8)]
-    pub enum UnaryOperator {
-        Not = 0,
-        Invert = 1,
-        Minus = 2,
-        Plus = 3,
-    }
-);
-
-#[derive(Copy, Clone)]
-pub struct UnpackExArgs {
-    pub before: u8,
-    pub after: u8,
-}
-
-impl OpArgType for UnpackExArgs {
-    #[inline(always)]
-    fn from_op_arg(x: u32) -> Option<Self> {
-        let [before, after, ..] = x.to_le_bytes();
-        Some(Self { before, after })
-    }
-    #[inline(always)]
-    fn to_op_arg(self) -> u32 {
-        u32::from_le_bytes([self.before, self.after, 0, 0])
-    }
-}
-impl fmt::Display for UnpackExArgs {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        write!(f, "before: {}, after: {}", self.before, self.after)
-    }
-}
-
-/*
-Maintain a stack of blocks on the VM.
-pub enum BlockType {
-    Loop,
-    Except,
-}
-*/
-
-/// Argument structure
-pub struct Arguments<'a, N: AsRef<str>> {
-    pub posonlyargs: &'a [N],
-    pub args: &'a [N],
-    pub vararg: Option<&'a N>,
-    pub kwonlyargs: &'a [N],
-    pub varkwarg: Option<&'a N>,
-}
-
-impl<N: AsRef<str>> fmt::Debug for Arguments<'_, N> {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        macro_rules! fmt_slice {
-            ($x:expr) => {
-                format_args!("[{}]", $x.iter().map(AsRef::as_ref).format(", "))
-            };
-        }
-        f.debug_struct("Arguments")
-            .field("posonlyargs", &fmt_slice!(self.posonlyargs))
-            .field("args", &fmt_slice!(self.posonlyargs))
-            .field("vararg", &self.vararg.map(N::as_ref))
-            .field("kwonlyargs", &fmt_slice!(self.kwonlyargs))
-            .field("varkwarg", &self.varkwarg.map(N::as_ref))
-            .finish()
-    }
-}
-
-impl<C: Constant> CodeObject<C> {
-    /// Get all arguments of the code object
-    /// like inspect.getargs
-    pub fn arg_names(&self) -> Arguments<C::Name> {
-        let nargs = self.arg_count as usize;
-        let nkwargs = self.kwonlyarg_count as usize;
-        let mut varargs_pos = nargs + nkwargs;
-        let posonlyargs = &self.varnames[..self.posonlyarg_count as usize];
-        let args = &self.varnames[..nargs];
-        let kwonlyargs = &self.varnames[nargs..varargs_pos];
-
-        let vararg = if self.flags.contains(CodeFlags::HAS_VARARGS) {
-            let vararg = &self.varnames[varargs_pos];
-            varargs_pos += 1;
-            Some(vararg)
-        } else {
-            None
-        };
-        let varkwarg = if self.flags.contains(CodeFlags::HAS_VARKEYWORDS) {
-            Some(&self.varnames[varargs_pos])
-        } else {
-            None
-        };
-
-        Arguments {
-            posonlyargs,
-            args,
-            vararg,
-            kwonlyargs,
-            varkwarg,
-        }
-    }
-
-    /// Return the labels targeted by the instructions of this CodeObject
-    pub fn label_targets(&self) -> BTreeSet<Label> {
-        let mut label_targets = BTreeSet::new();
-        let mut arg_state = OpArgState::default();
-        for instruction in &*self.instructions {
-            let (instruction, arg) = arg_state.get(*instruction);
-            if let Some(l) = instruction.label_arg() {
-                label_targets.insert(l.get(arg));
-            }
-        }
-        label_targets
-    }
-
-    fn display_inner(
-        &self,
-        f: &mut fmt::Formatter,
-        expand_code_objects: bool,
-        level: usize,
-    ) -> fmt::Result {
-        let label_targets = self.label_targets();
-        let line_digits = (3).max(self.locations.last().unwrap().row.to_string().len());
-        let offset_digits = (4).max(self.instructions.len().to_string().len());
-        let mut last_line = u32::MAX;
-        let mut arg_state = OpArgState::default();
-        for (offset, &instruction) in self.instructions.iter().enumerate() {
-            let (instruction, arg) = arg_state.get(instruction);
-            // optional line number
-            let line = self.locations[offset].row;
-            if line != last_line {
-                if last_line != u32::MAX {
-                    writeln!(f)?;
-                }
-                last_line = line;
-                write!(f, "{line:line_digits$}")?;
-            } else {
-                for _ in 0..line_digits {
-                    write!(f, " ")?;
-                }
-            }
-            write!(f, " ")?;
-
-            // level indent
-            for _ in 0..level {
-                write!(f, "    ")?;
-            }
-
-            // arrow and offset
-            let arrow = if label_targets.contains(&Label(offset as u32)) {
-                ">>"
-            } else {
-                "  "
-            };
-            write!(f, "{arrow} {offset:offset_digits$} ")?;
-
-            // instruction
-            instruction.fmt_dis(arg, f, self, expand_code_objects, 21, level)?;
-            writeln!(f)?;
-        }
-        Ok(())
-    }
-
-    /// Recursively display this CodeObject
-    pub fn display_expand_code_objects(&self) -> impl fmt::Display + '_ {
-        struct Display<'a, C: Constant>(&'a CodeObject<C>);
-        impl<C: Constant> fmt::Display for Display<'_, C> {
-            fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-                self.0.display_inner(f, true, 1)
-            }
-        }
-        Display(self)
-    }
-
-    /// Map this CodeObject to one that holds a Bag::Constant
-    pub fn map_bag<Bag: ConstantBag>(self, bag: Bag) -> CodeObject<Bag::Constant> {
-        let map_names = |names: Box<[C::Name]>| {
-            names
-                .into_vec()
-                .into_iter()
-                .map(|x| bag.make_name(x.as_ref()))
-                .collect::<Box<[_]>>()
-        };
-        CodeObject {
-            constants: self
-                .constants
-                .into_vec()
-                .into_iter()
-                .map(|x| bag.make_constant(x.borrow_constant()))
-                .collect(),
-            names: map_names(self.names),
-            varnames: map_names(self.varnames),
-            cellvars: map_names(self.cellvars),
-            freevars: map_names(self.freevars),
-            source_path: bag.make_name(self.source_path.as_ref()),
-            obj_name: bag.make_name(self.obj_name.as_ref()),
-
-            instructions: self.instructions,
-            locations: self.locations,
-            flags: self.flags,
-            posonlyarg_count: self.posonlyarg_count,
-            arg_count: self.arg_count,
-            kwonlyarg_count: self.kwonlyarg_count,
-            first_line_number: self.first_line_number,
-            max_stackdepth: self.max_stackdepth,
-            cell2arg: self.cell2arg,
-        }
-    }
-
-    /// Same as `map_bag` but clones `self`
-    pub fn map_clone_bag<Bag: ConstantBag>(&self, bag: &Bag) -> CodeObject<Bag::Constant> {
-        let map_names =
-            |names: &[C::Name]| names.iter().map(|x| bag.make_name(x.as_ref())).collect();
-        CodeObject {
-            constants: self
-                .constants
-                .iter()
-                .map(|x| bag.make_constant(x.borrow_constant()))
-                .collect(),
-            names: map_names(&self.names),
-            varnames: map_names(&self.varnames),
-            cellvars: map_names(&self.cellvars),
-            freevars: map_names(&self.freevars),
-            source_path: bag.make_name(self.source_path.as_ref()),
-            obj_name: bag.make_name(self.obj_name.as_ref()),
-
-            instructions: self.instructions.clone(),
-            locations: self.locations.clone(),
-            flags: self.flags,
-            posonlyarg_count: self.posonlyarg_count,
-            arg_count: self.arg_count,
-            kwonlyarg_count: self.kwonlyarg_count,
-            first_line_number: self.first_line_number,
-            max_stackdepth: self.max_stackdepth,
-            cell2arg: self.cell2arg.clone(),
-        }
-    }
-}
-
-impl<C: Constant> fmt::Display for CodeObject<C> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        self.display_inner(f, false, 1)?;
-        for constant in &*self.constants {
-            if let BorrowedConstant::Code { code } = constant.borrow_constant() {
-                writeln!(f, "\nDisassembly of {code:?}")?;
-                code.fmt(f)?;
-            }
-        }
-        Ok(())
-    }
-}
-
-impl Instruction {
-    /// Gets the label stored inside this instruction, if it exists
-    #[inline]
-    pub fn label_arg(&self) -> Option<Arg<Label>> {
-        match self {
-            Jump { target: l }
-            | JumpIfTrue { target: l }
-            | JumpIfFalse { target: l }
-            | JumpIfTrueOrPop { target: l }
-            | JumpIfFalseOrPop { target: l }
-            | ForIter { target: l }
-            | SetupFinally { handler: l }
-            | SetupExcept { handler: l }
-            | SetupWith { end: l }
-            | SetupAsyncWith { end: l }
-            | Break { target: l }
-            | Continue { target: l } => Some(*l),
-            _ => None,
-        }
-    }
-
-    /// Whether this is an unconditional branching
-    ///
-    /// # Examples
-    ///
-    /// ```
-    /// use rustpython_compiler_core::{Arg, Instruction};
-    /// let jump_inst = Instruction::Jump { target: Arg::marker() };
-    /// assert!(jump_inst.unconditional_branch())
-    /// ```
-    pub fn unconditional_branch(&self) -> bool {
-        matches!(
-            self,
-            Jump { .. } | Continue { .. } | Break { .. } | ReturnValue | Raise { .. }
-        )
-    }
-
-    /// What effect this instruction has on the stack
-    ///
-    /// # Examples
-    ///
-    /// ```
-    /// use rustpython_compiler_core::{Arg, Instruction, Label, UnaryOperator};
-    /// let (target, jump_arg) = Arg::new(Label(0xF));
-    /// let jump_instruction = Instruction::Jump { target };
-    /// let (op, invert_arg) = Arg::new(UnaryOperator::Invert);
-    /// let invert_instruction = Instruction::UnaryOperation { op };
-    /// assert_eq!(jump_instruction.stack_effect(jump_arg, true), 0);
-    /// assert_eq!(invert_instruction.stack_effect(invert_arg, false), 0);
-    /// ```
-    ///
-    pub fn stack_effect(&self, arg: OpArg, jump: bool) -> i32 {
-        match self {
-            ImportName { .. } | ImportNameless => -1,
-            ImportStar => -1,
-            ImportFrom { .. } => 1,
-            LoadFast(_) | LoadNameAny(_) | LoadGlobal(_) | LoadDeref(_) | LoadClassDeref(_) => 1,
-            StoreFast(_) | StoreLocal(_) | StoreGlobal(_) | StoreDeref(_) => -1,
-            DeleteFast(_) | DeleteLocal(_) | DeleteGlobal(_) | DeleteDeref(_) => 0,
-            LoadClosure(_) => 1,
-            Subscript => -1,
-            StoreSubscript => -3,
-            DeleteSubscript => -2,
-            LoadAttr { .. } => 0,
-            StoreAttr { .. } => -2,
-            DeleteAttr { .. } => -1,
-            LoadConst { .. } => 1,
-            UnaryOperation { .. } => 0,
-            BinaryOperation { .. }
-            | BinaryOperationInplace { .. }
-            | TestOperation { .. }
-            | CompareOperation { .. } => -1,
-            Pop => -1,
-            Rotate2 | Rotate3 => 0,
-            Duplicate => 1,
-            Duplicate2 => 2,
-            GetIter => 0,
-            Continue { .. } => 0,
-            Break { .. } => 0,
-            Jump { .. } => 0,
-            JumpIfTrue { .. } | JumpIfFalse { .. } => -1,
-            JumpIfTrueOrPop { .. } | JumpIfFalseOrPop { .. } => {
-                if jump {
-                    0
-                } else {
-                    -1
-                }
-            }
-            MakeFunction(flags) => {
-                let flags = flags.get(arg);
-                -2 - flags.contains(MakeFunctionFlags::CLOSURE) as i32
-                    - flags.contains(MakeFunctionFlags::ANNOTATIONS) as i32
-                    - flags.contains(MakeFunctionFlags::KW_ONLY_DEFAULTS) as i32
-                    - flags.contains(MakeFunctionFlags::DEFAULTS) as i32
-                    + 1
-            }
-            CallFunctionPositional { nargs } => -(nargs.get(arg) as i32) - 1 + 1,
-            CallMethodPositional { nargs } => -(nargs.get(arg) as i32) - 3 + 1,
-            CallFunctionKeyword { nargs } => -1 - (nargs.get(arg) as i32) - 1 + 1,
-            CallMethodKeyword { nargs } => -1 - (nargs.get(arg) as i32) - 3 + 1,
-            CallFunctionEx { has_kwargs } => -1 - (has_kwargs.get(arg) as i32) - 1 + 1,
-            CallMethodEx { has_kwargs } => -1 - (has_kwargs.get(arg) as i32) - 3 + 1,
-            LoadMethod { .. } => -1 + 3,
-            ForIter { .. } => {
-                if jump {
-                    -1
-                } else {
-                    1
-                }
-            }
-            ReturnValue => -1,
-            YieldValue => 0,
-            YieldFrom => -1,
-            SetupAnnotation | SetupLoop | SetupFinally { .. } | EnterFinally | EndFinally => 0,
-            SetupExcept { .. } => jump as i32,
-            SetupWith { .. } => (!jump) as i32,
-            WithCleanupStart => 0,
-            WithCleanupFinish => -1,
-            PopBlock => 0,
-            Raise { kind } => -(kind.get(arg) as u8 as i32),
-            BuildString { size }
-            | BuildTuple { size, .. }
-            | BuildTupleUnpack { size, .. }
-            | BuildList { size, .. }
-            | BuildListUnpack { size, .. }
-            | BuildSet { size, .. }
-            | BuildSetUnpack { size, .. } => -(size.get(arg) as i32) + 1,
-            BuildMap { size } => {
-                let nargs = size.get(arg) * 2;
-                -(nargs as i32) + 1
-            }
-            BuildMapForCall { size } => {
-                let nargs = size.get(arg);
-                -(nargs as i32) + 1
-            }
-            DictUpdate => -1,
-            BuildSlice { step } => -2 - (step.get(arg) as i32) + 1,
-            ListAppend { .. } | SetAdd { .. } => -1,
-            MapAdd { .. } => -2,
-            PrintExpr => -1,
-            LoadBuildClass => 1,
-            UnpackSequence { size } => -1 + size.get(arg) as i32,
-            UnpackEx { args } => {
-                let UnpackExArgs { before, after } = args.get(arg);
-                -1 + before as i32 + 1 + after as i32
-            }
-            FormatValue { .. } => -1,
-            PopException => 0,
-            Reverse { .. } => 0,
-            GetAwaitable => 0,
-            BeforeAsyncWith => 1,
-            SetupAsyncWith { .. } => {
-                if jump {
-                    -1
-                } else {
-                    0
-                }
-            }
-            GetAIter => 0,
-            GetANext => 1,
-            EndAsyncFor => -2,
-            ExtendedArg => 0,
-        }
-    }
-
-    pub fn display<'a>(
-        &'a self,
-        arg: OpArg,
-        ctx: &'a impl InstrDisplayContext,
-    ) -> impl fmt::Display + 'a {
-        struct FmtFn<F>(F);
-        impl<F: Fn(&mut fmt::Formatter) -> fmt::Result> fmt::Display for FmtFn<F> {
-            fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-                (self.0)(f)
-            }
-        }
-        FmtFn(move |f: &mut fmt::Formatter| self.fmt_dis(arg, f, ctx, false, 0, 0))
-    }
-
-    #[allow(clippy::too_many_arguments)]
-    fn fmt_dis(
-        &self,
-        arg: OpArg,
-        f: &mut fmt::Formatter,
-        ctx: &impl InstrDisplayContext,
-        expand_code_objects: bool,
-        pad: usize,
-        level: usize,
-    ) -> fmt::Result {
-        macro_rules! w {
-            ($variant:ident) => {
-                write!(f, stringify!($variant))
-            };
-            ($variant:ident, $map:ident = $arg_marker:expr) => {{
-                let arg = $arg_marker.get(arg);
-                write!(f, "{:pad$}({}, {})", stringify!($variant), arg, $map(arg))
-            }};
-            ($variant:ident, $arg_marker:expr) => {
-                write!(f, "{:pad$}({})", stringify!($variant), $arg_marker.get(arg))
-            };
-            ($variant:ident, ?$arg_marker:expr) => {
-                write!(
-                    f,
-                    "{:pad$}({:?})",
-                    stringify!($variant),
-                    $arg_marker.get(arg)
-                )
-            };
-        }
-
-        let varname = |i: u32| ctx.get_varname(i as usize);
-        let name = |i: u32| ctx.get_name(i as usize);
-        let cell_name = |i: u32| ctx.get_cell_name(i as usize);
-
-        match self {
-            ImportName { idx } => w!(ImportName, name = idx),
-            ImportNameless => w!(ImportNameless),
-            ImportStar => w!(ImportStar),
-            ImportFrom { idx } => w!(ImportFrom, name = idx),
-            LoadFast(idx) => w!(LoadFast, varname = idx),
-            LoadNameAny(idx) => w!(LoadNameAny, name = idx),
-            LoadGlobal(idx) => w!(LoadGlobal, name = idx),
-            LoadDeref(idx) => w!(LoadDeref, cell_name = idx),
-            LoadClassDeref(idx) => w!(LoadClassDeref, cell_name = idx),
-            StoreFast(idx) => w!(StoreFast, varname = idx),
-            StoreLocal(idx) => w!(StoreLocal, name = idx),
-            StoreGlobal(idx) => w!(StoreGlobal, name = idx),
-            StoreDeref(idx) => w!(StoreDeref, cell_name = idx),
-            DeleteFast(idx) => w!(DeleteFast, varname = idx),
-            DeleteLocal(idx) => w!(DeleteLocal, name = idx),
-            DeleteGlobal(idx) => w!(DeleteGlobal, name = idx),
-            DeleteDeref(idx) => w!(DeleteDeref, cell_name = idx),
-            LoadClosure(i) => w!(LoadClosure, cell_name = i),
-            Subscript => w!(Subscript),
-            StoreSubscript => w!(StoreSubscript),
-            DeleteSubscript => w!(DeleteSubscript),
-            StoreAttr { idx } => w!(StoreAttr, name = idx),
-            DeleteAttr { idx } => w!(DeleteAttr, name = idx),
-            LoadConst { idx } => {
-                let value = ctx.get_constant(idx.get(arg) as usize);
-                match value.borrow_constant() {
-                    BorrowedConstant::Code { code } if expand_code_objects => {
-                        write!(f, "{:pad$}({:?}):", "LoadConst", code)?;
-                        code.display_inner(f, true, level + 1)?;
-                        Ok(())
-                    }
-                    c => {
-                        write!(f, "{:pad$}(", "LoadConst")?;
-                        c.fmt_display(f)?;
-                        write!(f, ")")
-                    }
-                }
-            }
-            UnaryOperation { op } => w!(UnaryOperation, ?op),
-            BinaryOperation { op } => w!(BinaryOperation, ?op),
-            BinaryOperationInplace { op } => w!(BinaryOperationInplace, ?op),
-            LoadAttr { idx } => w!(LoadAttr, name = idx),
-            TestOperation { op } => w!(TestOperation, ?op),
-            CompareOperation { op } => w!(CompareOperation, ?op),
-            Pop => w!(Pop),
-            Rotate2 => w!(Rotate2),
-            Rotate3 => w!(Rotate3),
-            Duplicate => w!(Duplicate),
-            Duplicate2 => w!(Duplicate2),
-            GetIter => w!(GetIter),
-            Continue { target } => w!(Continue, target),
-            Break { target } => w!(Break, target),
-            Jump { target } => w!(Jump, target),
-            JumpIfTrue { target } => w!(JumpIfTrue, target),
-            JumpIfFalse { target } => w!(JumpIfFalse, target),
-            JumpIfTrueOrPop { target } => w!(JumpIfTrueOrPop, target),
-            JumpIfFalseOrPop { target } => w!(JumpIfFalseOrPop, target),
-            MakeFunction(flags) => w!(MakeFunction, ?flags),
-            CallFunctionPositional { nargs } => w!(CallFunctionPositional, nargs),
-            CallFunctionKeyword { nargs } => w!(CallFunctionKeyword, nargs),
-            CallFunctionEx { has_kwargs } => w!(CallFunctionEx, has_kwargs),
-            LoadMethod { idx } => w!(LoadMethod, name = idx),
-            CallMethodPositional { nargs } => w!(CallMethodPositional, nargs),
-            CallMethodKeyword { nargs } => w!(CallMethodKeyword, nargs),
-            CallMethodEx { has_kwargs } => w!(CallMethodEx, has_kwargs),
-            ForIter { target } => w!(ForIter, target),
-            ReturnValue => w!(ReturnValue),
-            YieldValue => w!(YieldValue),
-            YieldFrom => w!(YieldFrom),
-            SetupAnnotation => w!(SetupAnnotation),
-            SetupLoop => w!(SetupLoop),
-            SetupExcept { handler } => w!(SetupExcept, handler),
-            SetupFinally { handler } => w!(SetupFinally, handler),
-            EnterFinally => w!(EnterFinally),
-            EndFinally => w!(EndFinally),
-            SetupWith { end } => w!(SetupWith, end),
-            WithCleanupStart => w!(WithCleanupStart),
-            WithCleanupFinish => w!(WithCleanupFinish),
-            BeforeAsyncWith => w!(BeforeAsyncWith),
-            SetupAsyncWith { end } => w!(SetupAsyncWith, end),
-            PopBlock => w!(PopBlock),
-            Raise { kind } => w!(Raise, ?kind),
-            BuildString { size } => w!(BuildString, size),
-            BuildTuple { size } => w!(BuildTuple, size),
-            BuildTupleUnpack { size } => w!(BuildTupleUnpack, size),
-            BuildList { size } => w!(BuildList, size),
-            BuildListUnpack { size } => w!(BuildListUnpack, size),
-            BuildSet { size } => w!(BuildSet, size),
-            BuildSetUnpack { size } => w!(BuildSetUnpack, size),
-            BuildMap { size } => w!(BuildMap, size),
-            BuildMapForCall { size } => w!(BuildMap, size),
-            DictUpdate => w!(DictUpdate),
-            BuildSlice { step } => w!(BuildSlice, step),
-            ListAppend { i } => w!(ListAppend, i),
-            SetAdd { i } => w!(SetAdd, i),
-            MapAdd { i } => w!(MapAdd, i),
-            PrintExpr => w!(PrintExpr),
-            LoadBuildClass => w!(LoadBuildClass),
-            UnpackSequence { size } => w!(UnpackSequence, size),
-            UnpackEx { args } => w!(UnpackEx, args),
-            FormatValue { conversion } => w!(FormatValue, ?conversion),
-            PopException => w!(PopException),
-            Reverse { amount } => w!(Reverse, amount),
-            GetAwaitable => w!(GetAwaitable),
-            GetAIter => w!(GetAIter),
-            GetANext => w!(GetANext),
-            EndAsyncFor => w!(EndAsyncFor),
-            ExtendedArg => w!(ExtendedArg, Arg::<u32>::marker()),
-        }
-    }
-}
-
-pub trait InstrDisplayContext {
-    type Constant: Constant;
-    fn get_constant(&self, i: usize) -> &Self::Constant;
-    fn get_name(&self, i: usize) -> &str;
-    fn get_varname(&self, i: usize) -> &str;
-    fn get_cell_name(&self, i: usize) -> &str;
-}
-
-impl<C: Constant> InstrDisplayContext for CodeObject<C> {
-    type Constant = C;
-    fn get_constant(&self, i: usize) -> &C {
-        &self.constants[i]
-    }
-    fn get_name(&self, i: usize) -> &str {
-        self.names[i].as_ref()
-    }
-    fn get_varname(&self, i: usize) -> &str {
-        self.varnames[i].as_ref()
-    }
-    fn get_cell_name(&self, i: usize) -> &str {
-        self.cellvars
-            .get(i)
-            .unwrap_or_else(|| &self.freevars[i - self.cellvars.len()])
-            .as_ref()
-    }
-}
-
-impl fmt::Display for ConstantData {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        self.borrow_constant().fmt_display(f)
-    }
-}
-
-impl<C: Constant> fmt::Debug for CodeObject<C> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        write!(
-            f,
-            "<code object {} at ??? file {:?}, line {}>",
-            self.obj_name.as_ref(),
-            self.source_path.as_ref(),
-            self.first_line_number
-        )
-    }
-}
-
-pub mod frozen_lib {
-    use super::*;
-    use marshal::{Read, ReadBorrowed, Write};
-
-    /// A frozen module. Holds a frozen code object and whether it is part of a package
-    #[derive(Copy, Clone)]
-    pub struct FrozenModule<B = &'static [u8]> {
-        pub code: FrozenCodeObject<B>,
-        pub package: bool,
-    }
-
-    #[derive(Copy, Clone)]
-    pub struct FrozenCodeObject<B> {
-        pub bytes: B,
-    }
-
-    impl<B: AsRef<[u8]>> FrozenCodeObject<B> {
-        /// Decode a frozen code object
-        #[inline]
-        pub fn decode<Bag: AsBag>(
-            &self,
-            bag: Bag,
-        ) -> CodeObject<<Bag::Bag as ConstantBag>::Constant> {
-            Self::_decode(self.bytes.as_ref(), bag.as_bag())
-        }
-        fn _decode<Bag: ConstantBag>(data: &[u8], bag: Bag) -> CodeObject<Bag::Constant> {
-            let decompressed = lz4_flex::decompress_size_prepended(data)
-                .expect("deserialize frozen CodeObject failed");
-            marshal::deserialize_code(&mut &decompressed[..], bag)
-                .expect("deserializing frozen CodeObject failed")
-        }
-    }
-
-    impl FrozenCodeObject<Vec<u8>> {
-        pub fn encode<C: Constant>(code: &CodeObject<C>) -> Self {
-            let mut data = Vec::new();
-            marshal::serialize_code(&mut data, code);
-            let bytes = lz4_flex::compress_prepend_size(&data);
-            FrozenCodeObject { bytes }
-        }
-    }
-
-    #[repr(transparent)]
-    pub struct FrozenLib<B: ?Sized = [u8]> {
-        pub bytes: B,
-    }
-
-    impl<B: AsRef<[u8]> + ?Sized> FrozenLib<B> {
-        pub const fn from_ref(b: &B) -> &FrozenLib<B> {
-            unsafe { &*(b as *const B as *const FrozenLib<B>) }
-        }
-
-        /// Decode a library to a iterable of frozen modules
-        pub fn decode(&self) -> FrozenModulesIter<'_> {
-            let mut data = self.bytes.as_ref();
-            let remaining = data.read_u32().unwrap();
-            FrozenModulesIter { remaining, data }
-        }
-    }
-
-    impl<'a, B: AsRef<[u8]> + ?Sized> IntoIterator for &'a FrozenLib<B> {
-        type Item = (&'a str, FrozenModule<&'a [u8]>);
-        type IntoIter = FrozenModulesIter<'a>;
-        fn into_iter(self) -> Self::IntoIter {
-            self.decode()
-        }
-    }
-
-    pub struct FrozenModulesIter<'a> {
-        remaining: u32,
-        data: &'a [u8],
-    }
-
-    impl<'a> Iterator for FrozenModulesIter<'a> {
-        type Item = (&'a str, FrozenModule<&'a [u8]>);
-
-        fn next(&mut self) -> Option<Self::Item> {
-            if self.remaining > 0 {
-                let entry = read_entry(&mut self.data).unwrap();
-                self.remaining -= 1;
-                Some(entry)
-            } else {
-                None
-            }
-        }
-
-        fn size_hint(&self) -> (usize, Option<usize>) {
-            (self.remaining as usize, Some(self.remaining as usize))
-        }
-    }
-    impl ExactSizeIterator for FrozenModulesIter<'_> {}
-
-    fn read_entry<'a>(
-        rdr: &mut &'a [u8],
-    ) -> Result<(&'a str, FrozenModule<&'a [u8]>), marshal::MarshalError> {
-        let len = rdr.read_u32()?;
-        let name = rdr.read_str_borrow(len)?;
-        let len = rdr.read_u32()?;
-        let code_slice = rdr.read_slice_borrow(len)?;
-        let code = FrozenCodeObject { bytes: code_slice };
-        let package = rdr.read_u8()? != 0;
-        Ok((name, FrozenModule { code, package }))
-    }
-
-    impl FrozenLib<Vec<u8>> {
-        /// Encode the given iterator of frozen modules into a compressed vector of bytes
-        pub fn encode<'a, I, B: AsRef<[u8]>>(lib: I) -> FrozenLib<Vec<u8>>
-        where
-            I: IntoIterator<Item = (&'a str, FrozenModule<B>)>,
-            I::IntoIter: ExactSizeIterator + Clone,
-        {
-            let iter = lib.into_iter();
-            let mut bytes = Vec::new();
-            write_lib(&mut bytes, iter);
-            Self { bytes }
-        }
-    }
-
-    fn write_lib<'a, B: AsRef<[u8]>>(
-        buf: &mut Vec<u8>,
-        lib: impl ExactSizeIterator<Item = (&'a str, FrozenModule<B>)>,
-    ) {
-        marshal::write_len(buf, lib.len());
-        for (name, module) in lib {
-            write_entry(buf, name, module);
-        }
-    }
-
-    fn write_entry(buf: &mut Vec<u8>, name: &str, module: FrozenModule<impl AsRef<[u8]>>) {
-        marshal::write_vec(buf, name.as_bytes());
-        marshal::write_vec(buf, module.code.bytes.as_ref());
-        buf.write_u8(module.package as u8);
-    }
-}
diff --git a/compiler/core/src/error.rs b/compiler/core/src/error.rs
deleted file mode 100644
index 813ca9832f..0000000000
--- a/compiler/core/src/error.rs
+++ /dev/null
@@ -1,116 +0,0 @@
-use crate::Location;
-use std::error::Error as StdError;
-use std::fmt::Display;
-
-#[derive(Debug, PartialEq, Eq)]
-pub struct BaseError<T> {
-    pub error: T,
-    pub location: Location,
-    pub source_path: String,
-}
-
-impl<T> std::ops::Deref for BaseError<T> {
-    type Target = T;
-
-    fn deref(&self) -> &Self::Target {
-        &self.error
-    }
-}
-
-impl<T> StdError for BaseError<T>
-where
-    T: StdError + 'static,
-{
-    fn source(&self) -> Option<&(dyn StdError + 'static)> {
-        Some(&self.error)
-    }
-}
-
-impl<T> Display for BaseError<T>
-where
-    T: std::fmt::Display,
-{
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        self.location.fmt_with(f, &self.error)
-    }
-}
-
-impl<T> BaseError<T> {
-    pub fn error(self) -> T {
-        self.error
-    }
-
-    pub fn from<U>(obj: BaseError<U>) -> Self
-    where
-        U: Into<T>,
-    {
-        Self {
-            error: obj.error.into(),
-            location: obj.location,
-            source_path: obj.source_path,
-        }
-    }
-
-    pub fn into<U>(self) -> BaseError<U>
-    where
-        T: Into<U>,
-    {
-        BaseError::from(self)
-    }
-}
-
-#[derive(Debug)]
-pub struct CompileError<T> {
-    pub body: BaseError<T>,
-    pub statement: Option<String>,
-}
-
-impl<T: StdError + 'static> StdError for CompileError<T> {
-    fn source(&self) -> Option<&(dyn StdError + 'static)> {
-        self.body.source()
-    }
-}
-
-impl<T> std::ops::Deref for CompileError<T> {
-    type Target = BaseError<T>;
-    fn deref(&self) -> &Self::Target {
-        &self.body
-    }
-}
-
-impl<T> std::fmt::Display for CompileError<T>
-where
-    T: std::fmt::Display,
-{
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        let loc = self.location;
-        if let Some(ref stmt) = self.statement {
-            // visualize the error when location and statement are provided
-            loc.fmt_with(f, &self.error)?;
-            write!(f, "\n{stmt}{arrow:>pad$}", pad = loc.column(), arrow = "^")
-        } else {
-            loc.fmt_with(f, &self.error)
-        }
-    }
-}
-
-impl<T> CompileError<T> {
-    pub fn from<U>(error: BaseError<U>, source: &str) -> Self
-    where
-        T: From<U>,
-    {
-        let statement = get_statement(source, error.location);
-        CompileError {
-            body: error.into(),
-            statement,
-        }
-    }
-}
-
-fn get_statement(source: &str, loc: Location) -> Option<String> {
-    if loc.column() == 0 || loc.row() == 0 {
-        return None;
-    }
-    let line = source.split('\n').nth(loc.row() - 1)?.to_owned();
-    Some(line + "\n")
-}
diff --git a/compiler/core/src/lib.rs b/compiler/core/src/lib.rs
deleted file mode 100644
index c431095f4a..0000000000
--- a/compiler/core/src/lib.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![doc(html_logo_url = "https://raw.githubusercontent.com/RustPython/RustPython/main/logo.png")]
-#![doc(html_root_url = "https://docs.rs/rustpython-compiler-core/")]
-
-mod bytecode;
-mod error;
-mod location;
-pub mod marshal;
-mod mode;
-
-pub use bytecode::*;
-pub use error::{BaseError, CompileError};
-pub use location::Location;
-pub use mode::Mode;
diff --git a/compiler/core/src/location.rs b/compiler/core/src/location.rs
deleted file mode 100644
index 3384139265..0000000000
--- a/compiler/core/src/location.rs
+++ /dev/null
@@ -1,128 +0,0 @@
-#[cfg(feature = "serde")]
-use serde::{Deserialize, Serialize};
-
-/// Source code location.
-#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
-#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
-pub struct Location {
-    pub(super) row: u32,
-    pub(super) column: u32,
-}
-
-impl Default for Location {
-    fn default() -> Self {
-        Self { row: 1, column: 0 }
-    }
-}
-
-impl Location {
-    pub fn fmt_with(
-        &self,
-        f: &mut std::fmt::Formatter,
-        e: &impl std::fmt::Display,
-    ) -> std::fmt::Result {
-        write!(f, "{} at line {} column {}", e, self.row(), self.column())
-    }
-}
-
-impl Location {
-    /// Creates a new Location object at the given row and column.
-    ///
-    /// # Example
-    /// ```
-    /// use rustpython_compiler_core::Location;
-    /// let loc = Location::new(10, 10);
-    /// ```
-    pub fn new(row: usize, column: usize) -> Self {
-        let row = row.try_into().expect("Location::row over u32");
-        let column = column.try_into().expect("Location::column over u32");
-        Location { row, column }
-    }
-
-    /// Current row
-    pub fn row(&self) -> usize {
-        self.row as usize
-    }
-
-    /// Current column
-    pub fn column(&self) -> usize {
-        self.column as usize
-    }
-
-    pub fn reset(&mut self) {
-        self.row = 1;
-        self.column = 0;
-    }
-
-    pub fn go_right(&mut self) {
-        self.column += 1;
-    }
-
-    pub fn go_left(&mut self) {
-        self.column -= 1;
-    }
-
-    pub fn newline(&mut self) {
-        self.row += 1;
-        self.column = 0;
-    }
-
-    pub fn with_col_offset<T: TryInto<isize>>(&self, offset: T) -> Self
-    where
-        <T as TryInto<isize>>::Error: std::fmt::Debug,
-    {
-        let column = (self.column as isize
-            + offset
-                .try_into()
-                .expect("offset should be able to convert to isize")) as u32;
-        Self {
-            row: self.row,
-            column,
-        }
-    }
-
-    pub fn with_row_offset<T: TryInto<isize>>(&self, offset: T) -> Self
-    where
-        <T as TryInto<isize>>::Error: std::fmt::Debug,
-    {
-        let row = (self.row as isize
-            + offset
-                .try_into()
-                .expect("offset should be able to convert to isize")) as u32;
-        Self {
-            row,
-            column: self.column,
-        }
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_gt() {
-        assert!(Location::new(1, 2) > Location::new(1, 1));
-        assert!(Location::new(2, 1) > Location::new(1, 1));
-        assert!(Location::new(2, 1) > Location::new(1, 2));
-    }
-
-    #[test]
-    fn test_lt() {
-        assert!(Location::new(1, 1) < Location::new(1, 2));
-        assert!(Location::new(1, 1) < Location::new(2, 1));
-        assert!(Location::new(1, 2) < Location::new(2, 1));
-    }
-
-    #[test]
-    fn test_with_col_offset() {
-        assert_eq!(Location::new(1, 1).with_col_offset(1), Location::new(1, 2));
-        assert_eq!(Location::new(1, 1).with_col_offset(-1), Location::new(1, 0));
-    }
-
-    #[test]
-    fn test_with_row_offset() {
-        assert_eq!(Location::new(1, 1).with_row_offset(1), Location::new(2, 1));
-        assert_eq!(Location::new(1, 1).with_row_offset(-1), Location::new(0, 1));
-    }
-}
diff --git a/compiler/core/src/marshal.rs b/compiler/core/src/marshal.rs
deleted file mode 100644
index e9f962fd14..0000000000
--- a/compiler/core/src/marshal.rs
+++ /dev/null
@@ -1,628 +0,0 @@
-use core::fmt;
-use std::convert::Infallible;
-
-use num_bigint::{BigInt, Sign};
-use num_complex::Complex64;
-
-use crate::{bytecode::*, Location};
-
-pub const FORMAT_VERSION: u32 = 4;
-
-#[derive(Debug)]
-pub enum MarshalError {
-    /// Unexpected End Of File
-    Eof,
-    /// Invalid Bytecode
-    InvalidBytecode,
-    /// Invalid utf8 in string
-    InvalidUtf8,
-    /// Bad type marker
-    BadType,
-}
-
-impl fmt::Display for MarshalError {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        match self {
-            Self::Eof => f.write_str("unexpected end of data"),
-            Self::InvalidBytecode => f.write_str("invalid bytecode"),
-            Self::InvalidUtf8 => f.write_str("invalid utf8"),
-            Self::BadType => f.write_str("bad type marker"),
-        }
-    }
-}
-
-impl From<std::str::Utf8Error> for MarshalError {
-    fn from(_: std::str::Utf8Error) -> Self {
-        Self::InvalidUtf8
-    }
-}
-
-impl std::error::Error for MarshalError {}
-
-type Result<T, E = MarshalError> = std::result::Result<T, E>;
-
-#[repr(u8)]
-enum Type {
-    // Null = b'0',
-    None = b'N',
-    False = b'F',
-    True = b'T',
-    StopIter = b'S',
-    Ellipsis = b'.',
-    Int = b'i',
-    Float = b'g',
-    Complex = b'y',
-    // Long = b'l',  // i32
-    Bytes = b's', // = TYPE_STRING
-    // Interned = b't',
-    // Ref = b'r',
-    Tuple = b'(',
-    List = b'[',
-    Dict = b'{',
-    Code = b'c',
-    Unicode = b'u',
-    // Unknown = b'?',
-    Set = b'<',
-    FrozenSet = b'>',
-    Ascii = b'a',
-    // AsciiInterned = b'A',
-    // SmallTuple = b')',
-    // ShortAscii = b'z',
-    // ShortAsciiInterned = b'Z',
-}
-// const FLAG_REF: u8 = b'\x80';
-
-impl TryFrom<u8> for Type {
-    type Error = MarshalError;
-    fn try_from(value: u8) -> Result<Self> {
-        use Type::*;
-        Ok(match value {
-            // b'0' => Null,
-            b'N' => None,
-            b'F' => False,
-            b'T' => True,
-            b'S' => StopIter,
-            b'.' => Ellipsis,
-            b'i' => Int,
-            b'g' => Float,
-            b'y' => Complex,
-            // b'l' => Long,
-            b's' => Bytes,
-            // b't' => Interned,
-            // b'r' => Ref,
-            b'(' => Tuple,
-            b'[' => List,
-            b'{' => Dict,
-            b'c' => Code,
-            b'u' => Unicode,
-            // b'?' => Unknown,
-            b'<' => Set,
-            b'>' => FrozenSet,
-            b'a' => Ascii,
-            // b'A' => AsciiInterned,
-            // b')' => SmallTuple,
-            // b'z' => ShortAscii,
-            // b'Z' => ShortAsciiInterned,
-            _ => return Err(MarshalError::BadType),
-        })
-    }
-}
-
-pub trait Read {
-    fn read_slice(&mut self, n: u32) -> Result<&[u8]>;
-    fn read_array<const N: usize>(&mut self) -> Result<&[u8; N]> {
-        self.read_slice(N as u32).map(|s| s.try_into().unwrap())
-    }
-    fn read_str(&mut self, len: u32) -> Result<&str> {
-        Ok(std::str::from_utf8(self.read_slice(len)?)?)
-    }
-    fn read_u8(&mut self) -> Result<u8> {
-        Ok(u8::from_le_bytes(*self.read_array()?))
-    }
-    fn read_u16(&mut self) -> Result<u16> {
-        Ok(u16::from_le_bytes(*self.read_array()?))
-    }
-    fn read_u32(&mut self) -> Result<u32> {
-        Ok(u32::from_le_bytes(*self.read_array()?))
-    }
-    fn read_u64(&mut self) -> Result<u64> {
-        Ok(u64::from_le_bytes(*self.read_array()?))
-    }
-}
-
-pub(crate) trait ReadBorrowed<'a>: Read {
-    fn read_slice_borrow(&mut self, n: u32) -> Result<&'a [u8]>;
-    fn read_str_borrow(&mut self, len: u32) -> Result<&'a str> {
-        Ok(std::str::from_utf8(self.read_slice_borrow(len)?)?)
-    }
-}
-
-impl Read for &[u8] {
-    fn read_slice(&mut self, n: u32) -> Result<&[u8]> {
-        self.read_slice_borrow(n)
-    }
-}
-
-impl<'a> ReadBorrowed<'a> for &'a [u8] {
-    fn read_slice_borrow(&mut self, n: u32) -> Result<&'a [u8]> {
-        let data = self.get(..n as usize).ok_or(MarshalError::Eof)?;
-        *self = &self[n as usize..];
-        Ok(data)
-    }
-}
-
-pub struct Cursor<B> {
-    pub data: B,
-    pub position: usize,
-}
-
-impl<B: AsRef<[u8]>> Read for Cursor<B> {
-    fn read_slice(&mut self, n: u32) -> Result<&[u8]> {
-        let data = &self.data.as_ref()[self.position..];
-        let slice = data.get(..n as usize).ok_or(MarshalError::Eof)?;
-        self.position += n as usize;
-        Ok(slice)
-    }
-}
-
-pub fn deserialize_code<R: Read, Bag: ConstantBag>(
-    rdr: &mut R,
-    bag: Bag,
-) -> Result<CodeObject<Bag::Constant>> {
-    let len = rdr.read_u32()?;
-    let instructions = rdr.read_slice(len * 2)?;
-    let instructions = instructions
-        .chunks_exact(2)
-        .map(|cu| {
-            let op = Instruction::try_from(cu[0])?;
-            let arg = OpArgByte(cu[1]);
-            Ok(CodeUnit { op, arg })
-        })
-        .collect::<Result<Box<[CodeUnit]>>>()?;
-
-    let len = rdr.read_u32()?;
-    let locations = (0..len)
-        .map(|_| {
-            Ok(Location {
-                row: rdr.read_u32()?,
-                column: rdr.read_u32()?,
-            })
-        })
-        .collect::<Result<Box<[Location]>>>()?;
-
-    let flags = CodeFlags::from_bits_truncate(rdr.read_u16()?);
-
-    let posonlyarg_count = rdr.read_u32()?;
-    let arg_count = rdr.read_u32()?;
-    let kwonlyarg_count = rdr.read_u32()?;
-
-    let len = rdr.read_u32()?;
-    let source_path = bag.make_name(rdr.read_str(len)?);
-
-    let first_line_number = rdr.read_u32()?;
-    let max_stackdepth = rdr.read_u32()?;
-
-    let len = rdr.read_u32()?;
-    let obj_name = bag.make_name(rdr.read_str(len)?);
-
-    let len = rdr.read_u32()?;
-    let cell2arg = (len != 0)
-        .then(|| {
-            (0..len)
-                .map(|_| Ok(rdr.read_u32()? as i32))
-                .collect::<Result<Box<[i32]>>>()
-        })
-        .transpose()?;
-
-    let len = rdr.read_u32()?;
-    let constants = (0..len)
-        .map(|_| deserialize_value(rdr, bag))
-        .collect::<Result<Box<[_]>>>()?;
-
-    let mut read_names = || {
-        let len = rdr.read_u32()?;
-        (0..len)
-            .map(|_| {
-                let len = rdr.read_u32()?;
-                Ok(bag.make_name(rdr.read_str(len)?))
-            })
-            .collect::<Result<Box<[_]>>>()
-    };
-
-    let names = read_names()?;
-    let varnames = read_names()?;
-    let cellvars = read_names()?;
-    let freevars = read_names()?;
-
-    Ok(CodeObject {
-        instructions,
-        locations,
-        flags,
-        posonlyarg_count,
-        arg_count,
-        kwonlyarg_count,
-        source_path,
-        first_line_number,
-        max_stackdepth,
-        obj_name,
-        cell2arg,
-        constants,
-        names,
-        varnames,
-        cellvars,
-        freevars,
-    })
-}
-
-pub trait MarshalBag: Copy {
-    type Value;
-    fn make_bool(&self, value: bool) -> Self::Value;
-    fn make_none(&self) -> Self::Value;
-    fn make_ellipsis(&self) -> Self::Value;
-    fn make_float(&self, value: f64) -> Self::Value;
-    fn make_complex(&self, value: Complex64) -> Self::Value;
-    fn make_str(&self, value: &str) -> Self::Value;
-    fn make_bytes(&self, value: &[u8]) -> Self::Value;
-    fn make_int(&self, value: BigInt) -> Self::Value;
-    fn make_tuple(&self, elements: impl Iterator<Item = Self::Value>) -> Self::Value;
-    fn make_code(
-        &self,
-        code: CodeObject<<Self::ConstantBag as ConstantBag>::Constant>,
-    ) -> Self::Value;
-    fn make_stop_iter(&self) -> Result<Self::Value>;
-    fn make_list(&self, it: impl Iterator<Item = Self::Value>) -> Result<Self::Value>;
-    fn make_set(&self, it: impl Iterator<Item = Self::Value>) -> Result<Self::Value>;
-    fn make_frozenset(&self, it: impl Iterator<Item = Self::Value>) -> Result<Self::Value>;
-    fn make_dict(
-        &self,
-        it: impl Iterator<Item = (Self::Value, Self::Value)>,
-    ) -> Result<Self::Value>;
-    type ConstantBag: ConstantBag;
-    fn constant_bag(self) -> Self::ConstantBag;
-}
-
-impl<Bag: ConstantBag> MarshalBag for Bag {
-    type Value = Bag::Constant;
-    fn make_bool(&self, value: bool) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::Boolean { value })
-    }
-    fn make_none(&self) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::None)
-    }
-    fn make_ellipsis(&self) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::Ellipsis)
-    }
-    fn make_float(&self, value: f64) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::Float { value })
-    }
-    fn make_complex(&self, value: Complex64) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::Complex { value })
-    }
-    fn make_str(&self, value: &str) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::Str { value })
-    }
-    fn make_bytes(&self, value: &[u8]) -> Self::Value {
-        self.make_constant::<Bag::Constant>(BorrowedConstant::Bytes { value })
-    }
-    fn make_int(&self, value: BigInt) -> Self::Value {
-        self.make_int(value)
-    }
-    fn make_tuple(&self, elements: impl Iterator<Item = Self::Value>) -> Self::Value {
-        self.make_tuple(elements)
-    }
-    fn make_code(
-        &self,
-        code: CodeObject<<Self::ConstantBag as ConstantBag>::Constant>,
-    ) -> Self::Value {
-        self.make_code(code)
-    }
-    fn make_stop_iter(&self) -> Result<Self::Value> {
-        Err(MarshalError::BadType)
-    }
-    fn make_list(&self, _: impl Iterator<Item = Self::Value>) -> Result<Self::Value> {
-        Err(MarshalError::BadType)
-    }
-    fn make_set(&self, _: impl Iterator<Item = Self::Value>) -> Result<Self::Value> {
-        Err(MarshalError::BadType)
-    }
-    fn make_frozenset(&self, _: impl Iterator<Item = Self::Value>) -> Result<Self::Value> {
-        Err(MarshalError::BadType)
-    }
-    fn make_dict(
-        &self,
-        _: impl Iterator<Item = (Self::Value, Self::Value)>,
-    ) -> Result<Self::Value> {
-        Err(MarshalError::BadType)
-    }
-    type ConstantBag = Self;
-    fn constant_bag(self) -> Self::ConstantBag {
-        self
-    }
-}
-
-pub fn deserialize_value<R: Read, Bag: MarshalBag>(rdr: &mut R, bag: Bag) -> Result<Bag::Value> {
-    let typ = Type::try_from(rdr.read_u8()?)?;
-    let value = match typ {
-        Type::True => bag.make_bool(true),
-        Type::False => bag.make_bool(false),
-        Type::None => bag.make_none(),
-        Type::StopIter => bag.make_stop_iter()?,
-        Type::Ellipsis => bag.make_ellipsis(),
-        Type::Int => {
-            let len = rdr.read_u32()? as i32;
-            let sign = if len < 0 { Sign::Minus } else { Sign::Plus };
-            let bytes = rdr.read_slice(len.unsigned_abs())?;
-            let int = BigInt::from_bytes_le(sign, bytes);
-            bag.make_int(int)
-        }
-        Type::Float => {
-            let value = f64::from_bits(rdr.read_u64()?);
-            bag.make_float(value)
-        }
-        Type::Complex => {
-            let re = f64::from_bits(rdr.read_u64()?);
-            let im = f64::from_bits(rdr.read_u64()?);
-            let value = Complex64 { re, im };
-            bag.make_complex(value)
-        }
-        Type::Ascii | Type::Unicode => {
-            let len = rdr.read_u32()?;
-            let value = rdr.read_str(len)?;
-            bag.make_str(value)
-        }
-        Type::Tuple => {
-            let len = rdr.read_u32()?;
-            let it = (0..len).map(|_| deserialize_value(rdr, bag));
-            itertools::process_results(it, |it| bag.make_tuple(it))?
-        }
-        Type::List => {
-            let len = rdr.read_u32()?;
-            let it = (0..len).map(|_| deserialize_value(rdr, bag));
-            itertools::process_results(it, |it| bag.make_list(it))??
-        }
-        Type::Set => {
-            let len = rdr.read_u32()?;
-            let it = (0..len).map(|_| deserialize_value(rdr, bag));
-            itertools::process_results(it, |it| bag.make_set(it))??
-        }
-        Type::FrozenSet => {
-            let len = rdr.read_u32()?;
-            let it = (0..len).map(|_| deserialize_value(rdr, bag));
-            itertools::process_results(it, |it| bag.make_frozenset(it))??
-        }
-        Type::Dict => {
-            let len = rdr.read_u32()?;
-            let it = (0..len).map(|_| {
-                let k = deserialize_value(rdr, bag)?;
-                let v = deserialize_value(rdr, bag)?;
-                Ok::<_, MarshalError>((k, v))
-            });
-            itertools::process_results(it, |it| bag.make_dict(it))??
-        }
-        Type::Bytes => {
-            // Following CPython, after marshaling, byte arrays are converted into bytes.
-            let len = rdr.read_u32()?;
-            let value = rdr.read_slice(len)?;
-            bag.make_bytes(value)
-        }
-        Type::Code => bag.make_code(deserialize_code(rdr, bag.constant_bag())?),
-    };
-    Ok(value)
-}
-
-pub trait Dumpable: Sized {
-    type Error;
-    type Constant: Constant;
-    fn with_dump<R>(&self, f: impl FnOnce(DumpableValue<'_, Self>) -> R) -> Result<R, Self::Error>;
-}
-
-pub enum DumpableValue<'a, D: Dumpable> {
-    Integer(&'a BigInt),
-    Float(f64),
-    Complex(Complex64),
-    Boolean(bool),
-    Str(&'a str),
-    Bytes(&'a [u8]),
-    Code(&'a CodeObject<D::Constant>),
-    Tuple(&'a [D]),
-    None,
-    Ellipsis,
-    StopIter,
-    List(&'a [D]),
-    Set(&'a [D]),
-    Frozenset(&'a [D]),
-    Dict(&'a [(D, D)]),
-}
-
-impl<'a, C: Constant> From<BorrowedConstant<'a, C>> for DumpableValue<'a, C> {
-    fn from(c: BorrowedConstant<'a, C>) -> Self {
-        match c {
-            BorrowedConstant::Integer { value } => Self::Integer(value),
-            BorrowedConstant::Float { value } => Self::Float(value),
-            BorrowedConstant::Complex { value } => Self::Complex(value),
-            BorrowedConstant::Boolean { value } => Self::Boolean(value),
-            BorrowedConstant::Str { value } => Self::Str(value),
-            BorrowedConstant::Bytes { value } => Self::Bytes(value),
-            BorrowedConstant::Code { code } => Self::Code(code),
-            BorrowedConstant::Tuple { elements } => Self::Tuple(elements),
-            BorrowedConstant::None => Self::None,
-            BorrowedConstant::Ellipsis => Self::Ellipsis,
-        }
-    }
-}
-
-impl<C: Constant> Dumpable for C {
-    type Error = Infallible;
-    type Constant = Self;
-    #[inline(always)]
-    fn with_dump<R>(&self, f: impl FnOnce(DumpableValue<'_, Self>) -> R) -> Result<R, Self::Error> {
-        Ok(f(self.borrow_constant().into()))
-    }
-}
-
-pub trait Write {
-    fn write_slice(&mut self, slice: &[u8]);
-    fn write_u8(&mut self, v: u8) {
-        self.write_slice(&v.to_le_bytes())
-    }
-    fn write_u16(&mut self, v: u16) {
-        self.write_slice(&v.to_le_bytes())
-    }
-    fn write_u32(&mut self, v: u32) {
-        self.write_slice(&v.to_le_bytes())
-    }
-    fn write_u64(&mut self, v: u64) {
-        self.write_slice(&v.to_le_bytes())
-    }
-}
-
-impl Write for Vec<u8> {
-    fn write_slice(&mut self, slice: &[u8]) {
-        self.extend_from_slice(slice)
-    }
-}
-
-pub(crate) fn write_len<W: Write>(buf: &mut W, len: usize) {
-    let Ok(len) = len.try_into() else { panic!("too long to serialize") };
-    buf.write_u32(len);
-}
-
-pub(crate) fn write_vec<W: Write>(buf: &mut W, slice: &[u8]) {
-    write_len(buf, slice.len());
-    buf.write_slice(slice);
-}
-
-pub fn serialize_value<W: Write, D: Dumpable>(
-    buf: &mut W,
-    constant: DumpableValue<'_, D>,
-) -> Result<(), D::Error> {
-    match constant {
-        DumpableValue::Integer(int) => {
-            buf.write_u8(Type::Int as u8);
-            let (sign, bytes) = int.to_bytes_le();
-            let len: i32 = bytes.len().try_into().expect("too long to serialize");
-            let len = if sign == Sign::Minus { -len } else { len };
-            buf.write_u32(len as u32);
-            buf.write_slice(&bytes);
-        }
-        DumpableValue::Float(f) => {
-            buf.write_u8(Type::Float as u8);
-            buf.write_u64(f.to_bits());
-        }
-        DumpableValue::Complex(c) => {
-            buf.write_u8(Type::Complex as u8);
-            buf.write_u64(c.re.to_bits());
-            buf.write_u64(c.im.to_bits());
-        }
-        DumpableValue::Boolean(b) => {
-            buf.write_u8(if b { Type::True } else { Type::False } as u8);
-        }
-        DumpableValue::Str(s) => {
-            buf.write_u8(Type::Unicode as u8);
-            write_vec(buf, s.as_bytes());
-        }
-        DumpableValue::Bytes(b) => {
-            buf.write_u8(Type::Bytes as u8);
-            write_vec(buf, b);
-        }
-        DumpableValue::Code(c) => {
-            buf.write_u8(Type::Code as u8);
-            serialize_code(buf, c);
-        }
-        DumpableValue::Tuple(tup) => {
-            buf.write_u8(Type::Tuple as u8);
-            write_len(buf, tup.len());
-            for val in tup {
-                val.with_dump(|val| serialize_value(buf, val))??
-            }
-        }
-        DumpableValue::None => {
-            buf.write_u8(Type::None as u8);
-        }
-        DumpableValue::Ellipsis => {
-            buf.write_u8(Type::Ellipsis as u8);
-        }
-        DumpableValue::StopIter => {
-            buf.write_u8(Type::StopIter as u8);
-        }
-        DumpableValue::List(l) => {
-            buf.write_u8(Type::List as u8);
-            write_len(buf, l.len());
-            for val in l {
-                val.with_dump(|val| serialize_value(buf, val))??
-            }
-        }
-        DumpableValue::Set(set) => {
-            buf.write_u8(Type::Set as u8);
-            write_len(buf, set.len());
-            for val in set {
-                val.with_dump(|val| serialize_value(buf, val))??
-            }
-        }
-        DumpableValue::Frozenset(set) => {
-            buf.write_u8(Type::FrozenSet as u8);
-            write_len(buf, set.len());
-            for val in set {
-                val.with_dump(|val| serialize_value(buf, val))??
-            }
-        }
-        DumpableValue::Dict(d) => {
-            buf.write_u8(Type::Dict as u8);
-            write_len(buf, d.len());
-            for (k, v) in d {
-                k.with_dump(|val| serialize_value(buf, val))??;
-                v.with_dump(|val| serialize_value(buf, val))??;
-            }
-        }
-    }
-    Ok(())
-}
-
-pub fn serialize_code<W: Write, C: Constant>(buf: &mut W, code: &CodeObject<C>) {
-    write_len(buf, code.instructions.len());
-    // SAFETY: it's ok to transmute CodeUnit to [u8; 2]
-    let (_, instructions_bytes, _) = unsafe { code.instructions.align_to() };
-    buf.write_slice(instructions_bytes);
-
-    write_len(buf, code.locations.len());
-    for loc in &*code.locations {
-        buf.write_u32(loc.row);
-        buf.write_u32(loc.column);
-    }
-
-    buf.write_u16(code.flags.bits());
-
-    buf.write_u32(code.posonlyarg_count);
-    buf.write_u32(code.arg_count);
-    buf.write_u32(code.kwonlyarg_count);
-
-    write_vec(buf, code.source_path.as_ref().as_bytes());
-
-    buf.write_u32(code.first_line_number);
-    buf.write_u32(code.max_stackdepth);
-
-    write_vec(buf, code.obj_name.as_ref().as_bytes());
-
-    let cell2arg = code.cell2arg.as_deref().unwrap_or(&[]);
-    write_len(buf, cell2arg.len());
-    for &i in cell2arg {
-        buf.write_u32(i as u32)
-    }
-
-    write_len(buf, code.constants.len());
-    for constant in &*code.constants {
-        serialize_value(buf, constant.borrow_constant().into()).unwrap_or_else(|x| match x {})
-    }
-
-    let mut write_names = |names: &[C::Name]| {
-        write_len(buf, names.len());
-        for name in names {
-            write_vec(buf, name.as_ref().as_bytes());
-        }
-    };
-
-    write_names(&code.names);
-    write_names(&code.varnames);
-    write_names(&code.cellvars);
-    write_names(&code.freevars);
-}
diff --git a/compiler/core/src/mode.rs b/compiler/core/src/mode.rs
deleted file mode 100644
index ca0d5992c6..0000000000
--- a/compiler/core/src/mode.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-#[derive(Clone, Copy)]
-pub enum Mode {
-    Exec,
-    Eval,
-    Single,
-    BlockExpr,
-}
-
-impl std::str::FromStr for Mode {
-    type Err = ModeParseError;
-
-    // To support `builtins.compile()` `mode` argument
-    fn from_str(s: &str) -> Result<Self, ModeParseError> {
-        match s {
-            "exec" => Ok(Mode::Exec),
-            "eval" => Ok(Mode::Eval),
-            "single" => Ok(Mode::Single),
-            _ => Err(ModeParseError(())),
-        }
-    }
-}
-
-#[derive(Debug)]
-pub struct ModeParseError(());
-
-impl std::fmt::Display for ModeParseError {
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        write!(f, r#"mode must be "exec", "eval", or "single""#)
-    }
-}
diff --git a/compiler/literal/Cargo.toml b/compiler/literal/Cargo.toml
deleted file mode 100644
index 7afa9db309..0000000000
--- a/compiler/literal/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name = "rustpython-literal"
-version = "0.2.0"
-description = "Common literal handling utilities mostly useful for unparse and repr."
-authors = ["RustPython Team"]
-edition = "2021"
-repository = "https://github.com/RustPython/RustPython"
-license = "MIT"
-
-[dependencies]
-num-traits = { workspace = true }
-
-hexf-parse = "0.2.1"
-lexical-parse-float = { version = "0.8.0", features = ["format"] }
-unic-ucd-category = "0.9"
-
-[dev-dependencies]
-rand = { workspace = true }
diff --git a/compiler/literal/src/char.rs b/compiler/literal/src/char.rs
deleted file mode 100644
index cd64f6dfa9..0000000000
--- a/compiler/literal/src/char.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use unic_ucd_category::GeneralCategory;
-
-/// According to python following categories aren't printable:
-/// * Cc (Other, Control)
-/// * Cf (Other, Format)
-/// * Cs (Other, Surrogate)
-/// * Co (Other, Private Use)
-/// * Cn (Other, Not Assigned)
-/// * Zl Separator, Line ('\u2028', LINE SEPARATOR)
-/// * Zp Separator, Paragraph ('\u2029', PARAGRAPH SEPARATOR)
-/// * Zs (Separator, Space) other than ASCII space('\x20').
-pub fn is_printable(c: char) -> bool {
-    let cat = GeneralCategory::of(c);
-    !(cat.is_other() || cat.is_separator())
-}
diff --git a/compiler/literal/src/escape.rs b/compiler/literal/src/escape.rs
deleted file mode 100644
index de7a51433e..0000000000
--- a/compiler/literal/src/escape.rs
+++ /dev/null
@@ -1,414 +0,0 @@
-#[derive(Debug, Clone, Copy)]
-pub enum Quote {
-    Single,
-    Double,
-}
-
-impl Quote {
-    #[inline]
-    pub const fn swap(self) -> Quote {
-        match self {
-            Quote::Single => Quote::Double,
-            Quote::Double => Quote::Single,
-        }
-    }
-
-    #[inline]
-    pub const fn to_byte(&self) -> u8 {
-        match self {
-            Quote::Single => b'\'',
-            Quote::Double => b'"',
-        }
-    }
-
-    #[inline]
-    pub const fn to_char(&self) -> char {
-        match self {
-            Quote::Single => '\'',
-            Quote::Double => '"',
-        }
-    }
-}
-
-pub struct EscapeLayout {
-    pub quote: Quote,
-    pub len: Option<usize>,
-}
-
-pub trait Escape {
-    fn source_len(&self) -> usize;
-    fn layout(&self) -> &EscapeLayout;
-    fn changed(&self) -> bool {
-        self.layout().len != Some(self.source_len())
-    }
-
-    fn write_source(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result;
-    fn write_body_slow(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result;
-    fn write_body(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        if self.changed() {
-            self.write_body_slow(formatter)
-        } else {
-            self.write_source(formatter)
-        }
-    }
-}
-
-/// Returns the outer quotes to use and the number of quotes that need to be
-/// escaped.
-pub(crate) const fn choose_quote(
-    single_count: usize,
-    double_count: usize,
-    preferred_quote: Quote,
-) -> (Quote, usize) {
-    let (primary_count, secondary_count) = match preferred_quote {
-        Quote::Single => (single_count, double_count),
-        Quote::Double => (double_count, single_count),
-    };
-
-    // always use primary unless we have primary but no seconday
-    let use_secondary = primary_count > 0 && secondary_count == 0;
-    if use_secondary {
-        (preferred_quote.swap(), secondary_count)
-    } else {
-        (preferred_quote, primary_count)
-    }
-}
-
-pub struct UnicodeEscape<'a> {
-    source: &'a str,
-    layout: EscapeLayout,
-}
-
-impl<'a> UnicodeEscape<'a> {
-    pub fn with_forced_quote(source: &'a str, quote: Quote) -> Self {
-        let layout = EscapeLayout { quote, len: None };
-        Self { source, layout }
-    }
-    pub fn new_repr(source: &'a str) -> Self {
-        let layout = Self::repr_layout(source, Quote::Single);
-        Self { source, layout }
-    }
-
-    pub fn str_repr<'r>(&'a self) -> StrRepr<'r, 'a> {
-        StrRepr(self)
-    }
-}
-
-pub struct StrRepr<'r, 'a>(&'r UnicodeEscape<'a>);
-
-impl StrRepr<'_, '_> {
-    pub fn write(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        let quote = self.0.layout().quote.to_char();
-        formatter.write_char(quote)?;
-        self.0.write_body(formatter)?;
-        formatter.write_char(quote)
-    }
-
-    pub fn to_string(&self) -> Option<String> {
-        let mut s = String::with_capacity(self.0.layout().len?);
-        self.write(&mut s).unwrap();
-        Some(s)
-    }
-}
-
-impl std::fmt::Display for StrRepr<'_, '_> {
-    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        self.write(formatter)
-    }
-}
-
-impl UnicodeEscape<'_> {
-    const REPR_RESERVED_LEN: usize = 2; // for quotes
-
-    pub fn repr_layout(source: &str, preferred_quote: Quote) -> EscapeLayout {
-        Self::output_layout_with_checker(source, preferred_quote, |a, b| {
-            Some((a as isize).checked_add(b as isize)? as usize)
-        })
-    }
-
-    fn output_layout_with_checker(
-        source: &str,
-        preferred_quote: Quote,
-        length_add: impl Fn(usize, usize) -> Option<usize>,
-    ) -> EscapeLayout {
-        let mut out_len = Self::REPR_RESERVED_LEN;
-        let mut single_count = 0;
-        let mut double_count = 0;
-
-        for ch in source.chars() {
-            let incr = match ch {
-                '\'' => {
-                    single_count += 1;
-                    1
-                }
-                '"' => {
-                    double_count += 1;
-                    1
-                }
-                c => Self::escaped_char_len(c),
-            };
-            let Some(new_len) = length_add(out_len, incr) else {
-                #[cold]
-                fn stop(single_count: usize, double_count: usize, preferred_quote: Quote) -> EscapeLayout {
-                    EscapeLayout { quote: choose_quote(single_count, double_count, preferred_quote).0, len: None }
-                }
-                return stop(single_count, double_count, preferred_quote);
-            };
-            out_len = new_len;
-        }
-
-        let (quote, num_escaped_quotes) = choose_quote(single_count, double_count, preferred_quote);
-        // we'll be adding backslashes in front of the existing inner quotes
-        let Some(out_len) = length_add(out_len, num_escaped_quotes) else {
-            return EscapeLayout { quote, len: None };
-        };
-
-        EscapeLayout {
-            quote,
-            len: Some(out_len - Self::REPR_RESERVED_LEN),
-        }
-    }
-
-    fn escaped_char_len(ch: char) -> usize {
-        match ch {
-            '\\' | '\t' | '\r' | '\n' => 2,
-            ch if ch < ' ' || ch as u32 == 0x7f => 4, // \xHH
-            ch if ch.is_ascii() => 1,
-            ch if crate::char::is_printable(ch) => {
-                // max = std::cmp::max(ch, max);
-                ch.len_utf8()
-            }
-            ch if (ch as u32) < 0x100 => 4,   // \xHH
-            ch if (ch as u32) < 0x10000 => 6, // \uHHHH
-            _ => 10,                          // \uHHHHHHHH
-        }
-    }
-
-    fn write_char(
-        ch: char,
-        quote: Quote,
-        formatter: &mut impl std::fmt::Write,
-    ) -> std::fmt::Result {
-        match ch {
-            '\n' => formatter.write_str("\\n"),
-            '\t' => formatter.write_str("\\t"),
-            '\r' => formatter.write_str("\\r"),
-            // these 2 branches *would* be handled below, but we shouldn't have to do a
-            // unicodedata lookup just for ascii characters
-            '\x20'..='\x7e' => {
-                // printable ascii range
-                if ch == quote.to_char() || ch == '\\' {
-                    formatter.write_char('\\')?;
-                }
-                formatter.write_char(ch)
-            }
-            ch if ch.is_ascii() => {
-                write!(formatter, "\\x{:02x}", ch as u8)
-            }
-            ch if crate::char::is_printable(ch) => formatter.write_char(ch),
-            '\0'..='\u{ff}' => {
-                write!(formatter, "\\x{:02x}", ch as u32)
-            }
-            '\0'..='\u{ffff}' => {
-                write!(formatter, "\\u{:04x}", ch as u32)
-            }
-            _ => {
-                write!(formatter, "\\U{:08x}", ch as u32)
-            }
-        }
-    }
-}
-
-impl<'a> Escape for UnicodeEscape<'a> {
-    fn source_len(&self) -> usize {
-        self.source.len()
-    }
-
-    fn layout(&self) -> &EscapeLayout {
-        &self.layout
-    }
-
-    fn write_source(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        formatter.write_str(self.source)
-    }
-
-    #[cold]
-    fn write_body_slow(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        for ch in self.source.chars() {
-            Self::write_char(ch, self.layout().quote, formatter)?;
-        }
-        Ok(())
-    }
-}
-
-#[cfg(test)]
-mod unicode_escapse_tests {
-    use super::*;
-
-    #[test]
-    fn changed() {
-        fn test(s: &str) -> bool {
-            UnicodeEscape::new_repr(s).changed()
-        }
-        assert!(!test("hello"));
-        assert!(!test("'hello'"));
-        assert!(!test("\"hello\""));
-
-        assert!(test("'\"hello"));
-        assert!(test("hello\n"));
-    }
-}
-
-pub struct AsciiEscape<'a> {
-    source: &'a [u8],
-    layout: EscapeLayout,
-}
-
-impl<'a> AsciiEscape<'a> {
-    pub fn new(source: &'a [u8], layout: EscapeLayout) -> Self {
-        Self { source, layout }
-    }
-    pub fn with_forced_quote(source: &'a [u8], quote: Quote) -> Self {
-        let layout = EscapeLayout { quote, len: None };
-        Self { source, layout }
-    }
-    pub fn new_repr(source: &'a [u8]) -> Self {
-        let layout = Self::repr_layout(source, Quote::Single);
-        Self { source, layout }
-    }
-
-    pub fn bytes_repr<'r>(&'a self) -> BytesRepr<'r, 'a> {
-        BytesRepr(self)
-    }
-}
-
-impl AsciiEscape<'_> {
-    pub fn repr_layout(source: &[u8], preferred_quote: Quote) -> EscapeLayout {
-        Self::output_layout_with_checker(source, preferred_quote, 3, |a, b| {
-            Some((a as isize).checked_add(b as isize)? as usize)
-        })
-    }
-
-    pub fn named_repr_layout(source: &[u8], name: &str) -> EscapeLayout {
-        Self::output_layout_with_checker(source, Quote::Single, name.len() + 2 + 3, |a, b| {
-            Some((a as isize).checked_add(b as isize)? as usize)
-        })
-    }
-
-    fn output_layout_with_checker(
-        source: &[u8],
-        preferred_quote: Quote,
-        reserved_len: usize,
-        length_add: impl Fn(usize, usize) -> Option<usize>,
-    ) -> EscapeLayout {
-        let mut out_len = reserved_len;
-        let mut single_count = 0;
-        let mut double_count = 0;
-
-        for ch in source.iter() {
-            let incr = match ch {
-                b'\'' => {
-                    single_count += 1;
-                    1
-                }
-                b'"' => {
-                    double_count += 1;
-                    1
-                }
-                c => Self::escaped_char_len(*c),
-            };
-            let Some(new_len) = length_add(out_len, incr) else {
-                #[cold]
-                fn stop(single_count: usize, double_count: usize, preferred_quote: Quote) -> EscapeLayout {
-                    EscapeLayout { quote: choose_quote(single_count, double_count, preferred_quote).0, len: None }
-                }
-                return stop(single_count, double_count, preferred_quote);
-            };
-            out_len = new_len;
-        }
-
-        let (quote, num_escaped_quotes) = choose_quote(single_count, double_count, preferred_quote);
-        // we'll be adding backslashes in front of the existing inner quotes
-        let Some(out_len) = length_add(out_len, num_escaped_quotes) else {
-            return EscapeLayout { quote, len: None };
-        };
-
-        EscapeLayout {
-            quote,
-            len: Some(out_len - reserved_len),
-        }
-    }
-
-    fn escaped_char_len(ch: u8) -> usize {
-        match ch {
-            b'\\' | b'\t' | b'\r' | b'\n' => 2,
-            0x20..=0x7e => 1,
-            _ => 4, // \xHH
-        }
-    }
-
-    fn write_char(ch: u8, quote: Quote, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        match ch {
-            b'\t' => formatter.write_str("\\t"),
-            b'\n' => formatter.write_str("\\n"),
-            b'\r' => formatter.write_str("\\r"),
-            0x20..=0x7e => {
-                // printable ascii range
-                if ch == quote.to_byte() || ch == b'\\' {
-                    formatter.write_char('\\')?;
-                }
-                formatter.write_char(ch as char)
-            }
-            ch => write!(formatter, "\\x{ch:02x}"),
-        }
-    }
-}
-
-impl<'a> Escape for AsciiEscape<'a> {
-    fn source_len(&self) -> usize {
-        self.source.len()
-    }
-
-    fn layout(&self) -> &EscapeLayout {
-        &self.layout
-    }
-
-    fn write_source(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        formatter.write_str(unsafe {
-            // SAFETY: this function must be called only when source is printable ascii characters
-            std::str::from_utf8_unchecked(self.source)
-        })
-    }
-
-    #[cold]
-    fn write_body_slow(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        for ch in self.source.iter() {
-            Self::write_char(*ch, self.layout().quote, formatter)?;
-        }
-        Ok(())
-    }
-}
-
-pub struct BytesRepr<'r, 'a>(&'r AsciiEscape<'a>);
-
-impl BytesRepr<'_, '_> {
-    pub fn write(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result {
-        let quote = self.0.layout().quote.to_char();
-        formatter.write_char('b')?;
-        formatter.write_char(quote)?;
-        self.0.write_body(formatter)?;
-        formatter.write_char(quote)
-    }
-
-    pub fn to_string(&self) -> Option<String> {
-        let mut s = String::with_capacity(self.0.layout().len?);
-        self.write(&mut s).unwrap();
-        Some(s)
-    }
-}
-
-impl std::fmt::Display for BytesRepr<'_, '_> {
-    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        self.write(formatter)
-    }
-}
diff --git a/compiler/literal/src/float.rs b/compiler/literal/src/float.rs
deleted file mode 100644
index 5c14fcbc66..0000000000
--- a/compiler/literal/src/float.rs
+++ /dev/null
@@ -1,310 +0,0 @@
-use crate::format::Case;
-use num_traits::{Float, Zero};
-use std::f64;
-
-pub fn parse_str(literal: &str) -> Option<f64> {
-    parse_inner(literal.trim().as_bytes())
-}
-
-pub fn parse_bytes(literal: &[u8]) -> Option<f64> {
-    parse_inner(trim_slice(literal, |b| b.is_ascii_whitespace()))
-}
-
-fn trim_slice<T>(v: &[T], mut trim: impl FnMut(&T) -> bool) -> &[T] {
-    let mut it = v.iter();
-    // it.take_while_ref(&mut trim).for_each(drop);
-    // hmm.. `&mut slice::Iter<_>` is not `Clone`
-    // it.by_ref().rev().take_while_ref(&mut trim).for_each(drop);
-    while it.clone().next().map_or(false, &mut trim) {
-        it.next();
-    }
-    while it.clone().next_back().map_or(false, &mut trim) {
-        it.next_back();
-    }
-    it.as_slice()
-}
-
-fn parse_inner(literal: &[u8]) -> Option<f64> {
-    use lexical_parse_float::{
-        format::PYTHON3_LITERAL, FromLexicalWithOptions, NumberFormatBuilder, Options,
-    };
-    // lexical-core's format::PYTHON_STRING is inaccurate
-    const PYTHON_STRING: u128 = NumberFormatBuilder::rebuild(PYTHON3_LITERAL)
-        .no_special(false)
-        .build();
-    f64::from_lexical_with_options::<PYTHON_STRING>(literal, &Options::new()).ok()
-}
-
-pub fn is_integer(v: f64) -> bool {
-    (v - v.round()).abs() < f64::EPSILON
-}
-
-fn format_nan(case: Case) -> String {
-    let nan = match case {
-        Case::Lower => "nan",
-        Case::Upper => "NAN",
-    };
-
-    nan.to_string()
-}
-
-fn format_inf(case: Case) -> String {
-    let inf = match case {
-        Case::Lower => "inf",
-        Case::Upper => "INF",
-    };
-
-    inf.to_string()
-}
-
-pub fn decimal_point_or_empty(precision: usize, alternate_form: bool) -> &'static str {
-    match (precision, alternate_form) {
-        (0, true) => ".",
-        _ => "",
-    }
-}
-
-pub fn format_fixed(precision: usize, magnitude: f64, case: Case, alternate_form: bool) -> String {
-    match magnitude {
-        magnitude if magnitude.is_finite() => {
-            let point = decimal_point_or_empty(precision, alternate_form);
-            format!("{magnitude:.precision$}{point}")
-        }
-        magnitude if magnitude.is_nan() => format_nan(case),
-        magnitude if magnitude.is_infinite() => format_inf(case),
-        _ => "".to_string(),
-    }
-}
-
-// Formats floats into Python style exponent notation, by first formatting in Rust style
-// exponent notation (`1.0000e0`), then convert to Python style (`1.0000e+00`).
-pub fn format_exponent(
-    precision: usize,
-    magnitude: f64,
-    case: Case,
-    alternate_form: bool,
-) -> String {
-    match magnitude {
-        magnitude if magnitude.is_finite() => {
-            let r_exp = format!("{magnitude:.precision$e}");
-            let mut parts = r_exp.splitn(2, 'e');
-            let base = parts.next().unwrap();
-            let exponent = parts.next().unwrap().parse::<i64>().unwrap();
-            let e = match case {
-                Case::Lower => 'e',
-                Case::Upper => 'E',
-            };
-            let point = decimal_point_or_empty(precision, alternate_form);
-            format!("{base}{point}{e}{exponent:+#03}")
-        }
-        magnitude if magnitude.is_nan() => format_nan(case),
-        magnitude if magnitude.is_infinite() => format_inf(case),
-        _ => "".to_string(),
-    }
-}
-
-/// If s represents a floating point value, trailing zeros and a possibly trailing
-/// decimal point will be removed.
-/// This function does NOT work with decimal commas.
-fn maybe_remove_trailing_redundant_chars(s: String, alternate_form: bool) -> String {
-    if !alternate_form && s.contains('.') {
-        // only truncate floating point values when not in alternate form
-        let s = remove_trailing_zeros(s);
-        remove_trailing_decimal_point(s)
-    } else {
-        s
-    }
-}
-
-fn remove_trailing_zeros(s: String) -> String {
-    let mut s = s;
-    while s.ends_with('0') {
-        s.pop();
-    }
-    s
-}
-
-fn remove_trailing_decimal_point(s: String) -> String {
-    let mut s = s;
-    if s.ends_with('.') {
-        s.pop();
-    }
-    s
-}
-
-pub fn format_general(
-    precision: usize,
-    magnitude: f64,
-    case: Case,
-    alternate_form: bool,
-    always_shows_fract: bool,
-) -> String {
-    match magnitude {
-        magnitude if magnitude.is_finite() => {
-            let r_exp = format!("{:.*e}", precision.saturating_sub(1), magnitude);
-            let mut parts = r_exp.splitn(2, 'e');
-            let base = parts.next().unwrap();
-            let exponent = parts.next().unwrap().parse::<i64>().unwrap();
-            if exponent < -4 || exponent + (always_shows_fract as i64) >= (precision as i64) {
-                let e = match case {
-                    Case::Lower => 'e',
-                    Case::Upper => 'E',
-                };
-                let magnitude = format!("{:.*}", precision + 1, base);
-                let base = maybe_remove_trailing_redundant_chars(magnitude, alternate_form);
-                let point = decimal_point_or_empty(precision.saturating_sub(1), alternate_form);
-                format!("{base}{point}{e}{exponent:+#03}")
-            } else {
-                let precision = ((precision as i64) - 1 - exponent) as usize;
-                let magnitude = format!("{magnitude:.precision$}");
-                let base = maybe_remove_trailing_redundant_chars(magnitude, alternate_form);
-                let point = decimal_point_or_empty(precision, alternate_form);
-                format!("{base}{point}")
-            }
-        }
-        magnitude if magnitude.is_nan() => format_nan(case),
-        magnitude if magnitude.is_infinite() => format_inf(case),
-        _ => "".to_string(),
-    }
-}
-
-// TODO: rewrite using format_general
-pub fn to_string(value: f64) -> String {
-    let lit = format!("{value:e}");
-    if let Some(position) = lit.find('e') {
-        let significand = &lit[..position];
-        let exponent = &lit[position + 1..];
-        let exponent = exponent.parse::<i32>().unwrap();
-        if exponent < 16 && exponent > -5 {
-            if is_integer(value) {
-                format!("{value:.1?}")
-            } else {
-                value.to_string()
-            }
-        } else {
-            format!("{significand}e{exponent:+#03}")
-        }
-    } else {
-        let mut s = value.to_string();
-        s.make_ascii_lowercase();
-        s
-    }
-}
-
-pub fn from_hex(s: &str) -> Option<f64> {
-    if let Ok(f) = hexf_parse::parse_hexf64(s, false) {
-        return Some(f);
-    }
-    match s.to_ascii_lowercase().as_str() {
-        "nan" | "+nan" | "-nan" => Some(f64::NAN),
-        "inf" | "infinity" | "+inf" | "+infinity" => Some(f64::INFINITY),
-        "-inf" | "-infinity" => Some(f64::NEG_INFINITY),
-        value => {
-            let mut hex = String::with_capacity(value.len());
-            let has_0x = value.contains("0x");
-            let has_p = value.contains('p');
-            let has_dot = value.contains('.');
-            let mut start = 0;
-
-            if !has_0x && value.starts_with('-') {
-                hex.push_str("-0x");
-                start += 1;
-            } else if !has_0x {
-                hex.push_str("0x");
-                if value.starts_with('+') {
-                    start += 1;
-                }
-            }
-
-            for (index, ch) in value.chars().enumerate() {
-                if ch == 'p' {
-                    if has_dot {
-                        hex.push('p');
-                    } else {
-                        hex.push_str(".p");
-                    }
-                } else if index >= start {
-                    hex.push(ch);
-                }
-            }
-
-            if !has_p && has_dot {
-                hex.push_str("p0");
-            } else if !has_p && !has_dot {
-                hex.push_str(".p0")
-            }
-
-            hexf_parse::parse_hexf64(hex.as_str(), false).ok()
-        }
-    }
-}
-
-pub fn to_hex(value: f64) -> String {
-    let (mantissa, exponent, sign) = value.integer_decode();
-    let sign_fmt = if sign < 0 { "-" } else { "" };
-    match value {
-        value if value.is_zero() => format!("{sign_fmt}0x0.0p+0"),
-        value if value.is_infinite() => format!("{sign_fmt}inf"),
-        value if value.is_nan() => "nan".to_owned(),
-        _ => {
-            const BITS: i16 = 52;
-            const FRACT_MASK: u64 = 0xf_ffff_ffff_ffff;
-            format!(
-                "{}{:#x}.{:013x}p{:+}",
-                sign_fmt,
-                mantissa >> BITS,
-                mantissa & FRACT_MASK,
-                exponent + BITS
-            )
-        }
-    }
-}
-
-#[test]
-fn test_to_hex() {
-    use rand::Rng;
-    for _ in 0..20000 {
-        let bytes = rand::thread_rng().gen::<[u64; 1]>();
-        let f = f64::from_bits(bytes[0]);
-        if !f.is_finite() {
-            continue;
-        }
-        let hex = to_hex(f);
-        // println!("{} -> {}", f, hex);
-        let roundtrip = hexf_parse::parse_hexf64(&hex, false).unwrap();
-        // println!("  -> {}", roundtrip);
-        assert!(f == roundtrip, "{} {} {}", f, hex, roundtrip);
-    }
-}
-
-#[test]
-fn test_remove_trailing_zeros() {
-    assert!(remove_trailing_zeros(String::from("100")) == *"1");
-    assert!(remove_trailing_zeros(String::from("100.00")) == *"100.");
-
-    // leave leading zeros untouched
-    assert!(remove_trailing_zeros(String::from("001")) == *"001");
-
-    // leave strings untouched if they don't end with 0
-    assert!(remove_trailing_zeros(String::from("101")) == *"101");
-}
-
-#[test]
-fn test_remove_trailing_decimal_point() {
-    assert!(remove_trailing_decimal_point(String::from("100.")) == *"100");
-    assert!(remove_trailing_decimal_point(String::from("1.")) == *"1");
-
-    // leave leading decimal points untouched
-    assert!(remove_trailing_decimal_point(String::from(".5")) == *".5");
-}
-
-#[test]
-fn test_maybe_remove_trailing_redundant_chars() {
-    assert!(maybe_remove_trailing_redundant_chars(String::from("100."), true) == *"100.");
-    assert!(maybe_remove_trailing_redundant_chars(String::from("100."), false) == *"100");
-    assert!(maybe_remove_trailing_redundant_chars(String::from("1."), false) == *"1");
-    assert!(maybe_remove_trailing_redundant_chars(String::from("10.0"), false) == *"10");
-
-    // don't truncate integers
-    assert!(maybe_remove_trailing_redundant_chars(String::from("1000"), false) == *"1000");
-}
diff --git a/compiler/literal/src/format.rs b/compiler/literal/src/format.rs
deleted file mode 100644
index 3d5d9d7b2d..0000000000
--- a/compiler/literal/src/format.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#[derive(Debug, PartialEq, Clone, Copy)]
-pub enum Case {
-    Lower,
-    Upper,
-}
diff --git a/compiler/literal/src/lib.rs b/compiler/literal/src/lib.rs
deleted file mode 100644
index 9b9620573d..0000000000
--- a/compiler/literal/src/lib.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-pub mod char;
-pub mod escape;
-pub mod float;
-pub mod format;
diff --git a/compiler/parser/Cargo.toml b/compiler/parser/Cargo.toml
deleted file mode 100644
index 0568fbb23c..0000000000
--- a/compiler/parser/Cargo.toml
+++ /dev/null
@@ -1,40 +0,0 @@
-[package]
-name = "rustpython-parser"
-version = "0.2.0"
-description = "Parser for python code."
-authors = ["RustPython Team"]
-build = "build.rs"
-repository = "https://github.com/RustPython/RustPython"
-license = "MIT"
-edition = "2021"
-
-[features]
-default = ["lalrpop"]  # removing this causes potential build failure
-serde = ["dep:serde", "rustpython-compiler-core/serde"]
-
-[build-dependencies]
-anyhow = { workspace = true }
-lalrpop = { version = "0.19.9", optional = true }
-phf_codegen = "0.11.1"
-tiny-keccak = { version = "2", features = ["sha3"] }
-
-[dependencies]
-rustpython-ast = { path = "../ast", version = "0.2.0" }
-rustpython-compiler-core = { path = "../core", version = "0.2.0" }
-
-ahash = { workspace = true }
-itertools = { workspace = true }
-log = { workspace = true }
-num-bigint = { workspace = true }
-num-traits = { workspace = true }
-unicode_names2 = { workspace = true }
-
-unic-emoji-char = "0.9.0"
-unic-ucd-ident  = "0.9.0"
-lalrpop-util = "0.19.8"
-phf = "0.11.1"
-rustc-hash = "1.1.0"
-serde = { version = "1.0.133", optional = true, default-features = false, features = ["derive"] }
-
-[dev-dependencies]
-insta = { workspace = true }
diff --git a/compiler/parser/README.md b/compiler/parser/README.md
deleted file mode 100644
index ebe9eb6851..0000000000
--- a/compiler/parser/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# RustPython/parser
-
-This directory has the code for python lexing, parsing and generating Abstract Syntax Trees (AST).
-
-The steps are:
-- Lexical analysis: splits the source code into tokens.
-- Parsing and generating the AST: transforms those tokens into an AST. Uses `LALRPOP`, a Rust parser generator framework.
-
-This crate is published on [https://docs.rs/rustpython-parser](https://docs.rs/rustpython-parser).
-
-We wrote [a blog post](https://rustpython.github.io/2020/04/02/thing-explainer-parser.html) with screenshots and an explanation to help you understand the steps by seeing them in action.
-
-For more information on LALRPOP, here is a link to the [LALRPOP book](https://github.com/lalrpop/lalrpop).
-
-There is a readme in the `src` folder with the details of each file.
-
-
-## Directory content
-
-`build.rs`: The build script.
-`Cargo.toml`: The config file.
-
-The `src` directory has:
-
-**lib.rs**   
-This is the crate's root.
-
-**lexer.rs**   
-This module takes care of lexing python source text. This means source code is translated into separate tokens.
-
-**parser.rs**   
-A python parsing module. Use this module to parse python code into an AST. There are three ways to parse python code. You could parse a whole program, a single statement, or a single expression.
-
-**ast.rs**   
- Implements abstract syntax tree (AST) nodes for the python language. Roughly equivalent to [the python AST](https://docs.python.org/3/library/ast.html).
-
-**python.lalrpop**   
-Python grammar.
-
-**token.rs**   
-Different token definitions. Loosely based on token.h from CPython source.
-
-**errors.rs**   
-Define internal parse error types. The goal is to provide a matching and a safe error API, masking errors from LALR.
-
-**fstring.rs**   
-Format strings.
-
-**function.rs**   
-Collection of functions for parsing parameters, arguments.
-
-**location.rs**   
-Datatypes to support source location information.
-
-**mode.rs**   
-Execution mode check. Allowed modes are `exec`, `eval` or `single`.
-
-
-## How to use
-
-For example, one could do this:
-```
-  use rustpython_parser::{parser, ast};
-  let python_source = "print('Hello world')";
-  let python_ast = parser::parse_expression(python_source).unwrap();
-```
diff --git a/compiler/parser/build.rs b/compiler/parser/build.rs
deleted file mode 100644
index 1ef1d5371b..0000000000
--- a/compiler/parser/build.rs
+++ /dev/null
@@ -1,156 +0,0 @@
-use std::fmt::Write as _;
-use std::fs::File;
-use std::io::{BufRead, BufReader, BufWriter, Write};
-use std::path::{Path, PathBuf};
-use tiny_keccak::{Hasher, Sha3};
-
-fn main() -> anyhow::Result<()> {
-    const SOURCE: &str = "python.lalrpop";
-    let out_dir = PathBuf::from(std::env::var_os("OUT_DIR").unwrap());
-
-    println!("cargo:rerun-if-changed={SOURCE}");
-
-    try_lalrpop(SOURCE, &out_dir.join("python.rs"))?;
-    gen_phf(&out_dir);
-
-    Ok(())
-}
-
-fn requires_lalrpop(source: &str, target: &Path) -> Option<String> {
-    let Ok(target) = File::open(target) else {
-        return Some("python.rs doesn't exist. regenerate.".to_owned());
-    };
-
-    let sha_prefix = "// sha3: ";
-    let sha3_line = if let Some(sha3_line) =
-        BufReader::with_capacity(128, target)
-            .lines()
-            .find_map(|line| {
-                let line = line.unwrap();
-                line.starts_with(sha_prefix).then_some(line)
-            }) {
-        sha3_line
-    } else {
-        // no sha3 line - maybe old version of lalrpop installed
-        return Some("python.rs doesn't include sha3 hash. regenerate.".to_owned());
-    };
-    let expected_sha3_str = sha3_line.strip_prefix(sha_prefix).unwrap();
-
-    let actual_sha3 = {
-        let mut hasher = Sha3::v256();
-        let mut f = BufReader::new(File::open(source).unwrap());
-        let mut line = String::new();
-        while f.read_line(&mut line).unwrap() != 0 {
-            if line.ends_with('\n') {
-                line.pop();
-                if line.ends_with('\r') {
-                    line.pop();
-                }
-            }
-            hasher.update(line.as_bytes());
-            hasher.update(b"\n");
-            line.clear();
-        }
-        let mut hash = [0u8; 32];
-        hasher.finalize(&mut hash);
-        hash
-    };
-    let eq = sha_equal(expected_sha3_str, &actual_sha3);
-    if !eq {
-        let mut actual_sha3_str = String::new();
-        for byte in actual_sha3 {
-            write!(actual_sha3_str, "{byte:02x}").unwrap();
-        }
-        return Some(format!(
-            "python.rs hash expected: {expected_sha3_str} but actual: {actual_sha3_str}"
-        ));
-    }
-    None
-}
-
-fn try_lalrpop(source: &str, target: &Path) -> anyhow::Result<()> {
-    let Some(_message) = requires_lalrpop(source, target) else {
-        return Ok(());
-    };
-
-    #[cfg(feature = "lalrpop")]
-    // We are not using lalrpop::process_root() or Configuration::process_current_dir()
-    // because of https://github.com/lalrpop/lalrpop/issues/699.
-    lalrpop::Configuration::new()
-        .use_cargo_dir_conventions()
-        .set_in_dir(Path::new("."))
-        .process()
-        .unwrap_or_else(|e| {
-            println!("cargo:warning={_message}");
-            panic!("running lalrpop failed. {e:?}");
-        });
-
-    #[cfg(not(feature = "lalrpop"))]
-    {
-        println!("cargo:warning=try: cargo build --manifest-path=compiler/parser/Cargo.toml --features=lalrpop");
-    }
-    Ok(())
-}
-
-fn sha_equal(expected_sha3_str: &str, actual_sha3: &[u8; 32]) -> bool {
-    if expected_sha3_str.len() != 64 {
-        panic!("lalrpop version? hash bug is fixed in 0.19.8");
-    }
-
-    let mut expected_sha3 = [0u8; 32];
-    for (i, b) in expected_sha3.iter_mut().enumerate() {
-        *b = u8::from_str_radix(&expected_sha3_str[i * 2..][..2], 16).unwrap();
-    }
-    *actual_sha3 == expected_sha3
-}
-
-fn gen_phf(out_dir: &Path) {
-    let mut kwds = phf_codegen::Map::new();
-    let kwds = kwds
-        // Alphabetical keywords:
-        .entry("...", "Tok::Ellipsis")
-        .entry("False", "Tok::False")
-        .entry("None", "Tok::None")
-        .entry("True", "Tok::True")
-        // more so "standard" keywords
-        .entry("and", "Tok::And")
-        .entry("as", "Tok::As")
-        .entry("assert", "Tok::Assert")
-        .entry("async", "Tok::Async")
-        .entry("await", "Tok::Await")
-        .entry("break", "Tok::Break")
-        .entry("case", "Tok::Case")
-        .entry("class", "Tok::Class")
-        .entry("continue", "Tok::Continue")
-        .entry("def", "Tok::Def")
-        .entry("del", "Tok::Del")
-        .entry("elif", "Tok::Elif")
-        .entry("else", "Tok::Else")
-        .entry("except", "Tok::Except")
-        .entry("finally", "Tok::Finally")
-        .entry("for", "Tok::For")
-        .entry("from", "Tok::From")
-        .entry("global", "Tok::Global")
-        .entry("if", "Tok::If")
-        .entry("import", "Tok::Import")
-        .entry("in", "Tok::In")
-        .entry("is", "Tok::Is")
-        .entry("lambda", "Tok::Lambda")
-        .entry("match", "Tok::Match")
-        .entry("nonlocal", "Tok::Nonlocal")
-        .entry("not", "Tok::Not")
-        .entry("or", "Tok::Or")
-        .entry("pass", "Tok::Pass")
-        .entry("raise", "Tok::Raise")
-        .entry("return", "Tok::Return")
-        .entry("try", "Tok::Try")
-        .entry("while", "Tok::While")
-        .entry("with", "Tok::With")
-        .entry("yield", "Tok::Yield")
-        .build();
-    writeln!(
-        BufWriter::new(File::create(out_dir.join("keywords.rs")).unwrap()),
-        "{kwds}",
-    )
-    .unwrap();
-}
diff --git a/compiler/parser/python.lalrpop b/compiler/parser/python.lalrpop
deleted file mode 100644
index 45113a3c8f..0000000000
--- a/compiler/parser/python.lalrpop
+++ /dev/null
@@ -1,1884 +0,0 @@
-// See also: file:///usr/share/doc/python/html/reference/grammar.html?highlight=grammar
-// See also: https://github.com/antlr/grammars-v4/blob/master/python3/Python3.g4
-// See also: file:///usr/share/doc/python/html/reference/compound_stmts.html#function-definitions
-// See also: https://greentreesnakes.readthedocs.io/en/latest/nodes.html#keyword
-
-use crate::{
-    ast,
-    lexer::{LexicalError, LexicalErrorType},
-    function::{ArgumentList, parse_args, parse_params, validate_arguments},
-    context::set_context,
-    string::parse_strings,
-    token::{self, StringKind},
-};
-use num_bigint::BigInt;
-
-grammar;
-
-// This is a hack to reduce the amount of lalrpop tables generated:
-// For each public entry point, a full parse table is generated.
-// By having only a single pub function, we reduce this to one.
-pub Top: ast::Mod = {
-    StartModule <body:Program> => ast::Mod::Module { body, type_ignores: vec![] },
-    StartInteractive <body:Program> => ast::Mod::Interactive { body },
-    StartExpression <body:TestList> ("\n")* => ast::Mod::Expression { body: Box::new(body) },
-};
-
-Program: ast::Suite = {
-    <lines:FileLine*> => {
-        lines.into_iter().flatten().collect()
-    },
-};
-
-// A file line either has a declaration, or an empty newline:
-FileLine: ast::Suite = {
-    Statement,
-    "\n" => vec![],
-};
-
-Suite: ast::Suite = {
-    SimpleStatement,
-    "\n" Indent <s:Statement+> Dedent => s.into_iter().flatten().collect(),
-};
-
-Statement: ast::Suite = {
-    SimpleStatement,
-    <s:CompoundStatement> => vec![s],
-};
-
-SimpleStatement: ast::Suite = {
-    <s1:SmallStatement> <s2:(";" SmallStatement)*> ";"? "\n" => {
-        let mut statements = vec![s1];
-        statements.extend(s2.into_iter().map(|e| e.1));
-        statements
-    }
-};
-
-SmallStatement: ast::Stmt = {
-    ExpressionStatement,
-    PassStatement,
-    DelStatement,
-    FlowStatement,
-    ImportStatement,
-    GlobalStatement,
-    NonlocalStatement,
-    AssertStatement,
-};
-
-PassStatement: ast::Stmt = {
-    <location:@L> "pass" <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Pass,
-        )
-    },
-};
-
-DelStatement: ast::Stmt = {
-    <location:@L> "del" <targets:ExpressionList2> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Delete { targets: targets.into_iter().map(|expr| set_context(expr, ast::ExprContext::Del)).collect() },
-        )
-    },
-};
-
-ExpressionStatement: ast::Stmt = {
-    <location:@L> <expression:TestOrStarExprList> <suffix:AssignSuffix*> <end_location:@R> => {
-        // Just an expression, no assignment:
-        if suffix.is_empty() {
-            ast::Stmt::new(
-                location,
-                end_location,
-                ast::StmtKind::Expr { value: Box::new(expression) }
-            )
-        } else {
-            let mut targets = vec![set_context(expression, ast::ExprContext::Store)];
-            let mut values = suffix;
-
-            while values.len() > 1 {
-                targets.push(set_context(values.remove(0), ast::ExprContext::Store));
-            }
-
-            let value = Box::new(values.into_iter().next().unwrap());
-
-            ast::Stmt::new(
-                location,
-                end_location,
-                ast::StmtKind::Assign { targets, value, type_comment: None },
-            )
-        }
-    },
-    <location:@L> <target:TestOrStarExprList> <op:AugAssign> <rhs:TestListOrYieldExpr> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::AugAssign {
-                target: Box::new(set_context(target, ast::ExprContext::Store)),
-                op,
-                value: Box::new(rhs)
-            },
-        )
-    },
-    <location:@L> <target:Test<"all">> ":" <annotation:Test<"all">> <rhs:AssignSuffix?> <end_location:@R> => {
-        let simple = matches!(target.node, ast::ExprKind::Name { .. });
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::AnnAssign {
-                target: Box::new(set_context(target, ast::ExprContext::Store)),
-                annotation: Box::new(annotation),
-                value: rhs.map(Box::new),
-                simple: if simple { 1 } else { 0 },
-            },
-        )
-    },
-};
-
-AssignSuffix: ast::Expr = {
-    "=" <e:TestListOrYieldExpr> => e
-};
-
-TestListOrYieldExpr: ast::Expr = {
-    TestList,
-    YieldExpr
-}
-
-#[inline]
-TestOrStarExprList: ast::Expr = {
-    // as far as I can tell, these were the same
-    TestList
-};
-
-TestOrStarExpr: ast::Expr = {
-    Test<"all">,
-    StarExpr,
-};
-
-NamedOrStarExpr: ast::Expr = {
-    NamedExpression,
-    StarExpr,
-};
-
-TestOrStarNamedExpr: ast::Expr = {
-    NamedExpressionTest,
-    StarExpr,
-};
-
-AugAssign: ast::Operator = {
-    "+=" => ast::Operator::Add,
-    "-=" => ast::Operator::Sub,
-    "*=" => ast::Operator::Mult,
-    "@=" => ast::Operator::MatMult,
-    "/=" => ast::Operator::Div,
-    "%=" => ast::Operator::Mod,
-    "&=" => ast::Operator::BitAnd,
-    "|=" => ast::Operator::BitOr,
-    "^=" => ast::Operator::BitXor,
-    "<<=" => ast::Operator::LShift,
-    ">>=" => ast::Operator::RShift,
-    "**=" => ast::Operator::Pow,
-    "//=" => ast::Operator::FloorDiv,
-};
-
-FlowStatement: ast::Stmt = {
-    <location:@L> "break" <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Break,
-        )
-    },
-    <location:@L> "continue" <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Continue,
-        )
-    },
-    <location:@L> "return" <value:TestList?> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Return { value: value.map(Box::new) },
-        )
-    },
-    <location:@L> <expression:YieldExpr> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Expr { value: Box::new(expression) },
-        )
-    },
-    RaiseStatement,
-};
-
-RaiseStatement: ast::Stmt = {
-    <location:@L> "raise" <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Raise { exc: None, cause: None },
-        )
-    },
-    <location:@L> "raise" <t:Test<"all">> <c:("from" Test<"all">)?> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Raise { exc: Some(Box::new(t)), cause: c.map(|x| Box::new(x.1)) },
-        )
-    },
-};
-
-ImportStatement: ast::Stmt = {
-    <location:@L> "import" <names: OneOrMore<ImportAsAlias<DottedName>>> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Import { names },
-        )
-    },
-    <location:@L> "from" <source:ImportFromLocation> "import" <names: ImportAsNames> <end_location:@R> => {
-        let (level, module) = source;
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::ImportFrom {
-                level,
-                module,
-                names
-            },
-        )
-    },
-};
-
-ImportFromLocation: (Option<usize>, Option<String>) = {
-    <dots: ImportDots*> <name:DottedName> => {
-        (Some(dots.iter().sum()), Some(name))
-    },
-    <dots: ImportDots+> => {
-        (Some(dots.iter().sum()), None)
-    },
-};
-
-ImportDots: usize = {
-    "..." => 3,
-    "." => 1,
-};
-
-ImportAsNames: Vec<ast::Alias> = {
-    <location:@L> <i:OneOrMore<ImportAsAlias<Identifier>>> <end_location:@R> => i,
-    <location:@L> "(" <i:OneOrMore<ImportAsAlias<Identifier>>> ","? ")" <end_location:@R> => i,
-    <location:@L> "*" <end_location:@R> => {
-        // Star import all
-        vec![ast::Alias::new(location, end_location, ast::AliasData { name: "*".to_string(), asname: None })]
-    },
-};
-
-
-#[inline]
-ImportAsAlias<I>: ast::Alias = {
-    <location:@L> <name:I> <a: ("as" Identifier)?> <end_location:@R> => ast::Alias::new(location, end_location, ast::AliasData { name, asname: a.map(|a| a.1) }),
-}
-
-// A name like abc or abc.def.ghi
-DottedName: String = {
-    <n:name> => n,
-    <n:name> <n2: ("." Identifier)+>  => {
-        let mut r = n.to_string();
-        for x in n2 {
-            r.push_str(".");
-            r.push_str(&x.1);
-        }
-        r
-    },
-};
-
-GlobalStatement: ast::Stmt = {
-    <location:@L> "global" <names:OneOrMore<Identifier>> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Global { names }
-        )
-    },
-};
-
-NonlocalStatement: ast::Stmt = {
-    <location:@L> "nonlocal" <names:OneOrMore<Identifier>> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Nonlocal { names }
-        )
-    },
-};
-
-AssertStatement: ast::Stmt = {
-    <location:@L> "assert" <test:Test<"all">> <msg: ("," Test<"all">)?> <end_location:@R> => {
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Assert {
-                test: Box::new(test),
-                msg: msg.map(|e| Box::new(e.1))
-            }
-        )
-    },
-};
-
-CompoundStatement: ast::Stmt = {
-    MatchStatement,
-    IfStatement,
-    WhileStatement,
-    ForStatement,
-    TryStatement,
-    WithStatement,
-    FuncDef,
-    ClassDef,
-};
-
-MatchStatement: ast::Stmt = {
-    <location:@L> "match" <subject:TestOrStarNamedExpr> ":" "\n" Indent <cases:MatchCase+> Dedent => {
-       let end_location = cases
-            .last()
-            .unwrap()
-            .body
-            .last()
-            .unwrap()
-            .end();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Match {
-                subject: Box::new(subject),
-                cases
-            }
-        )
-    },
-    <location:@L> "match" <subject:TestOrStarNamedExpr> "," ":" "\n" Indent <cases:MatchCase+> Dedent => {
-       let end_location = cases
-            .last()
-            .unwrap()
-            .body
-            .last()
-            .unwrap()
-            .end();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Match {
-                subject: Box::new(subject),
-                cases
-            }
-        )
-    },
-    <location:@L> "match" <subject:TestOrStarNamedExpr> "," <subjects:OneOrMore<TestOrStarNamedExpr>> ","? ":" "\n" Indent <cases:MatchCase+> Dedent => {
-        let end_location = cases
-            .last()
-            .unwrap()
-            .body
-            .last()
-            .unwrap()
-            .end();
-        let mut subjects = subjects;
-        subjects.insert(0, subject);
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Match {
-                subject: Box::new(ast::Expr::new(
-                    location,
-                    end_location,
-                    ast::ExprKind::Tuple {
-                        elts: subjects,
-                        ctx: ast::ExprContext::Load,
-                    },
-                )),
-                cases
-            }
-        )
-    }
-}
-
-MatchCase: ast::MatchCase = {
-    "case" <pattern:Patterns> <guard:(Guard)?> ":" <body:Suite> => {
-        ast::MatchCase {
-            pattern,
-            guard: guard.map(Box::new),
-            body
-        }
-    },
-}
-
-Guard: ast::Expr = {
-    "if" <guard:NamedExpressionTest> => {
-        guard
-    }
-}
-
-Patterns: ast::Pattern = {
-    <location:@L> <pattern:Pattern> "," <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        ast::PatternKind::MatchSequence {
-            patterns: vec![pattern]
-        },
-    ),
-    <location:@L> <pattern:Pattern> "," <patterns:OneOrMore<Pattern>> ","? <end_location:@R> => {
-        let mut patterns = patterns;
-        patterns.insert(0, pattern);
-        ast::Pattern::new(
-            location,
-            end_location,
-            ast::PatternKind::MatchSequence {
-                patterns
-            },
-        )
-    },
-    <pattern:Pattern> => pattern
-}
-
-Pattern: ast::Pattern = {
-    <pattern:AsPattern> => pattern,
-    <pattern:OrPattern> => pattern,
-}
-
-AsPattern: ast::Pattern = {
-    <location:@L> <pattern:OrPattern> "as" <name:Identifier> <end_location:@R> =>? {
-        if name == "_" {
-            Err(LexicalError {
-                error: LexicalErrorType::OtherError("cannot use '_' as a target".to_string()),
-                location,
-            })?
-        } else {
-            Ok(ast::Pattern::new(
-                location,
-                end_location,
-                ast::PatternKind::MatchAs {
-                   pattern: Some(Box::new(pattern)),
-                   name: Some(name),
-               },
-            ))
-        }
-    },
-}
-
-OrPattern: ast::Pattern = {
-    <pattern:ClosedPattern> => pattern,
-    <location:@L> <pattern:ClosedPattern> <patterns:("|" <ClosedPattern>)+> <end_location:@R> => {
-        let mut patterns = patterns;
-        patterns.insert(0, pattern);
-        ast::Pattern::new(
-            location,
-            end_location,
-            ast::PatternKind::MatchOr { patterns }
-        )
-    }
-}
-
-ClosedPattern: ast::Pattern = {
-    <location:@L> <node:LiteralPattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-    <location:@L> <node:CapturePattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-    <location:@L> <node:StarPattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-    <location:@L> <node:ValuePattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-    <location:@L> <node:SequencePattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-    <location:@L> <node:MappingPattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-    <location:@L> <node:ClassPattern> <end_location:@R> => ast::Pattern::new(
-        location,
-        end_location,
-        node,
-    ),
-}
-
-SequencePattern: ast::PatternKind = {
-    // A single-item tuple is a special case: it's a group pattern, _not_ a sequence pattern.
-    <location:@L> "(" <pattern:Pattern> ")" <end_location:@R> => pattern.node,
-    <location:@L> "(" ")" <end_location:@R> => ast::PatternKind::MatchSequence {
-        patterns: vec![],
-    },
-    <location:@L> "(" <pattern:Pattern> "," <patterns:Comma<Pattern>> ")" <end_location:@R> => {
-        let mut patterns = patterns;
-        patterns.insert(0, pattern);
-        ast::PatternKind::MatchSequence {
-            patterns
-        }
-    },
-    <location:@L> "[" <patterns:Comma<Pattern>> "]" <end_location:@R> => ast::PatternKind::MatchSequence {
-        patterns
-    },
-}
-
-StarPattern: ast::PatternKind = {
-    <location:@L> "*" <name:Identifier> <end_location:@R> => ast::PatternKind::MatchStar {
-        name: if name == "_" { None } else { Some(name) }
-    },
-}
-
-ConstantAtom: ast::Expr = {
-    <location:@L> <value:Constant> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Constant { value, kind: None }
-    ),
-}
-
-ConstantExpr: ast::Expr = {
-    ConstantAtom,
-    <location:@L> "-" <operand:ConstantAtom> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::UnaryOp {
-            op: ast::Unaryop::USub,
-            operand: Box::new(operand)
-        }
-    ),
-}
-
-AddOpExpr: ast::Expr = {
-    <location:@L> <left:ConstantExpr> <op:AddOp> <right:ConstantAtom> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp {
-            left: Box::new(left),
-            op,
-            right: Box::new(right),
-        }
-    ),
-}
-
-LiteralPattern: ast::PatternKind = {
-    "None" => ast::PatternKind::MatchSingleton {
-        value: ast::Constant::None
-    },
-    "True" => ast::PatternKind::MatchSingleton {
-        value: true.into()
-    },
-    "False" => ast::PatternKind::MatchSingleton {
-        value: false.into()
-    },
-    <location:@L> <value:ConstantExpr> <end_location:@R> => ast::PatternKind::MatchValue {
-        value: Box::new(value)
-    },
-    <location:@L> <value:AddOpExpr> => ast::PatternKind::MatchValue {
-        value: Box::new(value)
-    },
-    <location:@L> <s:(@L string @R)+> =>? Ok(ast::PatternKind::MatchValue {
-        value: Box::new(parse_strings(s)?)
-    }),
-}
-
-CapturePattern: ast::PatternKind = {
-    <location:@L> <name:Identifier> <end_location:@R> => ast::PatternKind::MatchAs {
-        pattern: None,
-        name: if name == "_" { None } else { Some(name) }
-    },
-}
-
-MatchName: ast::Expr = {
-    <location:@L> <name:Identifier> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Name { id: name, ctx: ast::ExprContext::Load },
-    ),
-}
-
-MatchNameOrAttr: ast::Expr = {
-    <location:@L> <name:MatchName> "." <attr:Identifier> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Attribute {
-            value: Box::new(name),
-            attr,
-            ctx: ast::ExprContext::Load,
-        },
-    ),
-    <location:@L> <e:MatchNameOrAttr> "." <attr:Identifier> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Attribute {
-            value: Box::new(e),
-            attr,
-            ctx: ast::ExprContext::Load,
-        }
-    )
-}
-
-ValuePattern: ast::PatternKind = {
-   <e:MatchNameOrAttr> => ast::PatternKind::MatchValue {
-       value: Box::new(e)
-   },
-}
-
-MappingKey: ast::Expr = {
-    ConstantExpr,
-    AddOpExpr,
-    MatchNameOrAttr,
-    <location:@L> "None" <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Constant {
-            value: ast::Constant::None,
-            kind: None,
-        },
-    ),
-    <location:@L> "True" <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Constant {
-            value: true.into(),
-            kind: None,
-        },
-    ),
-    <location:@L> "False" <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Constant {
-            value: false.into(),
-            kind: None,
-        },
-    ),
-    <location:@L> <s:(@L string @R)+> =>? Ok(parse_strings(s)?),
-}
-
-MatchMappingEntry: (ast::Expr, ast::Pattern) = {
-    <k:MappingKey> ":" <v:Pattern> => (k, v),
-};
-
-MappingPattern: ast::PatternKind = {
-    <location:@L> "{" "}" <end_location:@R> => {
-        return ast::PatternKind::MatchMapping {
-            keys: vec![],
-            patterns: vec![],
-            rest: None,
-        };
-    },
-    <location:@L> "{" <e:OneOrMore<MatchMappingEntry>> ","? "}" <end_location:@R> => {
-        let (keys, patterns) = e
-            .into_iter()
-            .unzip();
-        return ast::PatternKind::MatchMapping {
-            keys,
-            patterns,
-            rest: None,
-        };
-    },
-    <location:@L> "{" "**" <rest:Identifier> ","? "}" <end_location:@R> => {
-        return ast::PatternKind::MatchMapping {
-            keys: vec![],
-            patterns: vec![],
-            rest: Some(rest),
-        };
-    },
-    <location:@L> "{" <e:OneOrMore<MatchMappingEntry>> ","  "**" <rest:Identifier> ","? "}" <end_location:@R> => {
-        let (keys, patterns) = e
-            .into_iter()
-            .unzip();
-        return ast::PatternKind::MatchMapping {
-            keys,
-            patterns,
-            rest: Some(rest),
-        };
-    },
-}
-
-MatchKeywordEntry: (String, ast::Pattern) = {
-    <k:Identifier> "=" <v:Pattern> => (k, v),
-};
-
-ClassPattern: ast::PatternKind = {
-    <location:@L> <e:MatchName> "(" <patterns: OneOrMore<Pattern>> "," <kwds:OneOrMore<MatchKeywordEntry>> ","? ")" <end_location:@R> => {
-        let (kwd_attrs, kwd_patterns) = kwds
-            .into_iter()
-            .unzip();
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns,
-            kwd_attrs,
-            kwd_patterns,
-        }
-    },
-    <location:@L> <e:MatchName> "(" <patterns: OneOrMore<Pattern>> ","? ")" <end_location:@R> => {
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns,
-            kwd_attrs: vec![],
-            kwd_patterns: vec![],
-        }
-    },
-    <location:@L> <e:MatchName> "(" <kwds:OneOrMore<MatchKeywordEntry>> ","? ")" <end_location:@R> => {
-         let (kwd_attrs, kwd_patterns) = kwds
-            .into_iter()
-            .unzip();
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns: vec![],
-            kwd_attrs,
-            kwd_patterns,
-        }
-    },
-    <location:@L> <e:MatchName> "(" ")" <end_location:@R> => {
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns: vec![],
-            kwd_attrs: vec![],
-            kwd_patterns: vec![],
-        }
-    },
-    <location:@L> <e:MatchNameOrAttr> "(" <patterns: OneOrMore<Pattern>> "," <kwds:OneOrMore<MatchKeywordEntry>> ","? ")" <end_location:@R> => {
-        let (kwd_attrs, kwd_patterns) = kwds
-            .into_iter()
-            .unzip();
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns,
-            kwd_attrs,
-            kwd_patterns,
-        }
-    },
-    <location:@L> <e:MatchNameOrAttr> "(" <patterns: OneOrMore<Pattern>> ","? ")" <end_location:@R> => {
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns,
-            kwd_attrs: vec![],
-            kwd_patterns: vec![],
-        }
-    },
-    <location:@L> <e:MatchNameOrAttr> "(" <kwds:OneOrMore<MatchKeywordEntry>> ","? ")" <end_location:@R> => {
-         let (kwd_attrs, kwd_patterns) = kwds
-            .into_iter()
-            .unzip();
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns: vec![],
-            kwd_attrs,
-            kwd_patterns,
-        }
-    },
-    <location:@L> <e:MatchNameOrAttr> "(" ")" <end_location:@R> => {
-        ast::PatternKind::MatchClass {
-            cls: Box::new(e),
-            patterns: vec![],
-            kwd_attrs: vec![],
-            kwd_patterns: vec![],
-        }
-    },
-}
-
-IfStatement: ast::Stmt = {
-    <location:@L> "if" <test:NamedExpressionTest> ":" <body:Suite> <s2:(@L "elif" NamedExpressionTest ":" Suite)*> <s3:("else" ":" Suite)?> => {
-        // Determine last else:
-        let mut last = s3.map(|s| s.2).unwrap_or_default();
-        let end_location = last
-            .last()
-            .or_else(|| s2.last().and_then(|last| last.4.last()))
-            .or_else(|| body.last())
-            .unwrap()
-            .end();
-        // handle elif:
-        for i in s2.into_iter().rev() {
-            let x = ast::Stmt::new(
-                i.0,
-                end_location,
-                ast::StmtKind::If { test: Box::new(i.2), body: i.4, orelse: last },
-            );
-            last = vec![x];
-        }
-
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::If { test: Box::new(test), body, orelse: last }
-        )
-    },
-};
-
-WhileStatement: ast::Stmt = {
-    <location:@L> "while" <test:NamedExpressionTest> ":" <body:Suite> <s2:("else" ":" Suite)?> => {
-        let orelse = s2.map(|s| s.2).unwrap_or_default();
-        let end_location = orelse
-            .last()
-            .or_else(|| body.last())
-            .unwrap()
-            .end();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::While {
-                test: Box::new(test),
-                body,
-                orelse
-            },
-        )
-    },
-};
-
-ForStatement: ast::Stmt = {
-    <location:@L> <is_async:"async"?> "for" <target:ExpressionList> "in" <iter:TestList> ":" <body:Suite> <s2:("else" ":" Suite)?> => {
-        let orelse = s2.map(|s| s.2).unwrap_or_default();
-        let end_location = orelse
-            .last()
-            .or_else(|| body.last())
-            .unwrap()
-            .end();
-        let target = Box::new(set_context(target, ast::ExprContext::Store));
-        let iter = Box::new(iter);
-        let type_comment = None;
-        let node = if is_async.is_some() {
-            ast::StmtKind::AsyncFor { target, iter, body, orelse, type_comment }
-        } else {
-            ast::StmtKind::For { target, iter, body, orelse, type_comment }
-        };
-        ast::Stmt::new(location, end_location, node)
-    },
-};
-
-TryStatement: ast::Stmt = {
-    <location:@L> "try" ":" <body:Suite> <handlers:ExceptClause+> <else_suite:("else" ":" Suite)?> <finally:("finally" ":" Suite)?> <end_location:@R> => {
-        let orelse = else_suite.map(|s| s.2).unwrap_or_default();
-        let finalbody = finally.map(|s| s.2).unwrap_or_default();
-        let end_location = finalbody
-            .last()
-            .map(|last| last.end())
-            .or_else(|| orelse.last().map(|last| last.end()))
-            .or_else(|| handlers.last().map(|last| last.end()))
-            .unwrap();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Try {
-                body,
-                handlers,
-                orelse,
-                finalbody,
-            },
-        )
-    },
-    <location:@L> "try" ":" <body:Suite> <handlers:ExceptStarClause+> <else_suite:("else" ":" Suite)?> <finally:("finally" ":" Suite)?> <end_location:@R> => {
-        let orelse = else_suite.map(|s| s.2).unwrap_or_default();
-        let finalbody = finally.map(|s| s.2).unwrap_or_default();
-        let end_location = finalbody
-            .last()
-            .or_else(|| orelse.last())
-            .map(|last| last.end())
-            .or_else(|| handlers.last().map(|last| last.end()))
-            .unwrap();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::TryStar {
-                body,
-                handlers,
-                orelse,
-                finalbody,
-            },
-        )
-    },
-    <location:@L> "try" ":" <body:Suite> <finally:("finally" ":" Suite)> => {
-        let handlers = vec![];
-        let orelse = vec![];
-        let finalbody = finally.2;
-        let end_location = finalbody.last().unwrap().end();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::Try {
-                body,
-                handlers,
-                orelse,
-                finalbody,
-            },
-        )
-    },
-};
-
-ExceptStarClause: ast::Excepthandler = {
-    <location:@L> "except" "*" <typ:Test<"all">> ":" <body:Suite> => {
-        let end_location = body.last().unwrap().end();
-        ast::Excepthandler::new(
-            location,
-            end_location,
-            ast::ExcepthandlerKind::ExceptHandler {
-                type_: Some(Box::new(typ)),
-                name: None,
-                body,
-            },
-        )
-    },
-    <location:@L> "except" "*" <x:(Test<"all"> "as" Identifier)> ":" <body:Suite> => {
-        let end_location = body.last().unwrap().end();
-        ast::Excepthandler::new(
-            location,
-            end_location,
-            ast::ExcepthandlerKind::ExceptHandler {
-                type_: Some(Box::new(x.0)),
-                name: Some(x.2),
-                body,
-            },
-        )
-    },
-};
-
-
-ExceptClause: ast::Excepthandler = {
-    <location:@L> "except" <typ:Test<"all">?> ":" <body:Suite> => {
-        let end_location = body.last().unwrap().end();
-        ast::Excepthandler::new(
-            location,
-            end_location,
-            ast::ExcepthandlerKind::ExceptHandler {
-                type_: typ.map(Box::new),
-                name: None,
-                body,
-            },
-        )
-    },
-    <location:@L> "except" <x:(Test<"all"> "as" Identifier)> ":" <body:Suite> => {
-        let end_location = body.last().unwrap().end();
-        ast::Excepthandler::new(
-            location,
-            end_location,
-            ast::ExcepthandlerKind::ExceptHandler {
-                type_: Some(Box::new(x.0)),
-                name: Some(x.2),
-                body,
-            },
-        )
-    },
-};
-
-WithStatement: ast::Stmt = {
-    <location:@L> <is_async:"async"?> "with" <items:WithItems> ":" <body:Suite> => {
-        let end_location = body.last().unwrap().end();
-        let type_comment = None;
-        let node = if is_async.is_some() {
-            ast::StmtKind::AsyncWith { items, body, type_comment }
-        } else {
-            ast::StmtKind::With { items, body, type_comment }
-        };
-        ast::Stmt::new(location, end_location, node)
-    },
-};
-
-WithItems: Vec<ast::Withitem> = {
-    "(" <WithItemsNoAs> ","? ")",
-    "(" <left:(<WithItemsNoAs> ",")?> <mid:WithItem<"as">> <right:("," <WithItem<"all">>)*> ","? ")" => {
-        left.into_iter().flatten().chain([mid]).chain(right).collect()
-    },
-    <WithItem<"no-withitems">> => vec![<>],
-    <item:WithItem<"all">> <items:("," <WithItem<"all">>)+> => {
-        [item].into_iter().chain(items).collect()
-    }
-};
-
-#[inline]
-WithItemsNoAs: Vec<ast::Withitem> = {
-    <OneOrMore<Test<"all">>> => {
-        <>.into_iter().map(|context_expr| ast::Withitem { context_expr, optional_vars: None }).collect()
-    },
-}
-
-WithItem<Goal>: ast::Withitem = {
-    <Test<Goal>> if Goal != "as" => ast::Withitem { context_expr: <>, optional_vars: None },
-    <context_expr:Test<"all">> "as" <vars:Expression<"all">> => {
-        let optional_vars = Some(Box::new(set_context(vars, ast::ExprContext::Store)));
-        ast::Withitem { context_expr, optional_vars }
-    },
-};
-
-FuncDef: ast::Stmt = {
-    <decorator_list:Decorator*> <location:@L> <is_async:"async"?> "def" <name:Identifier> <args:Parameters> <r:("->" Test<"all">)?> ":" <body:Suite>  => {
-        let args = Box::new(args);
-        let returns = r.map(|x| Box::new(x.1));
-        let end_location = body.last().unwrap().end();
-        let type_comment = None;
-        let node = if is_async.is_some() {
-            ast::StmtKind::AsyncFunctionDef { name, args, body, decorator_list, returns, type_comment }
-        } else {
-            ast::StmtKind::FunctionDef { name, args, body, decorator_list, returns, type_comment }
-        };
-        ast::Stmt::new(location, end_location, node)
-    },
-};
-
-Parameters: ast::Arguments = {
-    "(" <a: (ParameterList<TypedParameter, StarTypedParameter>)?> ")" =>? {
-        let args = validate_arguments(
-            a.unwrap_or_else(|| ast::Arguments {
-                posonlyargs: vec![],
-                args: vec![],
-                vararg: None,
-                kwonlyargs: vec![],
-                kw_defaults: vec![],
-                kwarg: None,
-                defaults: vec![]
-            })
-        )?;
-
-        Ok(args)
-    }
-};
-
-// Note that this is a macro which is used once for function defs, and
-// once for lambda defs.
-ParameterList<ArgType, StarArgType>: ast::Arguments = {
-    <param1:ParameterDefs<ArgType>> <args2:("," ParameterListStarArgs<ArgType, StarArgType>)?> ","? =>? {
-        let (posonlyargs, args, defaults) = parse_params(param1)?;
-
-        // Now gather rest of parameters:
-        let (vararg, kwonlyargs, kw_defaults, kwarg) = args2.map_or((None, vec![], vec![], None), |x| x.1);
-
-        Ok(ast::Arguments {
-            posonlyargs,
-            args,
-            kwonlyargs,
-            vararg,
-            kwarg,
-            defaults,
-            kw_defaults,
-        })
-    },
-    <param1:ParameterDefs<ArgType>> <kw:("," KwargParameter<ArgType>)> ","? =>? {
-        let (posonlyargs, args, defaults) = parse_params(param1)?;
-
-        // Now gather rest of parameters:
-        let vararg = None;
-        let kwonlyargs = vec![];
-        let kw_defaults = vec![];
-        let kwarg = kw.1;
-
-        Ok(ast::Arguments {
-            posonlyargs,
-            args,
-            kwonlyargs,
-            vararg,
-            kwarg,
-            defaults,
-            kw_defaults,
-        })
-    },
-    <params:ParameterListStarArgs<ArgType, StarArgType>> ","? => {
-        let (vararg, kwonlyargs, kw_defaults, kwarg) = params;
-        ast::Arguments {
-            posonlyargs: vec![],
-            args: vec![],
-            kwonlyargs,
-            vararg,
-            kwarg,
-            defaults: vec![],
-            kw_defaults,
-        }
-    },
-    <kwarg:KwargParameter<ArgType>> ","? => {
-        ast::Arguments {
-            posonlyargs: vec![],
-            args: vec![],
-            kwonlyargs: vec![],
-            vararg: None,
-            kwarg,
-            defaults: vec![],
-            kw_defaults: vec![],
-        }
-    },
-};
-
-// Use inline here to make sure the "," is not creating an ambiguity.
-#[inline]
-ParameterDefs<ArgType>: (Vec<(ast::Arg, Option<ast::Expr>)>, Vec<(ast::Arg, Option<ast::Expr>)>) = {
-    <args:OneOrMore<ParameterDef<ArgType>>> => {
-        (vec![], args)
-    },
-    <pos_args:OneOrMore<ParameterDef<ArgType>>> "," "/" <args:("," ParameterDef<ArgType>)*>  => {
-        (pos_args, args.into_iter().map(|e| e.1).collect())
-    },
-};
-
-ParameterDef<ArgType>: (ast::Arg, Option<ast::Expr>) = {
-    <i:ArgType> => (i, None),
-    <i:ArgType> "=" <e:Test<"all">> => (i, Some(e)),
-};
-
-UntypedParameter: ast::Arg = {
-    <location:@L> <arg:Identifier> <end_location:@R> => ast::Arg::new(
-        location,
-        end_location,
-        ast::ArgData { arg, annotation: None, type_comment: None },
-    ),
-};
-
-TypedParameter: ast::Arg = {
-    <location:@L> <arg:Identifier> <a:(":" Test<"all">)?> <end_location:@R> => {
-        let annotation = a.map(|x| Box::new(x.1));
-        ast::Arg::new(location, end_location, ast::ArgData { arg, annotation, type_comment: None })
-    },
-};
-
-StarTypedParameter: ast::Arg = {
-    <location:@L> <arg:Identifier> <a:(":" TestOrStarExpr)?> <end_location:@R> => {
-        let annotation = a.map(|x| Box::new(x.1));
-        ast::Arg::new(location, end_location, ast::ArgData { arg, annotation, type_comment: None })
-    },
-};
-
-// Use inline here to make sure the "," is not creating an ambiguity.
-// TODO: figure out another grammar that makes this inline no longer required.
-#[inline]
-ParameterListStarArgs<ArgType, StarArgType>: (Option<Box<ast::Arg>>, Vec<ast::Arg>, Vec<ast::Expr>, Option<Box<ast::Arg>>) = {
-    <location:@L> "*" <va:StarArgType?> <kw:("," ParameterDef<ArgType>)*> <kwarg:("," KwargParameter<ArgType>)?> =>? {
-        // Extract keyword arguments:
-        let mut kwonlyargs = Vec::new();
-        let mut kw_defaults = Vec::new();
-        let mut kwargs = Vec::new();
-        for (name, value) in kw.into_iter().map(|x| x.1) {
-            if let Some(value) = value {
-                kwonlyargs.push(name);
-                kw_defaults.push(value);
-            } else {
-                kwargs.push(name);
-            }
-        }
-        kwargs.extend(kwonlyargs.into_iter());
-
-        if va.is_none() && kwargs.is_empty() && kwarg.is_none() {
-            Err(LexicalError {
-                error: LexicalErrorType::OtherError("named arguments must follow bare *".to_string()),
-                location,
-            })?
-        }
-
-        let kwarg = kwarg.map(|n| n.1).flatten();
-        let va = va.map(Box::new);
-
-        Ok((va, kwargs, kw_defaults, kwarg))
-    }
-};
-
-KwargParameter<ArgType>: Option<Box<ast::Arg>> = {
-    "**" <kwarg:ArgType?> => {
-        kwarg.map(Box::new)
-    }
-};
-
-ClassDef: ast::Stmt = {
-    <decorator_list:Decorator*> <location:@L> "class" <name:Identifier> <a:("(" ArgumentList ")")?> ":" <body:Suite> => {
-        let (bases, keywords) = match a {
-            Some((_, arg, _)) => (arg.args, arg.keywords),
-            None => (vec![], vec![]),
-        };
-        let end_location = body.last().unwrap().end();
-        ast::Stmt::new(
-            location,
-            end_location,
-            ast::StmtKind::ClassDef {
-                name,
-                bases,
-                keywords,
-                body,
-                decorator_list,
-            },
-        )
-    },
-};
-
-// Decorators:
-Decorator: ast::Expr = {
-    <location:@L> "@" <p:NamedExpressionTest> "\n" => {
-        p
-    },
-};
-
-YieldExpr: ast::Expr = {
-    <location:@L> "yield" <value:TestList?> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Yield { value: value.map(Box::new) }
-    ),
-    <location:@L> "yield" "from" <e:Test<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::YieldFrom { value: Box::new(e) }
-    ),
-};
-
-Test<Goal>: ast::Expr = {
-    <location:@L> <body:OrTest<"all">> "if" <test:OrTest<"all">> "else" <orelse:Test<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::IfExp {
-            test: Box::new(test),
-            body: Box::new(body),
-            orelse: Box::new(orelse),
-        }
-    ),
-    OrTest<Goal>,
-    LambdaDef,
-};
-
-NamedExpressionTest: ast::Expr = {
-    NamedExpression,
-    Test<"all">,
-}
-
-NamedExpression: ast::Expr = {
-    <location:@L> <id:Identifier> <end_location:@R> ":=" <value:Test<"all">> => {
-        ast::Expr::new(
-            location,
-            value.end(),
-            ast::ExprKind::NamedExpr {
-                target: Box::new(ast::Expr::new(
-                    location,
-                    end_location,
-                    ast::ExprKind::Name { id, ctx: ast::ExprContext::Store },
-                )),
-                value: Box::new(value),
-            }
-        )
-    },
-};
-
-LambdaDef: ast::Expr = {
-    <location:@L> "lambda" <p:ParameterList<UntypedParameter, UntypedParameter>?> ":" <body:Test<"all">> <end_location:@R> =>? {
-        let p = validate_arguments(
-            p.unwrap_or_else(|| {
-                ast::Arguments {
-                    posonlyargs: vec![],
-                    args: vec![],
-                    vararg: None,
-                    kwonlyargs: vec![],
-                    kw_defaults: vec![],
-                    kwarg: None,
-                    defaults: vec![]
-                }
-            }
-        ))?;
-
-        Ok(ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Lambda {
-                args: Box::new(p),
-                body: Box::new(body)
-            }
-        ))
-    }
-}
-
-OrTest<Goal>: ast::Expr = {
-    <location:@L> <e1:AndTest<"all">> <e2:("or" AndTest<"all">)+> <end_location:@R> => {
-        let mut values = vec![e1];
-        values.extend(e2.into_iter().map(|e| e.1));
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::BoolOp { op: ast::Boolop::Or, values }
-        )
-    },
-    AndTest<Goal>,
-};
-
-AndTest<Goal>: ast::Expr = {
-    <location:@L> <e1:NotTest<"all">> <e2:("and" NotTest<"all">)+> <end_location:@R> => {
-        let mut values = vec![e1];
-        values.extend(e2.into_iter().map(|e| e.1));
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::BoolOp { op: ast::Boolop::And, values }
-        )
-    },
-    NotTest<Goal>,
-};
-
-NotTest<Goal>: ast::Expr = {
-    <location:@L> "not" <e:NotTest<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::UnaryOp { operand: Box::new(e), op: ast::Unaryop::Not }
-    ),
-    Comparison<Goal>,
-};
-
-Comparison<Goal>: ast::Expr = {
-    <location:@L> <left:Expression<"all">> <comparisons:(CompOp Expression<"all">)+> <end_location:@R> => {
-        let (ops, comparators) = comparisons.into_iter().unzip();
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Compare { left: Box::new(left), ops, comparators }
-        )
-    },
-    Expression<Goal>,
-};
-
-CompOp: ast::Cmpop = {
-    "==" => ast::Cmpop::Eq,
-    "!=" => ast::Cmpop::NotEq,
-    "<" => ast::Cmpop::Lt,
-    "<=" => ast::Cmpop::LtE,
-    ">" => ast::Cmpop::Gt,
-    ">=" => ast::Cmpop::GtE,
-    "in" => ast::Cmpop::In,
-    "not" "in" => ast::Cmpop::NotIn,
-    "is" => ast::Cmpop::Is,
-    "is" "not" => ast::Cmpop::IsNot,
-};
-
-Expression<Goal>: ast::Expr = {
-    <location:@L> <e1:Expression<"all">> "|" <e2:XorExpression<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(e1), op: ast::Operator::BitOr, right: Box::new(e2) }
-    ),
-    XorExpression<Goal>,
-};
-
-XorExpression<Goal>: ast::Expr = {
-    <location:@L> <e1:XorExpression<"all">> "^" <e2:AndExpression<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(e1), op: ast::Operator::BitXor, right: Box::new(e2) }
-    ),
-    AndExpression<Goal>,
-};
-
-AndExpression<Goal>: ast::Expr = {
-    <location:@L> <e1:AndExpression<"all">> "&" <e2:ShiftExpression<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(e1), op: ast::Operator::BitAnd, right: Box::new(e2) }
-    ),
-    ShiftExpression<Goal>,
-};
-
-ShiftExpression<Goal>: ast::Expr = {
-    <location:@L> <e1:ShiftExpression<"all">> <op:ShiftOp> <e2:ArithmeticExpression<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(e1), op, right: Box::new(e2) }
-    ),
-    ArithmeticExpression<Goal>,
-};
-
-ShiftOp: ast::Operator = {
-    "<<" => ast::Operator::LShift,
-    ">>" => ast::Operator::RShift,
-};
-
-ArithmeticExpression<Goal>: ast::Expr = {
-    <location:@L> <a:ArithmeticExpression<"all">> <op:AddOp> <b:Term<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(a), op, right: Box::new(b) }
-    ),
-    Term<Goal>,
-};
-
-AddOp: ast::Operator = {
-    "+" => ast::Operator::Add,
-    "-" => ast::Operator::Sub,
-};
-
-Term<Goal>: ast::Expr = {
-    <location:@L> <a:Term<"all">> <op:MulOp> <b:Factor<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(a), op, right: Box::new(b) }
-    ),
-    Factor<Goal>,
-};
-
-MulOp: ast::Operator = {
-    "*" => ast::Operator::Mult,
-    "/" => ast::Operator::Div,
-    "//" => ast::Operator::FloorDiv,
-    "%" => ast::Operator::Mod,
-    "@" => ast::Operator::MatMult,
-};
-
-Factor<Goal>: ast::Expr = {
-    <location:@L> <op:UnaryOp> <e:Factor<"all">> <end_location:@R>  => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::UnaryOp { operand: Box::new(e), op }
-    ),
-    Power<Goal>,
-};
-
-UnaryOp: ast::Unaryop = {
-    "+" => ast::Unaryop::UAdd,
-    "-" => ast::Unaryop::USub,
-    "~" => ast::Unaryop::Invert,
-};
-
-Power<Goal>: ast::Expr = {
-    <location:@L> <e:AtomExpr<"all">> "**" <b:Factor<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::BinOp { left: Box::new(e), op: ast::Operator::Pow, right: Box::new(b) }
-    ),
-    AtomExpr<Goal>,
-};
-
-AtomExpr<Goal>: ast::Expr = {
-    <location:@L> "await" <atom:AtomExpr2<"all">> <end_location:@R> => {
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Await { value: Box::new(atom) }
-        )
-    },
-    AtomExpr2<Goal>,
-}
-
-AtomExpr2<Goal>: ast::Expr = {
-    Atom<Goal>,
-    <location:@L> <f:AtomExpr2<"all">> "(" <a:ArgumentList> ")" <end_location:@R> => {
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Call { func: Box::new(f), args: a.args, keywords: a.keywords }
-        )
-    },
-    <location:@L> <e:AtomExpr2<"all">> "[" <s:SubscriptList> "]" <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Subscript { value: Box::new(e), slice: Box::new(s), ctx: ast::ExprContext::Load }
-    ),
-    <location:@L> <e:AtomExpr2<"all">> "." <attr:Identifier> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Attribute { value: Box::new(e), attr, ctx: ast::ExprContext::Load }
-    ),
-};
-
-SubscriptList: ast::Expr = {
-    <location:@L> <s1:Subscript> <s2:("," Subscript)*> <trailing_comma:","?> <end_location:@R> => {
-        if s2.is_empty() && trailing_comma.is_none() {
-            s1
-        } else {
-            let mut dims = vec![s1];
-            for x in s2 {
-                dims.push(x.1)
-            }
-
-            ast::Expr::new(
-                location,
-                end_location,
-                ast::ExprKind::Tuple { elts: dims, ctx: ast::ExprContext::Load },
-            )
-        }
-    }
-};
-
-Subscript: ast::Expr = {
-    TestOrStarNamedExpr,
-    <location:@L> <e1:Test<"all">?> ":" <e2:Test<"all">?> <e3:SliceOp?> <end_location:@R> => {
-        let lower = e1.map(Box::new);
-        let upper = e2.map(Box::new);
-        let step = e3.flatten().map(Box::new);
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Slice { lower, upper, step }
-        )
-    }
-};
-
-SliceOp: Option<ast::Expr> = {
-    <location:@L> ":" <e:Test<"all">?> => e,
-}
-
-Atom<Goal>: ast::Expr = {
-    <location:@L> <s:(@L string @R)+> =>? Ok(parse_strings(s)?),
-    <location:@L> <value:Constant> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Constant { value, kind: None }
-    ),
-    <location:@L> <name:Identifier> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Name { id: name, ctx: ast::ExprContext::Load }
-    ),
-    <location:@L> "[" <e:ListLiteralValues?> "]"<end_location:@R>  => {
-        let elts = e.unwrap_or_default();
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::List { elts, ctx: ast::ExprContext::Load }
-        )
-    },
-    <location:@L> "[" <elt:TestOrStarNamedExpr> <generators:CompFor> "]" <end_location:@R> => {
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::ListComp { elt: Box::new(elt), generators }
-        )
-    },
-    <location:@L> "(" <elts:OneOrMore<Test<"all">>> <trailing_comma:","?> ")" <end_location:@R> if Goal != "no-withitems" => {
-        if elts.len() == 1 && trailing_comma.is_none() {
-            elts.into_iter().next().unwrap()
-        } else {
-            ast::Expr::new(
-                location,
-                end_location,
-                ast::ExprKind::Tuple { elts, ctx: ast::ExprContext::Load },
-            )
-        }
-    },
-    <location:@L> "(" <left:(<OneOrMore<Test<"all">>> ",")?> <mid:NamedOrStarExpr> <right:("," <TestOrStarNamedExpr>)*> <trailing_comma:","?> ")" <end_location:@R> =>? {
-        if left.is_none() && right.is_empty() && trailing_comma.is_none() {
-            if matches!(mid.node, ast::ExprKind::Starred { .. }) {
-                Err(LexicalError{
-                    error: LexicalErrorType::OtherError("cannot use starred expression here".to_string()),
-                    location: mid.start(),
-                })?
-            }
-            Ok(mid)
-        } else {
-            let elts = left.into_iter().flatten().chain([mid]).chain(right).collect();
-            Ok(ast::Expr::new(
-                location,
-                end_location,
-                ast::ExprKind::Tuple { elts, ctx: ast::ExprContext::Load },
-            ))
-        }
-    },
-    <location:@L> "(" ")" <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Tuple { elts: Vec::new(), ctx: ast::ExprContext::Load }
-    ),
-    "(" <e:YieldExpr> ")" => e,
-    <location:@L> "(" <elt:NamedExpressionTest> <generators:CompFor> ")" <end_location:@R> => {
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::GeneratorExp { elt: Box::new(elt), generators }
-        )
-    },
-    "(" <location:@L> "**" <e:Expression<"all">> ")" <end_location:@R> =>? {
-        Err(LexicalError{
-            error : LexicalErrorType::OtherError("cannot use double starred expression here".to_string()),
-            location,
-        }.into())
-    },
-    <location:@L> "{" <e:DictLiteralValues?> "}" <end_location:@R> => {
-        let (keys, values) = e
-            .unwrap_or_default()
-            .into_iter()
-            .map(|(k, v)| (k.map(|x| *x), v))
-            .unzip();
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Dict { keys, values }
-        )
-    },
-    <location:@L> "{" <e1:DictEntry> <generators:CompFor> "}" <end_location:@R> => {
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::DictComp {
-                key: Box::new(e1.0),
-                value: Box::new(e1.1),
-                generators,
-            }
-        )
-    },
-    <location:@L> "{" <elts:SetLiteralValues> "}" <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Set { elts }
-    ),
-    <location:@L> "{" <elt:NamedExpressionTest> <generators:CompFor> "}" <end_location:@R> => {
-        ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::SetComp { elt: Box::new(elt), generators }
-        )
-    },
-    <location:@L> "True" <end_location:@R> => ast::Expr::new(location, end_location, ast::ExprKind::Constant { value: true.into(), kind: None }),
-    <location:@L> "False" <end_location:@R> => ast::Expr::new(location, end_location, ast::ExprKind::Constant { value: false.into(), kind: None }),
-    <location:@L> "None" <end_location:@R> => ast::Expr::new(location, end_location, ast::ExprKind::Constant { value: ast::Constant::None, kind: None }),
-    <location:@L> "..." <end_location:@R> => ast::Expr::new(location, end_location, ast::ExprKind::Constant { value: ast::Constant::Ellipsis, kind: None }),
-};
-
-ListLiteralValues: Vec<ast::Expr> = {
-    <e:OneOrMore<TestOrStarNamedExpr>> ","? => e,
-};
-
-DictLiteralValues: Vec<(Option<Box<ast::Expr>>, ast::Expr)> = {
-    <elements:OneOrMore<DictElement>> ","? => elements,
-};
-
-DictEntry: (ast::Expr, ast::Expr) = {
-    <e1: Test<"all">> ":" <e2: Test<"all">> => (e1, e2),
-};
-
-DictElement: (Option<Box<ast::Expr>>, ast::Expr) = {
-    <e:DictEntry> => (Some(Box::new(e.0)), e.1),
-    "**" <e:Expression<"all">> => (None, e),
-};
-
-SetLiteralValues: Vec<ast::Expr> = {
-    <e1:OneOrMore<TestOrStarNamedExpr>> ","? => e1
-};
-
-ExpressionOrStarExpression = {
-    Expression<"all">,
-    StarExpr
-};
-
-ExpressionList: ast::Expr = {
-    GenericList<ExpressionOrStarExpression>
-};
-
-ExpressionList2: Vec<ast::Expr> = {
-    <elements:OneOrMore<ExpressionOrStarExpression>> ","? => elements,
-};
-
-// A test list is one of:
-// - a list of expressions
-// - a single expression
-// - a single expression followed by a trailing comma
-#[inline]
-TestList: ast::Expr = {
-    GenericList<TestOrStarExpr>
-};
-
-GenericList<Element>: ast::Expr = {
-    <location:@L> <elts:OneOrMore<Element>> <trailing_comma:","?> <end_location:@R> => {
-        if elts.len() == 1 && trailing_comma.is_none() {
-            elts.into_iter().next().unwrap()
-        } else {
-            ast::Expr::new(
-                location,
-                end_location,
-                ast::ExprKind::Tuple { elts, ctx: ast::ExprContext::Load }
-            )
-        }
-    }
-}
-
-// Test
-StarExpr: ast::Expr = {
-    <location:@L> "*" <e:Expression<"all">> <end_location:@R> => ast::Expr::new(
-        location,
-        end_location,
-        ast::ExprKind::Starred { value: Box::new(e), ctx: ast::ExprContext::Load },
-    )
-};
-
-// Comprehensions:
-CompFor: Vec<ast::Comprehension> = <c:SingleForComprehension+> => c;
-
-SingleForComprehension: ast::Comprehension = {
-    <location:@L> <is_async:"async"?> "for" <target:ExpressionList> "in" <iter:OrTest<"all">> <ifs:ComprehensionIf*> <end_location:@R> => {
-        let is_async = is_async.is_some();
-        ast::Comprehension {
-            target: set_context(target, ast::ExprContext::Store),
-            iter,
-            ifs,
-            is_async: if is_async { 1 } else { 0 },
-        }
-    }
-};
-
-ExpressionNoCond: ast::Expr = OrTest<"all">;
-ComprehensionIf: ast::Expr = "if" <c:ExpressionNoCond> => c;
-
-ArgumentList: ArgumentList = {
-    <e: Comma<FunctionArgument>> =>? {
-        let arg_list = parse_args(e)?;
-        Ok(arg_list)
-    }
-};
-
-FunctionArgument: (Option<(ast::Location, ast::Location, Option<String>)>, ast::Expr) = {
-    <location:@L> <e:NamedExpressionTest> <c:CompFor?> <end_location:@R> => {
-        let expr = match c {
-            Some(c) => ast::Expr::new(
-                location,
-                end_location,
-                ast::ExprKind::GeneratorExp {
-                    elt: Box::new(e),
-                    generators: c,
-                }
-            ),
-            None => e,
-        };
-        (None, expr)
-    },
-    <location:@L> <i:Identifier> "=" <e:Test<"all">> <end_location:@R> => (Some((location, end_location, Some(i))), e),
-    <location:@L> "*" <e:Test<"all">> <end_location:@R> => {
-        let expr = ast::Expr::new(
-            location,
-            end_location,
-            ast::ExprKind::Starred { value: Box::new(e), ctx: ast::ExprContext::Load },
-        );
-        (None, expr)
-    },
-    <location:@L> "**" <e:Test<"all">> <end_location:@R> => (Some((location, end_location, None)), e),
-};
-
-#[inline]
-Comma<T>: Vec<T> = {
-    <items: (<T> ",")*> <last: T?> => {
-        let mut items = items;
-        items.extend(last);
-        items
-    }
-};
-
-#[inline]
-OneOrMore<T>: Vec<T> = {
-    <i1: T> <i2:("," T)*> => {
-        let mut items = vec![i1];
-        items.extend(i2.into_iter().map(|e| e.1));
-        items
-    }
-};
-
-Constant: ast::Constant = {
-    <value:int> => ast::Constant::Int(value),
-    <value:float> => ast::Constant::Float(value),
-    <s:complex> => ast::Constant::Complex { real: s.0, imag: s.1 },
-};
-
-Identifier: String = <s:name> => s;
-
-// Hook external lexer:
-extern {
-    type Location = ast::Location;
-    type Error = LexicalError;
-
-    enum token::Tok {
-        Indent => token::Tok::Indent,
-        Dedent => token::Tok::Dedent,
-        StartModule => token::Tok::StartModule,
-        StartInteractive => token::Tok::StartInteractive,
-        StartExpression => token::Tok::StartExpression,
-        "+" => token::Tok::Plus,
-        "-" => token::Tok::Minus,
-        "~" => token::Tok::Tilde,
-        ":" => token::Tok::Colon,
-        "." => token::Tok::Dot,
-        "..." => token::Tok::Ellipsis,
-        "," => token::Tok::Comma,
-        "*" => token::Tok::Star,
-        "**" => token::Tok::DoubleStar,
-        "&" => token::Tok::Amper,
-        "@" => token::Tok::At,
-        "%" => token::Tok::Percent,
-        "//" => token::Tok::DoubleSlash,
-        "^" => token::Tok::CircumFlex,
-        "|" => token::Tok::Vbar,
-        "<<" => token::Tok::LeftShift,
-        ">>" => token::Tok::RightShift,
-        "/" => token::Tok::Slash,
-        "(" => token::Tok::Lpar,
-        ")" => token::Tok::Rpar,
-        "[" => token::Tok::Lsqb,
-        "]" => token::Tok::Rsqb,
-        "{" => token::Tok::Lbrace,
-        "}" => token::Tok::Rbrace,
-        "=" => token::Tok::Equal,
-        "+=" => token::Tok::PlusEqual,
-        "-=" => token::Tok::MinusEqual,
-        "*=" => token::Tok::StarEqual,
-        "@=" => token::Tok::AtEqual,
-        "/=" => token::Tok::SlashEqual,
-        "%=" => token::Tok::PercentEqual,
-        "&=" => token::Tok::AmperEqual,
-        "|=" => token::Tok::VbarEqual,
-        "^=" => token::Tok::CircumflexEqual,
-        "<<=" => token::Tok::LeftShiftEqual,
-        ">>=" => token::Tok::RightShiftEqual,
-        "**=" => token::Tok::DoubleStarEqual,
-        "//=" => token::Tok::DoubleSlashEqual,
-        ":=" => token::Tok::ColonEqual,
-        "==" => token::Tok::EqEqual,
-        "!=" => token::Tok::NotEqual,
-        "<" => token::Tok::Less,
-        "<=" => token::Tok::LessEqual,
-        ">" => token::Tok::Greater,
-        ">=" => token::Tok::GreaterEqual,
-        "->" => token::Tok::Rarrow,
-        "and" => token::Tok::And,
-        "as" => token::Tok::As,
-        "assert" => token::Tok::Assert,
-        "async" => token::Tok::Async,
-        "await" => token::Tok::Await,
-        "break" => token::Tok::Break,
-        "class" => token::Tok::Class,
-        "continue" => token::Tok::Continue,
-        "def" => token::Tok::Def,
-        "del" => token::Tok::Del,
-        "elif" => token::Tok::Elif,
-        "else" => token::Tok::Else,
-        "except" => token::Tok::Except,
-        "finally" => token::Tok::Finally,
-        "for" => token::Tok::For,
-        "from" => token::Tok::From,
-        "global" => token::Tok::Global,
-        "if" => token::Tok::If,
-        "import" => token::Tok::Import,
-        "in" => token::Tok::In,
-        "is" => token::Tok::Is,
-        "lambda" => token::Tok::Lambda,
-        "nonlocal" => token::Tok::Nonlocal,
-        "not" => token::Tok::Not,
-        "or" => token::Tok::Or,
-        "pass" => token::Tok::Pass,
-        "raise" => token::Tok::Raise,
-        "return" => token::Tok::Return,
-        "try" => token::Tok::Try,
-        "while" => token::Tok::While,
-        "match" => token::Tok::Match,
-        "case" => token::Tok::Case,
-        "with" => token::Tok::With,
-        "yield" => token::Tok::Yield,
-        "True" => token::Tok::True,
-        "False" => token::Tok::False,
-        "None" => token::Tok::None,
-        int => token::Tok::Int { value: <BigInt> },
-        float => token::Tok::Float { value: <f64> },
-        complex => token::Tok::Complex { real: <f64>, imag: <f64> },
-        string => token::Tok::String {
-            value: <String>,
-            kind: <StringKind>,
-            triple_quoted: <bool>
-        },
-        name => token::Tok::Name { name: <String> },
-        "\n" => token::Tok::Newline,
-        ";" => token::Tok::Semi,
-        "#" => token::Tok::Comment(_),
-    }
-}
diff --git a/compiler/parser/src/context.rs b/compiler/parser/src/context.rs
deleted file mode 100644
index eb1953f693..0000000000
--- a/compiler/parser/src/context.rs
+++ /dev/null
@@ -1,177 +0,0 @@
-use rustpython_ast::{Expr, ExprContext, ExprKind};
-
-pub(crate) fn set_context(expr: Expr, ctx: ExprContext) -> Expr {
-    match expr.node {
-        ExprKind::Name { id, .. } => Expr {
-            node: ExprKind::Name { id, ctx },
-            ..expr
-        },
-        ExprKind::Tuple { elts, .. } => Expr {
-            node: ExprKind::Tuple {
-                elts: elts
-                    .into_iter()
-                    .map(|elt| set_context(elt, ctx.clone()))
-                    .collect(),
-                ctx,
-            },
-            ..expr
-        },
-        ExprKind::List { elts, .. } => Expr {
-            node: ExprKind::List {
-                elts: elts
-                    .into_iter()
-                    .map(|elt| set_context(elt, ctx.clone()))
-                    .collect(),
-                ctx,
-            },
-            ..expr
-        },
-        ExprKind::Attribute { value, attr, .. } => Expr {
-            node: ExprKind::Attribute { value, attr, ctx },
-            ..expr
-        },
-        ExprKind::Subscript { value, slice, .. } => Expr {
-            node: ExprKind::Subscript { value, slice, ctx },
-            ..expr
-        },
-        ExprKind::Starred { value, .. } => Expr {
-            node: ExprKind::Starred {
-                value: Box::new(set_context(*value, ctx.clone())),
-                ctx,
-            },
-            ..expr
-        },
-        _ => expr,
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use crate::parser::parse_program;
-
-    #[test]
-    fn test_assign_name() {
-        let source = "x = (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_tuple() {
-        let source = "(x, y) = (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_list() {
-        let source = "[x, y] = (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_attribute() {
-        let source = "x.y = (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_subscript() {
-        let source = "x[y] = (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_starred() {
-        let source = "(x, *y) = (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_for() {
-        let source = "for x in (1, 2, 3): pass";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_list_comp() {
-        let source = "x = [y for y in (1, 2, 3)]";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_set_comp() {
-        let source = "x = {y for y in (1, 2, 3)}";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_with() {
-        let source = "with 1 as x: pass";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_assign_named_expr() {
-        let source = "if x:= 1: pass";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_ann_assign_name() {
-        let source = "x: int = 1";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_aug_assign_name() {
-        let source = "x += 1";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_aug_assign_attribute() {
-        let source = "x.y += (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_aug_assign_subscript() {
-        let source = "x[y] += (1, 2, 3)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_del_name() {
-        let source = "del x";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_del_attribute() {
-        let source = "del x.y";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_del_subscript() {
-        let source = "del x[y]";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-}
diff --git a/compiler/parser/src/function.rs b/compiler/parser/src/function.rs
deleted file mode 100644
index 17b9882bf1..0000000000
--- a/compiler/parser/src/function.rs
+++ /dev/null
@@ -1,229 +0,0 @@
-// Contains functions that perform validation and parsing of arguments and parameters.
-// Checks apply both to functions and to lambdas.
-use crate::{
-    ast,
-    lexer::{LexicalError, LexicalErrorType},
-};
-use rustc_hash::FxHashSet;
-
-pub(crate) struct ArgumentList {
-    pub args: Vec<ast::Expr>,
-    pub keywords: Vec<ast::Keyword>,
-}
-
-type ParameterDefs = (Vec<ast::Arg>, Vec<ast::Arg>, Vec<ast::Expr>);
-type ParameterDef = (ast::Arg, Option<ast::Expr>);
-
-// Perform validation of function/lambda arguments in a function definition.
-pub(crate) fn validate_arguments(
-    arguments: ast::Arguments,
-) -> Result<ast::Arguments, LexicalError> {
-    let mut all_args: Vec<&ast::Located<ast::ArgData>> = vec![];
-
-    all_args.extend(arguments.posonlyargs.iter());
-    all_args.extend(arguments.args.iter());
-
-    if let Some(a) = &arguments.vararg {
-        all_args.push(a);
-    }
-
-    all_args.extend(arguments.kwonlyargs.iter());
-
-    if let Some(a) = &arguments.kwarg {
-        all_args.push(a);
-    }
-
-    let mut all_arg_names = FxHashSet::with_hasher(Default::default());
-    for arg in all_args {
-        let arg_name = &arg.arg;
-        // Check for duplicate arguments in the function definition.
-        if !all_arg_names.insert(arg_name) {
-            return Err(LexicalError {
-                error: LexicalErrorType::DuplicateArgumentError(arg_name.to_string()),
-                location: arg.start(),
-            });
-        }
-    }
-
-    Ok(arguments)
-}
-
-// Parse parameters as supplied during a function/lambda *definition*.
-pub(crate) fn parse_params(
-    params: (Vec<ParameterDef>, Vec<ParameterDef>),
-) -> Result<ParameterDefs, LexicalError> {
-    let mut pos_only = Vec::with_capacity(params.0.len());
-    let mut names = Vec::with_capacity(params.1.len());
-    let mut defaults = vec![];
-
-    let mut try_default = |name: &ast::Arg, default| {
-        if let Some(default) = default {
-            defaults.push(default);
-        } else if !defaults.is_empty() {
-            // Once we have started with defaults, all remaining arguments must
-            // have defaults.
-            return Err(LexicalError {
-                error: LexicalErrorType::DefaultArgumentError,
-                location: name.start(),
-            });
-        }
-        Ok(())
-    };
-
-    for (name, default) in params.0 {
-        try_default(&name, default)?;
-        pos_only.push(name);
-    }
-
-    for (name, default) in params.1 {
-        try_default(&name, default)?;
-        names.push(name);
-    }
-
-    Ok((pos_only, names, defaults))
-}
-
-type FunctionArgument = (
-    Option<(ast::Location, ast::Location, Option<String>)>,
-    ast::Expr,
-);
-
-// Parse arguments as supplied during a function/lambda *call*.
-pub(crate) fn parse_args(func_args: Vec<FunctionArgument>) -> Result<ArgumentList, LexicalError> {
-    let mut args = vec![];
-    let mut keywords = vec![];
-
-    let mut keyword_names =
-        FxHashSet::with_capacity_and_hasher(func_args.len(), Default::default());
-    let mut double_starred = false;
-    for (name, value) in func_args {
-        match name {
-            Some((start, end, name)) => {
-                // Check for duplicate keyword arguments in the call.
-                if let Some(keyword_name) = &name {
-                    if keyword_names.contains(keyword_name) {
-                        return Err(LexicalError {
-                            error: LexicalErrorType::DuplicateKeywordArgumentError(
-                                keyword_name.to_string(),
-                            ),
-                            location: start,
-                        });
-                    }
-
-                    keyword_names.insert(keyword_name.clone());
-                } else {
-                    double_starred = true;
-                }
-
-                keywords.push(ast::Keyword::new(
-                    start,
-                    end,
-                    ast::KeywordData { arg: name, value },
-                ));
-            }
-            None => {
-                // Positional arguments mustn't follow keyword arguments.
-                if !keywords.is_empty() && !is_starred(&value) {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::PositionalArgumentError,
-                        location: value.start(),
-                    });
-                // Allow starred arguments after keyword arguments but
-                // not after double-starred arguments.
-                } else if double_starred {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::UnpackedArgumentError,
-                        location: value.start(),
-                    });
-                }
-
-                args.push(value);
-            }
-        }
-    }
-    Ok(ArgumentList { args, keywords })
-}
-
-// Check if an expression is a starred expression.
-fn is_starred(exp: &ast::Expr) -> bool {
-    matches!(exp.node, ast::ExprKind::Starred { .. })
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use crate::parser::{parse_program, ParseErrorType};
-
-    macro_rules! function_and_lambda {
-        ($($name:ident: $code:expr,)*) => {
-            $(
-                #[test]
-                fn $name() {
-                    let parse_ast = parse_program($code, "<test>");
-                    insta::assert_debug_snapshot!(parse_ast);
-                }
-            )*
-        }
-    }
-
-    function_and_lambda! {
-        test_function_no_args: "def f(): pass",
-        test_function_pos_args: "def f(a, b, c): pass",
-        test_function_pos_args_with_defaults: "def f(a, b=20, c=30): pass",
-        test_function_kw_only_args: "def f(*, a, b, c): pass",
-        test_function_kw_only_args_with_defaults: "def f(*, a, b=20, c=30): pass",
-        test_function_pos_and_kw_only_args: "def f(a, b, c, *, d, e, f): pass",
-        test_function_pos_and_kw_only_args_with_defaults: "def f(a, b, c, *, d, e=20, f=30): pass",
-        test_function_pos_and_kw_only_args_with_defaults_and_varargs: "def f(a, b, c, *args, d, e=20, f=30): pass",
-        test_function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs: "def f(a, b, c, *args, d, e=20, f=30, **kwargs): pass",
-        test_lambda_no_args: "lambda: 1",
-        test_lambda_pos_args: "lambda a, b, c: 1",
-        test_lambda_pos_args_with_defaults: "lambda a, b=20, c=30: 1",
-        test_lambda_kw_only_args: "lambda *, a, b, c: 1",
-        test_lambda_kw_only_args_with_defaults: "lambda *, a, b=20, c=30: 1",
-        test_lambda_pos_and_kw_only_args: "lambda a, b, c, *, d, e: 0",
-    }
-
-    fn function_parse_error(src: &str) -> LexicalErrorType {
-        let parse_ast = parse_program(src, "<test>");
-        parse_ast
-            .map_err(|e| match e.error {
-                ParseErrorType::Lexical(e) => e,
-                _ => panic!("Expected LexicalError"),
-            })
-            .expect_err("Expected error")
-    }
-
-    macro_rules! function_and_lambda_error {
-        ($($name:ident: $code:expr, $error:expr,)*) => {
-            $(
-                #[test]
-                fn $name() {
-                    let error = function_parse_error($code);
-                    assert_eq!(error, $error);
-                }
-            )*
-        }
-    }
-
-    function_and_lambda_error! {
-        // Check definitions
-        test_duplicates_f1: "def f(a, a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_f2: "def f(a, *, a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_f3: "def f(a, a=20): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_f4: "def f(a, *a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_f5: "def f(a, *, **a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_l1: "lambda a, a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_l2: "lambda a, *, a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_l3: "lambda a, a=20: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_l4: "lambda a, *a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_duplicates_l5: "lambda a, *, **a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()),
-        test_default_arg_error_f: "def f(a, b=20, c): pass", LexicalErrorType::DefaultArgumentError,
-        test_default_arg_error_l: "lambda a, b=20, c: 1", LexicalErrorType::DefaultArgumentError,
-
-        // Check some calls.
-        test_positional_arg_error_f: "f(b=20, c)", LexicalErrorType::PositionalArgumentError,
-        test_unpacked_arg_error_f: "f(**b, *c)", LexicalErrorType::UnpackedArgumentError,
-        test_duplicate_kw_f1: "f(a=20, a=30)", LexicalErrorType::DuplicateKeywordArgumentError("a".to_string()),
-    }
-}
diff --git a/compiler/parser/src/lexer.rs b/compiler/parser/src/lexer.rs
deleted file mode 100644
index 38b1d53e5a..0000000000
--- a/compiler/parser/src/lexer.rs
+++ /dev/null
@@ -1,1794 +0,0 @@
-//! This module takes care of lexing Python source text.
-//!
-//! This means source code is scanned and translated into separate tokens. The rules
-//! governing what is and is not a valid token are defined in the Python reference
-//! guide section on [Lexical analysis].
-//!
-//! The primary function in this module is [`lex`], which takes a string slice
-//! and returns an iterator over the tokens in the source code. The tokens are currently returned
-//! as a `Result<Spanned, LexicalError>`, where [`Spanned`] is a tuple containing the
-//! start and end [`Location`] and a [`Tok`] denoting the token.
-//!
-//! # Example
-//!
-//! ```
-//! use rustpython_parser::{lexer::lex, Tok, Mode, StringKind};
-//!
-//! let source = "x = 'RustPython'";
-//! let tokens = lex(source, Mode::Module)
-//!     .map(|tok| tok.expect("Failed to lex"))
-//!     .collect::<Vec<_>>();
-//!
-//! for (start, token, end) in tokens {
-//!     println!(
-//!         "{0},{1}-{2},{3:<5} {token:?}",
-//!         start.row(),
-//!         start.column(),
-//!         end.row(),
-//!         end.column(),
-//!     );
-//! }
-//! ```
-//!
-//! [Lexical analysis]: https://docs.python.org/3/reference/lexical_analysis.html
-use crate::{
-    ast::Location,
-    mode::Mode,
-    soft_keywords::SoftKeywordTransformer,
-    string::FStringErrorType,
-    token::{StringKind, Tok},
-};
-use log::trace;
-use num_bigint::BigInt;
-use num_traits::{Num, Zero};
-use std::{char, cmp::Ordering, ops::Index, slice::SliceIndex, str::FromStr};
-use unic_emoji_char::is_emoji_presentation;
-use unic_ucd_ident::{is_xid_continue, is_xid_start};
-
-// Indentations are tracked by a stack of indentation levels. IndentationLevel keeps
-// track of the number of tabs and spaces at the current level.
-#[derive(Clone, Copy, PartialEq, Debug, Default)]
-struct IndentationLevel {
-    tabs: u32,
-    spaces: u32,
-}
-
-impl IndentationLevel {
-    fn compare_strict(
-        &self,
-        other: &IndentationLevel,
-        location: Location,
-    ) -> Result<Ordering, LexicalError> {
-        // We only know for sure that we're smaller or bigger if tabs
-        // and spaces both differ in the same direction. Otherwise we're
-        // dependent on the size of tabs.
-        match self.tabs.cmp(&other.tabs) {
-            Ordering::Less => {
-                if self.spaces <= other.spaces {
-                    Ok(Ordering::Less)
-                } else {
-                    Err(LexicalError {
-                        location,
-                        error: LexicalErrorType::TabError,
-                    })
-                }
-            }
-            Ordering::Greater => {
-                if self.spaces >= other.spaces {
-                    Ok(Ordering::Greater)
-                } else {
-                    Err(LexicalError {
-                        location,
-                        error: LexicalErrorType::TabError,
-                    })
-                }
-            }
-            Ordering::Equal => Ok(self.spaces.cmp(&other.spaces)),
-        }
-    }
-}
-
-// The indentations stack is used to keep track of the current indentation level.
-// Similar to the CPython implementation, the Indentations stack always has at
-// least one level which is never popped. See Reference 2.1.8.
-#[derive(Debug)]
-struct Indentations {
-    indent_stack: Vec<IndentationLevel>,
-}
-
-impl Indentations {
-    fn is_empty(&self) -> bool {
-        self.indent_stack.len() == 1
-    }
-
-    fn push(&mut self, indent: IndentationLevel) {
-        self.indent_stack.push(indent);
-    }
-
-    fn pop(&mut self) -> Option<IndentationLevel> {
-        if self.is_empty() {
-            return None;
-        }
-        self.indent_stack.pop()
-    }
-
-    fn current(&self) -> &IndentationLevel {
-        self.indent_stack
-            .last()
-            .expect("Indentations must have at least one level")
-    }
-}
-
-impl Default for Indentations {
-    fn default() -> Self {
-        Self {
-            indent_stack: vec![IndentationLevel::default()],
-        }
-    }
-}
-
-// A CharWindow is a sliding window over an iterator of chars. It is used to
-// allow for look-ahead when scanning tokens from the source code.
-struct CharWindow<T: Iterator<Item = char>, const N: usize> {
-    source: T,
-    window: [Option<char>; N],
-}
-
-impl<T, const N: usize> CharWindow<T, N>
-where
-    T: Iterator<Item = char>,
-{
-    fn new(source: T) -> Self {
-        Self {
-            source,
-            window: [None; N],
-        }
-    }
-
-    fn slide(&mut self) -> Option<char> {
-        self.window.rotate_left(1);
-        let next = self.source.next();
-        *self.window.last_mut().expect("never empty") = next;
-        next
-    }
-}
-
-impl<T, const N: usize, Idx> Index<Idx> for CharWindow<T, N>
-where
-    T: Iterator<Item = char>,
-    Idx: SliceIndex<[Option<char>]>,
-{
-    type Output = Idx::Output;
-
-    fn index(&self, index: Idx) -> &Self::Output {
-        &self.window[index]
-    }
-}
-
-/// A lexer for Python source code.
-pub struct Lexer<T: Iterator<Item = char>> {
-    // Contains the source code to be lexed.
-    window: CharWindow<T, 3>,
-    // Are we at the beginning of a line?
-    at_begin_of_line: bool,
-    // Amount of parenthesis.
-    nesting: usize,
-    // Indentation levels.
-    indentations: Indentations,
-    // Pending list of tokens to be returned.
-    pending: Vec<Spanned>,
-    // The current location.
-    location: Location,
-}
-
-// generated in build.rs, in gen_phf()
-/// A map of keywords to their tokens.
-pub static KEYWORDS: phf::Map<&'static str, Tok> =
-    include!(concat!(env!("OUT_DIR"), "/keywords.rs"));
-
-/// Contains a Token along with its start and end location.
-pub type Spanned = (Location, Tok, Location);
-/// The result of lexing a token.
-pub type LexResult = Result<Spanned, LexicalError>;
-
-/// Create a new lexer from a source string.
-///
-/// # Examples
-///
-/// ```
-/// use rustpython_parser::{Mode, lexer::lex};
-///
-/// let source = "def hello(): return 'world'";
-/// let lexer = lex(source, Mode::Module);
-///
-/// for token in lexer {
-///    println!("{:?}", token);
-/// }
-/// ```
-#[inline]
-pub fn lex(source: &str, mode: Mode) -> impl Iterator<Item = LexResult> + '_ {
-    lex_located(source, mode, Location::default())
-}
-
-/// Create a new lexer from a source string, starting at a given location.
-/// You probably want to use [`lex`] instead.
-pub fn lex_located(
-    source: &str,
-    mode: Mode,
-    start_location: Location,
-) -> impl Iterator<Item = LexResult> + '_ {
-    SoftKeywordTransformer::new(Lexer::new(source.chars(), start_location), mode)
-}
-
-impl<T> Lexer<T>
-where
-    T: Iterator<Item = char>,
-{
-    /// Create a new lexer from T and a starting location. You probably want to use
-    /// [`lex`] instead.
-    pub fn new(input: T, start: Location) -> Self {
-        let mut lxr = Lexer {
-            at_begin_of_line: true,
-            nesting: 0,
-            indentations: Indentations::default(),
-            // Usually we have less than 5 tokens pending.
-            pending: Vec::with_capacity(5),
-            location: start,
-            window: CharWindow::new(input),
-        };
-        // Fill the window.
-        lxr.window.slide();
-        lxr.window.slide();
-        lxr.window.slide();
-        // TODO: Handle possible mismatch between BOM and explicit encoding declaration.
-        // spell-checker:ignore feff
-        if let Some('\u{feff}') = lxr.window[0] {
-            lxr.window.slide();
-        }
-        lxr
-    }
-
-    /// Lex an identifier. Also used for keywords and string/bytes literals with a prefix.
-    fn lex_identifier(&mut self) -> LexResult {
-        // Detect potential string like rb'' b'' f'' u'' r''
-        match self.window[..3] {
-            [Some(c), Some('"' | '\''), ..] => {
-                if let Ok(kind) = StringKind::try_from(c) {
-                    return self.lex_string(kind);
-                }
-            }
-            [Some(c1), Some(c2), Some('"' | '\'')] => {
-                if let Ok(kind) = StringKind::try_from([c1, c2]) {
-                    return self.lex_string(kind);
-                }
-            }
-            _ => {}
-        };
-
-        let start_pos = self.get_pos();
-        let mut name = String::with_capacity(8);
-        while self.is_identifier_continuation() {
-            name.push(self.next_char().unwrap());
-        }
-        let end_pos = self.get_pos();
-
-        if let Some(tok) = KEYWORDS.get(&name) {
-            Ok((start_pos, tok.clone(), end_pos))
-        } else {
-            Ok((start_pos, Tok::Name { name }, end_pos))
-        }
-    }
-
-    /// Numeric lexing. The feast can start!
-    fn lex_number(&mut self) -> LexResult {
-        let start_pos = self.get_pos();
-        match self.window[..2] {
-            [Some('0'), Some('x' | 'X')] => {
-                // Hex! (0xdeadbeef)
-                self.next_char();
-                self.next_char();
-                self.lex_number_radix(start_pos, 16)
-            }
-            [Some('0'), Some('o' | 'O')] => {
-                // Octal style! (0o377)
-                self.next_char();
-                self.next_char();
-                self.lex_number_radix(start_pos, 8)
-            }
-            [Some('0'), Some('b' | 'B')] => {
-                // Binary! (0b_1110_0101)
-                self.next_char();
-                self.next_char();
-                self.lex_number_radix(start_pos, 2)
-            }
-            _ => self.lex_normal_number(),
-        }
-    }
-
-    /// Lex a hex/octal/decimal/binary number without a decimal point.
-    fn lex_number_radix(&mut self, start_pos: Location, radix: u32) -> LexResult {
-        let value_text = self.radix_run(radix);
-        let end_pos = self.get_pos();
-        let value = BigInt::from_str_radix(&value_text, radix).map_err(|e| LexicalError {
-            error: LexicalErrorType::OtherError(format!("{e:?}")),
-            location: start_pos,
-        })?;
-        Ok((start_pos, Tok::Int { value }, end_pos))
-    }
-
-    /// Lex a normal number, that is, no octal, hex or binary number.
-    fn lex_normal_number(&mut self) -> LexResult {
-        let start_pos = self.get_pos();
-        let start_is_zero = self.window[0] == Some('0');
-        // Normal number:
-        let mut value_text = self.radix_run(10);
-
-        // If float:
-        if self.window[0] == Some('.') || self.at_exponent() {
-            // Take '.':
-            if self.window[0] == Some('.') {
-                if self.window[1] == Some('_') {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::OtherError("Invalid Syntax".to_owned()),
-                        location: self.get_pos(),
-                    });
-                }
-                value_text.push(self.next_char().unwrap());
-                value_text.push_str(&self.radix_run(10));
-            }
-
-            // 1e6 for example:
-            if let Some('e' | 'E') = self.window[0] {
-                if self.window[1] == Some('_') {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::OtherError("Invalid Syntax".to_owned()),
-                        location: self.get_pos(),
-                    });
-                }
-                value_text.push(self.next_char().unwrap().to_ascii_lowercase());
-                // Optional +/-
-                if matches!(self.window[0], Some('-' | '+')) {
-                    if self.window[1] == Some('_') {
-                        return Err(LexicalError {
-                            error: LexicalErrorType::OtherError("Invalid Syntax".to_owned()),
-                            location: self.get_pos(),
-                        });
-                    }
-                    value_text.push(self.next_char().unwrap());
-                }
-
-                value_text.push_str(&self.radix_run(10));
-            }
-
-            let value = f64::from_str(&value_text).map_err(|_| LexicalError {
-                error: LexicalErrorType::OtherError("Invalid decimal literal".to_owned()),
-                location: self.get_pos(),
-            })?;
-
-            // Parse trailing 'j':
-            if matches!(self.window[0], Some('j' | 'J')) {
-                self.next_char();
-                let end_pos = self.get_pos();
-                Ok((
-                    start_pos,
-                    Tok::Complex {
-                        real: 0.0,
-                        imag: value,
-                    },
-                    end_pos,
-                ))
-            } else {
-                let end_pos = self.get_pos();
-                Ok((start_pos, Tok::Float { value }, end_pos))
-            }
-        } else {
-            // Parse trailing 'j':
-            if matches!(self.window[0], Some('j' | 'J')) {
-                self.next_char();
-                let end_pos = self.get_pos();
-                let imag = f64::from_str(&value_text).unwrap();
-                Ok((start_pos, Tok::Complex { real: 0.0, imag }, end_pos))
-            } else {
-                let end_pos = self.get_pos();
-                let value = value_text.parse::<BigInt>().unwrap();
-                if start_is_zero && !value.is_zero() {
-                    // leading zeros in decimal integer literals are not permitted
-                    return Err(LexicalError {
-                        error: LexicalErrorType::OtherError("Invalid Token".to_owned()),
-                        location: self.get_pos(),
-                    });
-                }
-                Ok((start_pos, Tok::Int { value }, end_pos))
-            }
-        }
-    }
-
-    /// Consume a sequence of numbers with the given radix,
-    /// the digits can be decorated with underscores
-    /// like this: '1_2_3_4' == '1234'
-    fn radix_run(&mut self, radix: u32) -> String {
-        let mut value_text = String::new();
-
-        loop {
-            if let Some(c) = self.take_number(radix) {
-                value_text.push(c);
-            } else if self.window[0] == Some('_')
-                && Lexer::<T>::is_digit_of_radix(self.window[1], radix)
-            {
-                self.next_char();
-            } else {
-                break;
-            }
-        }
-        value_text
-    }
-
-    /// Consume a single character with the given radix.
-    fn take_number(&mut self, radix: u32) -> Option<char> {
-        let take_char = Lexer::<T>::is_digit_of_radix(self.window[0], radix);
-
-        take_char.then(|| self.next_char().unwrap())
-    }
-
-    /// Test if a digit is of a certain radix.
-    fn is_digit_of_radix(c: Option<char>, radix: u32) -> bool {
-        match radix {
-            2 => matches!(c, Some('0'..='1')),
-            8 => matches!(c, Some('0'..='7')),
-            10 => matches!(c, Some('0'..='9')),
-            16 => matches!(c, Some('0'..='9') | Some('a'..='f') | Some('A'..='F')),
-            other => unimplemented!("Radix not implemented: {}", other),
-        }
-    }
-
-    /// Test if we face '[eE][-+]?[0-9]+'
-    fn at_exponent(&self) -> bool {
-        match self.window[..2] {
-            [Some('e' | 'E'), Some('+' | '-')] => matches!(self.window[2], Some('0'..='9')),
-            [Some('e' | 'E'), Some('0'..='9')] => true,
-            _ => false,
-        }
-    }
-
-    /// Lex a single comment.
-    fn lex_comment(&mut self) -> LexResult {
-        let start_pos = self.get_pos();
-        let mut value = String::new();
-        loop {
-            match self.window[0] {
-                Some('\n' | '\r') | None => {
-                    let end_pos = self.get_pos();
-                    return Ok((start_pos, Tok::Comment(value), end_pos));
-                }
-                Some(_) => {}
-            }
-            value.push(self.next_char().unwrap());
-        }
-    }
-
-    /// Lex a string literal.
-    fn lex_string(&mut self, kind: StringKind) -> LexResult {
-        let start_pos = self.get_pos();
-        for _ in 0..kind.prefix_len() {
-            self.next_char();
-        }
-        let quote_char = self.next_char().unwrap();
-        let mut string_content = String::with_capacity(5);
-
-        // If the next two characters are also the quote character, then we have a triple-quoted
-        // string; consume those two characters and ensure that we require a triple-quote to close
-        let triple_quoted = if self.window[..2] == [Some(quote_char); 2] {
-            self.next_char();
-            self.next_char();
-            true
-        } else {
-            false
-        };
-
-        loop {
-            match self.next_char() {
-                Some(c) => {
-                    if c == '\\' {
-                        if let Some(next_c) = self.next_char() {
-                            string_content.push('\\');
-                            string_content.push(next_c);
-                            continue;
-                        }
-                    }
-                    if c == '\n' && !triple_quoted {
-                        return Err(LexicalError {
-                            error: LexicalErrorType::OtherError(
-                                "EOL while scanning string literal".to_owned(),
-                            ),
-                            location: self.get_pos(),
-                        });
-                    }
-
-                    if c == quote_char {
-                        if triple_quoted {
-                            // Look ahead at the next two characters; if we have two more
-                            // quote_chars, it's the end of the string; consume the remaining
-                            // closing quotes and break the loop
-                            if self.window[..2] == [Some(quote_char); 2] {
-                                self.next_char();
-                                self.next_char();
-                                break;
-                            }
-                        } else {
-                            break;
-                        }
-                    }
-                    string_content.push(c);
-                }
-                None => {
-                    return Err(LexicalError {
-                        error: if triple_quoted {
-                            LexicalErrorType::Eof
-                        } else {
-                            LexicalErrorType::StringError
-                        },
-                        location: self.get_pos(),
-                    });
-                }
-            }
-        }
-        let end_pos = self.get_pos();
-        let tok = Tok::String {
-            value: string_content,
-            kind,
-            triple_quoted,
-        };
-        Ok((start_pos, tok, end_pos))
-    }
-
-    // Checks if the character c is a valid starting character as described
-    // in https://docs.python.org/3/reference/lexical_analysis.html#identifiers
-    fn is_identifier_start(&self, c: char) -> bool {
-        match c {
-            'a'..='z' | 'A'..='Z' | '_' => true,
-            _ => is_xid_start(c),
-        }
-    }
-
-    // Checks if the character c is a valid continuation character as described
-    // in https://docs.python.org/3/reference/lexical_analysis.html#identifiers
-    fn is_identifier_continuation(&self) -> bool {
-        match self.window[0] {
-            Some('a'..='z' | 'A'..='Z' | '_' | '0'..='9') => true,
-            Some(c) => is_xid_continue(c),
-            _ => false,
-        }
-    }
-
-    // This is the main entry point. Call this function to retrieve the next token.
-    // This function is used by the iterator implementation.
-    fn inner_next(&mut self) -> LexResult {
-        // top loop, keep on processing, until we have something pending.
-        while self.pending.is_empty() {
-            // Detect indentation levels
-            if self.at_begin_of_line {
-                self.handle_indentations()?;
-            }
-
-            self.consume_normal()?;
-        }
-
-        Ok(self.pending.remove(0))
-    }
-
-    // Given we are at the start of a line, count the number of spaces and/or tabs until the first character.
-    fn eat_indentation(&mut self) -> Result<IndentationLevel, LexicalError> {
-        // Determine indentation:
-        let mut spaces: u32 = 0;
-        let mut tabs: u32 = 0;
-        loop {
-            match self.window[0] {
-                Some(' ') => {
-                    /*
-                    if tabs != 0 {
-                        // Don't allow spaces after tabs as part of indentation.
-                        // This is technically stricter than python3 but spaces after
-                        // tabs is even more insane than mixing spaces and tabs.
-                        return Some(Err(LexicalError {
-                            error: LexicalErrorType::OtherError("Spaces not allowed as part of indentation after tabs".to_owned()),
-                            location: self.get_pos(),
-                        }));
-                    }
-                    */
-                    self.next_char();
-                    spaces += 1;
-                }
-                Some('\t') => {
-                    if spaces != 0 {
-                        // Don't allow tabs after spaces as part of indentation.
-                        // This is technically stricter than python3 but spaces before
-                        // tabs is even more insane than mixing spaces and tabs.
-                        return Err(LexicalError {
-                            error: LexicalErrorType::TabsAfterSpaces,
-                            location: self.get_pos(),
-                        });
-                    }
-                    self.next_char();
-                    tabs += 1;
-                }
-                Some('#') => {
-                    let comment = self.lex_comment()?;
-                    self.emit(comment);
-                    spaces = 0;
-                    tabs = 0;
-                }
-                Some('\x0C') => {
-                    // Form feed character!
-                    // Reset indentation for the Emacs user.
-                    self.next_char();
-                    spaces = 0;
-                    tabs = 0;
-                }
-                Some('\n' | '\r') => {
-                    // Empty line!
-                    self.next_char();
-                    spaces = 0;
-                    tabs = 0;
-                }
-                None => {
-                    spaces = 0;
-                    tabs = 0;
-                    break;
-                }
-                _ => {
-                    self.at_begin_of_line = false;
-                    break;
-                }
-            }
-        }
-
-        Ok(IndentationLevel { tabs, spaces })
-    }
-
-    // Push/pop indents/dedents based on the current indentation level.
-    fn handle_indentations(&mut self) -> Result<(), LexicalError> {
-        let indentation_level = self.eat_indentation()?;
-
-        if self.nesting != 0 {
-            return Ok(());
-        }
-
-        // Determine indent or dedent:
-        let current_indentation = self.indentations.current();
-        let ordering = indentation_level.compare_strict(current_indentation, self.get_pos())?;
-        match ordering {
-            Ordering::Equal => {
-                // Same same
-            }
-            Ordering::Greater => {
-                // New indentation level:
-                self.indentations.push(indentation_level);
-                let tok_pos = self.get_pos();
-                self.emit((tok_pos, Tok::Indent, tok_pos));
-            }
-            Ordering::Less => {
-                // One or more dedentations
-                // Pop off other levels until col is found:
-
-                loop {
-                    let current_indentation = self.indentations.current();
-                    let ordering =
-                        indentation_level.compare_strict(current_indentation, self.get_pos())?;
-                    match ordering {
-                        Ordering::Less => {
-                            self.indentations.pop();
-                            let tok_pos = self.get_pos();
-                            self.emit((tok_pos, Tok::Dedent, tok_pos));
-                        }
-                        Ordering::Equal => {
-                            // We arrived at proper level of indentation.
-                            break;
-                        }
-                        Ordering::Greater => {
-                            return Err(LexicalError {
-                                error: LexicalErrorType::IndentationError,
-                                location: self.get_pos(),
-                            });
-                        }
-                    }
-                }
-            }
-        }
-
-        Ok(())
-    }
-
-    // Take a look at the next character, if any, and decide upon the next steps.
-    fn consume_normal(&mut self) -> Result<(), LexicalError> {
-        if let Some(c) = self.window[0] {
-            // Identifiers are the most common case.
-            if self.is_identifier_start(c) {
-                let identifier = self.lex_identifier()?;
-                self.emit(identifier);
-            } else {
-                self.consume_character(c)?;
-            }
-        } else {
-            // We reached end of file.
-            let tok_pos = self.get_pos();
-
-            // First of all, we need all nestings to be finished.
-            if self.nesting > 0 {
-                return Err(LexicalError {
-                    error: LexicalErrorType::Eof,
-                    location: tok_pos,
-                });
-            }
-
-            // Next, insert a trailing newline, if required.
-            if !self.at_begin_of_line {
-                self.at_begin_of_line = true;
-                self.emit((tok_pos, Tok::Newline, tok_pos));
-            }
-
-            // Next, flush the indentation stack to zero.
-            while !self.indentations.is_empty() {
-                self.indentations.pop();
-                self.emit((tok_pos, Tok::Dedent, tok_pos));
-            }
-
-            self.emit((tok_pos, Tok::EndOfFile, tok_pos));
-        }
-
-        Ok(())
-    }
-
-    // Dispatch based on the given character.
-    fn consume_character(&mut self, c: char) -> Result<(), LexicalError> {
-        match c {
-            '0'..='9' => {
-                let number = self.lex_number()?;
-                self.emit(number);
-            }
-            '#' => {
-                let comment = self.lex_comment()?;
-                self.emit(comment);
-            }
-            '"' | '\'' => {
-                let string = self.lex_string(StringKind::String)?;
-                self.emit(string);
-            }
-            '=' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                match self.window[0] {
-                    Some('=') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::EqEqual, tok_end));
-                    }
-                    _ => {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Equal, tok_end));
-                    }
-                }
-            }
-            '+' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::PlusEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::Plus, tok_end));
-                }
-            }
-            '*' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                match self.window[0] {
-                    Some('=') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::StarEqual, tok_end));
-                    }
-                    Some('*') => {
-                        self.next_char();
-                        match self.window[0] {
-                            Some('=') => {
-                                self.next_char();
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::DoubleStarEqual, tok_end));
-                            }
-                            _ => {
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::DoubleStar, tok_end));
-                            }
-                        }
-                    }
-                    _ => {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Star, tok_end));
-                    }
-                }
-            }
-            '/' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                match self.window[0] {
-                    Some('=') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::SlashEqual, tok_end));
-                    }
-                    Some('/') => {
-                        self.next_char();
-                        match self.window[0] {
-                            Some('=') => {
-                                self.next_char();
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::DoubleSlashEqual, tok_end));
-                            }
-                            _ => {
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::DoubleSlash, tok_end));
-                            }
-                        }
-                    }
-                    _ => {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Slash, tok_end));
-                    }
-                }
-            }
-            '%' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::PercentEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::Percent, tok_end));
-                }
-            }
-            '|' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::VbarEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::Vbar, tok_end));
-                }
-            }
-            '^' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::CircumflexEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::CircumFlex, tok_end));
-                }
-            }
-            '&' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::AmperEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::Amper, tok_end));
-                }
-            }
-            '-' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                match self.window[0] {
-                    Some('=') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::MinusEqual, tok_end));
-                    }
-                    Some('>') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Rarrow, tok_end));
-                    }
-                    _ => {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Minus, tok_end));
-                    }
-                }
-            }
-            '@' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::AtEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::At, tok_end));
-                }
-            }
-            '!' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::NotEqual, tok_end));
-                } else {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::UnrecognizedToken { tok: '!' },
-                        location: tok_start,
-                    });
-                }
-            }
-            '~' => {
-                self.eat_single_char(Tok::Tilde);
-            }
-            '(' => {
-                self.eat_single_char(Tok::Lpar);
-                self.nesting += 1;
-            }
-            ')' => {
-                self.eat_single_char(Tok::Rpar);
-                if self.nesting == 0 {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::NestingError,
-                        location: self.get_pos(),
-                    });
-                }
-                self.nesting -= 1;
-            }
-            '[' => {
-                self.eat_single_char(Tok::Lsqb);
-                self.nesting += 1;
-            }
-            ']' => {
-                self.eat_single_char(Tok::Rsqb);
-                if self.nesting == 0 {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::NestingError,
-                        location: self.get_pos(),
-                    });
-                }
-                self.nesting -= 1;
-            }
-            '{' => {
-                self.eat_single_char(Tok::Lbrace);
-                self.nesting += 1;
-            }
-            '}' => {
-                self.eat_single_char(Tok::Rbrace);
-                if self.nesting == 0 {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::NestingError,
-                        location: self.get_pos(),
-                    });
-                }
-                self.nesting -= 1;
-            }
-            ':' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                if let Some('=') = self.window[0] {
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::ColonEqual, tok_end));
-                } else {
-                    let tok_end = self.get_pos();
-                    self.emit((tok_start, Tok::Colon, tok_end));
-                }
-            }
-            ';' => {
-                self.eat_single_char(Tok::Semi);
-            }
-            '<' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                match self.window[0] {
-                    Some('<') => {
-                        self.next_char();
-                        match self.window[0] {
-                            Some('=') => {
-                                self.next_char();
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::LeftShiftEqual, tok_end));
-                            }
-                            _ => {
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::LeftShift, tok_end));
-                            }
-                        }
-                    }
-                    Some('=') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::LessEqual, tok_end));
-                    }
-                    _ => {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Less, tok_end));
-                    }
-                }
-            }
-            '>' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                match self.window[0] {
-                    Some('>') => {
-                        self.next_char();
-                        match self.window[0] {
-                            Some('=') => {
-                                self.next_char();
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::RightShiftEqual, tok_end));
-                            }
-                            _ => {
-                                let tok_end = self.get_pos();
-                                self.emit((tok_start, Tok::RightShift, tok_end));
-                            }
-                        }
-                    }
-                    Some('=') => {
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::GreaterEqual, tok_end));
-                    }
-                    _ => {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Greater, tok_end));
-                    }
-                }
-            }
-            ',' => {
-                self.eat_single_char(Tok::Comma);
-            }
-            '.' => {
-                if let Some('0'..='9') = self.window[1] {
-                    let number = self.lex_number()?;
-                    self.emit(number);
-                } else {
-                    let tok_start = self.get_pos();
-                    self.next_char();
-                    if self.window[..2] == [Some('.'); 2] {
-                        self.next_char();
-                        self.next_char();
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Ellipsis, tok_end));
-                    } else {
-                        let tok_end = self.get_pos();
-                        self.emit((tok_start, Tok::Dot, tok_end));
-                    }
-                }
-            }
-            '\n' | '\r' => {
-                let tok_start = self.get_pos();
-                self.next_char();
-                let tok_end = self.get_pos();
-
-                // Depending on the nesting level, we emit a logical or
-                // non-logical newline:
-                if self.nesting == 0 {
-                    self.at_begin_of_line = true;
-                    self.emit((tok_start, Tok::Newline, tok_end));
-                } else {
-                    self.emit((tok_start, Tok::NonLogicalNewline, tok_end));
-                }
-            }
-            ' ' | '\t' | '\x0C' => {
-                // Skip white-spaces
-                self.next_char();
-                while let Some(' ' | '\t' | '\x0C') = self.window[0] {
-                    self.next_char();
-                }
-            }
-            '\\' => {
-                self.next_char();
-                match self.window[0] {
-                    Some('\n' | '\r') => {
-                        self.next_char();
-                    }
-                    _ => {
-                        return Err(LexicalError {
-                            error: LexicalErrorType::LineContinuationError,
-                            location: self.get_pos(),
-                        })
-                    }
-                }
-
-                if self.window[0].is_none() {
-                    return Err(LexicalError {
-                        error: LexicalErrorType::Eof,
-                        location: self.get_pos(),
-                    });
-                }
-            }
-            _ => {
-                if is_emoji_presentation(c) {
-                    let tok_start = self.get_pos();
-                    self.next_char();
-                    let tok_end = self.get_pos();
-                    self.emit((
-                        tok_start,
-                        Tok::Name {
-                            name: c.to_string(),
-                        },
-                        tok_end,
-                    ));
-                } else {
-                    let c = self.next_char();
-                    return Err(LexicalError {
-                        error: LexicalErrorType::UnrecognizedToken { tok: c.unwrap() },
-                        location: self.get_pos(),
-                    });
-                }
-            }
-        }
-
-        Ok(())
-    }
-
-    // Used by single character tokens to advance the window and emit the correct token.
-    fn eat_single_char(&mut self, ty: Tok) {
-        let tok_start = self.get_pos();
-        self.next_char().unwrap_or_else(|| unsafe {
-            // SAFETY: eat_single_char has been called only after a character has been read
-            // from the window, so the window is guaranteed to be non-empty.
-            std::hint::unreachable_unchecked()
-        });
-        let tok_end = self.get_pos();
-        self.emit((tok_start, ty, tok_end));
-    }
-
-    // Helper function to go to the next character coming up.
-    fn next_char(&mut self) -> Option<char> {
-        let mut c = self.window[0];
-        self.window.slide();
-        match c {
-            Some('\n') => {
-                self.location.newline();
-            }
-            Some('\r') => {
-                if self.window[0] == Some('\n') {
-                    self.window.slide();
-                }
-                self.location.newline();
-                c = Some('\n');
-            }
-            _ => {
-                self.location.go_right();
-            }
-        }
-        c
-    }
-
-    // Helper function to retrieve the current position.
-    fn get_pos(&self) -> Location {
-        self.location
-    }
-
-    // Helper function to emit a lexed token to the queue of tokens.
-    fn emit(&mut self, spanned: Spanned) {
-        self.pending.push(spanned);
-    }
-}
-
-// Implement iterator pattern for Lexer.
-// Calling the next element in the iterator will yield the next lexical
-// token.
-impl<T> Iterator for Lexer<T>
-where
-    T: Iterator<Item = char>,
-{
-    type Item = LexResult;
-
-    fn next(&mut self) -> Option<Self::Item> {
-        let token = self.inner_next();
-        trace!(
-            "Lex token {:?}, nesting={:?}, indent stack: {:?}",
-            token,
-            self.nesting,
-            self.indentations,
-        );
-
-        match token {
-            Ok((_, Tok::EndOfFile, _)) => None,
-            r => Some(r),
-        }
-    }
-}
-
-/// Represents an error that occur during lexing and are
-/// returned by the `parse_*` functions in the iterator in the
-/// [lexer] implementation.
-///
-/// [lexer]: crate::lexer
-#[derive(Debug, PartialEq)]
-pub struct LexicalError {
-    /// The type of error that occurred.
-    pub error: LexicalErrorType,
-    /// The location of the error.
-    pub location: Location,
-}
-
-impl LexicalError {
-    /// Creates a new `LexicalError` with the given error type and location.
-    pub fn new(error: LexicalErrorType, location: Location) -> Self {
-        Self { error, location }
-    }
-}
-
-/// Represents the different types of errors that can occur during lexing.
-#[derive(Debug, PartialEq)]
-pub enum LexicalErrorType {
-    // TODO: Can probably be removed, the places it is used seem to be able
-    // to use the `UnicodeError` variant instead.
-    #[doc(hidden)]
-    StringError,
-    // TODO: Should take a start/end position to report.
-    /// Decoding of a unicode escape sequence in a string literal failed.
-    UnicodeError,
-    /// The nesting of brackets/braces/parentheses is not balanced.
-    NestingError,
-    /// The indentation is not consistent.
-    IndentationError,
-    /// Inconsistent use of tabs and spaces.
-    TabError,
-    /// Encountered a tab after a space.
-    TabsAfterSpaces,
-    /// A non-default argument follows a default argument.
-    DefaultArgumentError,
-    /// A duplicate argument was found in a function definition.
-    DuplicateArgumentError(String),
-    /// A positional argument follows a keyword argument.
-    PositionalArgumentError,
-    /// An iterable argument unpacking `*args` follows keyword argument unpacking `**kwargs`.
-    UnpackedArgumentError,
-    /// A keyword argument was repeated.
-    DuplicateKeywordArgumentError(String),
-    /// An unrecognized token was encountered.
-    UnrecognizedToken { tok: char },
-    /// An f-string error containing the [`FStringErrorType`].
-    FStringError(FStringErrorType),
-    /// An unexpected character was encountered after a line continuation.
-    LineContinuationError,
-    /// An unexpected end of file was encountered.
-    Eof,
-    /// An unexpected error occurred.
-    OtherError(String),
-}
-
-impl std::fmt::Display for LexicalErrorType {
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        match self {
-            LexicalErrorType::StringError => write!(f, "Got unexpected string"),
-            LexicalErrorType::FStringError(error) => write!(f, "f-string: {error}"),
-            LexicalErrorType::UnicodeError => write!(f, "Got unexpected unicode"),
-            LexicalErrorType::NestingError => write!(f, "Got unexpected nesting"),
-            LexicalErrorType::IndentationError => {
-                write!(f, "unindent does not match any outer indentation level")
-            }
-            LexicalErrorType::TabError => {
-                write!(f, "inconsistent use of tabs and spaces in indentation")
-            }
-            LexicalErrorType::TabsAfterSpaces => {
-                write!(f, "Tabs not allowed as part of indentation after spaces")
-            }
-            LexicalErrorType::DefaultArgumentError => {
-                write!(f, "non-default argument follows default argument")
-            }
-            LexicalErrorType::DuplicateArgumentError(arg_name) => {
-                write!(f, "duplicate argument '{arg_name}' in function definition")
-            }
-            LexicalErrorType::DuplicateKeywordArgumentError(arg_name) => {
-                write!(f, "keyword argument repeated: {arg_name}")
-            }
-            LexicalErrorType::PositionalArgumentError => {
-                write!(f, "positional argument follows keyword argument")
-            }
-            LexicalErrorType::UnpackedArgumentError => {
-                write!(
-                    f,
-                    "iterable argument unpacking follows keyword argument unpacking"
-                )
-            }
-            LexicalErrorType::UnrecognizedToken { tok } => {
-                write!(f, "Got unexpected token {tok}")
-            }
-            LexicalErrorType::LineContinuationError => {
-                write!(f, "unexpected character after line continuation character")
-            }
-            LexicalErrorType::Eof => write!(f, "unexpected EOF while parsing"),
-            LexicalErrorType::OtherError(msg) => write!(f, "{msg}"),
-        }
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use num_bigint::BigInt;
-
-    const WINDOWS_EOL: &str = "\r\n";
-    const MAC_EOL: &str = "\r";
-    const UNIX_EOL: &str = "\n";
-
-    pub fn lex_source(source: &str) -> Vec<Tok> {
-        let lexer = lex(source, Mode::Module);
-        lexer.map(|x| x.unwrap().1).collect()
-    }
-
-    fn str_tok(s: &str) -> Tok {
-        Tok::String {
-            value: s.to_owned(),
-            kind: StringKind::String,
-            triple_quoted: false,
-        }
-    }
-
-    fn raw_str_tok(s: &str) -> Tok {
-        Tok::String {
-            value: s.to_owned(),
-            kind: StringKind::RawString,
-            triple_quoted: false,
-        }
-    }
-
-    #[test]
-    fn test_numbers() {
-        let source = "0x2f 0o12 0b1101 0 123 123_45_67_890 0.2 1e+2 2.1e3 2j 2.2j";
-        let tokens = lex_source(source);
-        assert_eq!(
-            tokens,
-            vec![
-                Tok::Int {
-                    value: BigInt::from(47),
-                },
-                Tok::Int {
-                    value: BigInt::from(10)
-                },
-                Tok::Int {
-                    value: BigInt::from(13),
-                },
-                Tok::Int {
-                    value: BigInt::from(0),
-                },
-                Tok::Int {
-                    value: BigInt::from(123),
-                },
-                Tok::Int {
-                    value: BigInt::from(1234567890),
-                },
-                Tok::Float { value: 0.2 },
-                Tok::Float { value: 100.0 },
-                Tok::Float { value: 2100.0 },
-                Tok::Complex {
-                    real: 0.0,
-                    imag: 2.0,
-                },
-                Tok::Complex {
-                    real: 0.0,
-                    imag: 2.2,
-                },
-                Tok::Newline,
-            ]
-        );
-    }
-
-    macro_rules! test_line_comment {
-        ($($name:ident: $eol:expr,)*) => {
-            $(
-            #[test]
-            fn $name() {
-                let source = format!(r"99232  # {}", $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(tokens, vec![Tok::Int { value: BigInt::from(99232) }, Tok::Comment(format!("# {}", $eol)), Tok::Newline]);
-            }
-            )*
-        }
-    }
-
-    test_line_comment! {
-        test_line_comment_long: " foo",
-        test_line_comment_whitespace: "  ",
-        test_line_comment_single_whitespace: " ",
-        test_line_comment_empty: "",
-    }
-
-    macro_rules! test_comment_until_eol {
-        ($($name:ident: $eol:expr,)*) => {
-            $(
-            #[test]
-            fn $name() {
-                let source = format!("123  # Foo{}456", $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        Tok::Int { value: BigInt::from(123) },
-                        Tok::Comment("# Foo".to_string()),
-                        Tok::Newline,
-                        Tok::Int { value: BigInt::from(456) },
-                        Tok::Newline,
-                    ]
-                )
-            }
-            )*
-        }
-    }
-
-    test_comment_until_eol! {
-        test_comment_until_windows_eol: WINDOWS_EOL,
-        test_comment_until_mac_eol: MAC_EOL,
-        test_comment_until_unix_eol: UNIX_EOL,
-    }
-
-    #[test]
-    fn test_assignment() {
-        let source = r"a_variable = 99 + 2-0";
-        let tokens = lex_source(source);
-        assert_eq!(
-            tokens,
-            vec![
-                Tok::Name {
-                    name: String::from("a_variable"),
-                },
-                Tok::Equal,
-                Tok::Int {
-                    value: BigInt::from(99)
-                },
-                Tok::Plus,
-                Tok::Int {
-                    value: BigInt::from(2)
-                },
-                Tok::Minus,
-                Tok::Int {
-                    value: BigInt::from(0)
-                },
-                Tok::Newline,
-            ]
-        );
-    }
-
-    macro_rules! test_indentation_with_eol {
-        ($($name:ident: $eol:expr,)*) => {
-            $(
-            #[test]
-            fn $name() {
-                let source = format!("def foo():{}   return 99{}{}", $eol, $eol, $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        Tok::Def,
-                        Tok::Name {
-                            name: String::from("foo"),
-                        },
-                        Tok::Lpar,
-                        Tok::Rpar,
-                        Tok::Colon,
-                        Tok::Newline,
-                        Tok::Indent,
-                        Tok::Return,
-                        Tok::Int { value: BigInt::from(99) },
-                        Tok::Newline,
-                        Tok::Dedent,
-                    ]
-                );
-            }
-            )*
-        };
-    }
-
-    test_indentation_with_eol! {
-        test_indentation_windows_eol: WINDOWS_EOL,
-        test_indentation_mac_eol: MAC_EOL,
-        test_indentation_unix_eol: UNIX_EOL,
-    }
-
-    macro_rules! test_double_dedent_with_eol {
-        ($($name:ident: $eol:expr,)*) => {
-        $(
-            #[test]
-            fn $name() {
-                let source = format!("def foo():{} if x:{}{}  return 99{}{}", $eol, $eol, $eol, $eol, $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        Tok::Def,
-                        Tok::Name {
-                            name: String::from("foo"),
-                        },
-                        Tok::Lpar,
-                        Tok::Rpar,
-                        Tok::Colon,
-                        Tok::Newline,
-                        Tok::Indent,
-                        Tok::If,
-                        Tok::Name {
-                            name: String::from("x"),
-                        },
-                        Tok::Colon,
-                        Tok::Newline,
-                        Tok::Indent,
-                        Tok::Return,
-                        Tok::Int { value: BigInt::from(99) },
-                        Tok::Newline,
-                        Tok::Dedent,
-                        Tok::Dedent,
-                    ]
-                );
-            }
-        )*
-        }
-    }
-
-    macro_rules! test_double_dedent_with_tabs {
-        ($($name:ident: $eol:expr,)*) => {
-        $(
-            #[test]
-            fn $name() {
-                let source = format!("def foo():{}\tif x:{}{}\t return 99{}{}", $eol, $eol, $eol, $eol, $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        Tok::Def,
-                        Tok::Name {
-                            name: String::from("foo"),
-                        },
-                        Tok::Lpar,
-                        Tok::Rpar,
-                        Tok::Colon,
-                        Tok::Newline,
-                        Tok::Indent,
-                        Tok::If,
-                        Tok::Name {
-                            name: String::from("x"),
-                        },
-                        Tok::Colon,
-                        Tok::Newline,
-                        Tok::Indent,
-                        Tok::Return,
-                        Tok::Int { value: BigInt::from(99) },
-                        Tok::Newline,
-                        Tok::Dedent,
-                        Tok::Dedent,
-                    ]
-                );
-            }
-        )*
-        }
-    }
-
-    test_double_dedent_with_eol! {
-        test_double_dedent_windows_eol: WINDOWS_EOL,
-        test_double_dedent_mac_eol: MAC_EOL,
-        test_double_dedent_unix_eol: UNIX_EOL,
-    }
-
-    test_double_dedent_with_tabs! {
-        test_double_dedent_tabs_windows_eol: WINDOWS_EOL,
-        test_double_dedent_tabs_mac_eol: MAC_EOL,
-        test_double_dedent_tabs_unix_eol: UNIX_EOL,
-    }
-
-    macro_rules! test_newline_in_brackets {
-        ($($name:ident: $eol:expr,)*) => {
-        $(
-            #[test]
-            fn $name() {
-                let source = r"x = [
-
-    1,2
-,(3,
-4,
-), {
-5,
-6,\
-7}]
-".replace("\n", $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        Tok::Name {
-                            name: String::from("x"),
-                        },
-                        Tok::Equal,
-                        Tok::Lsqb,
-                        Tok::NonLogicalNewline,
-                        Tok::NonLogicalNewline,
-                        Tok::Int { value: BigInt::from(1) },
-                        Tok::Comma,
-                        Tok::Int { value: BigInt::from(2) },
-                        Tok::NonLogicalNewline,
-                        Tok::Comma,
-                        Tok::Lpar,
-                        Tok::Int { value: BigInt::from(3) },
-                        Tok::Comma,
-                        Tok::NonLogicalNewline,
-                        Tok::Int { value: BigInt::from(4) },
-                        Tok::Comma,
-                        Tok::NonLogicalNewline,
-                        Tok::Rpar,
-                        Tok::Comma,
-                        Tok::Lbrace,
-                        Tok::NonLogicalNewline,
-                        Tok::Int { value: BigInt::from(5) },
-                        Tok::Comma,
-                        Tok::NonLogicalNewline,
-                        Tok::Int { value: BigInt::from(6) },
-                        Tok::Comma,
-                        // Continuation here - no NonLogicalNewline.
-                        Tok::Int { value: BigInt::from(7) },
-                        Tok::Rbrace,
-                        Tok::Rsqb,
-                        Tok::Newline,
-                    ]
-                );
-            }
-        )*
-        };
-    }
-
-    test_newline_in_brackets! {
-        test_newline_in_brackets_windows_eol: WINDOWS_EOL,
-        test_newline_in_brackets_mac_eol: MAC_EOL,
-        test_newline_in_brackets_unix_eol: UNIX_EOL,
-    }
-
-    #[test]
-    fn test_non_logical_newline_in_string_continuation() {
-        let source = r"(
-    'a'
-    'b'
-
-    'c' \
-    'd'
-)";
-        let tokens = lex_source(source);
-        assert_eq!(
-            tokens,
-            vec![
-                Tok::Lpar,
-                Tok::NonLogicalNewline,
-                str_tok("a"),
-                Tok::NonLogicalNewline,
-                str_tok("b"),
-                Tok::NonLogicalNewline,
-                Tok::NonLogicalNewline,
-                str_tok("c"),
-                str_tok("d"),
-                Tok::NonLogicalNewline,
-                Tok::Rpar,
-                Tok::Newline,
-            ]
-        );
-    }
-
-    #[test]
-    fn test_logical_newline_line_comment() {
-        let source = "#Hello\n#World";
-        let tokens = lex_source(source);
-        assert_eq!(
-            tokens,
-            vec![
-                Tok::Comment("#Hello".to_owned()),
-                // tokenize.py does put an NL here...
-                Tok::Comment("#World".to_owned()),
-                // ... and here, but doesn't seem very useful.
-            ]
-        );
-    }
-
-    #[test]
-    fn test_operators() {
-        let source = "//////=/ /";
-        let tokens = lex_source(source);
-        assert_eq!(
-            tokens,
-            vec![
-                Tok::DoubleSlash,
-                Tok::DoubleSlash,
-                Tok::DoubleSlashEqual,
-                Tok::Slash,
-                Tok::Slash,
-                Tok::Newline,
-            ]
-        );
-    }
-
-    #[test]
-    fn test_string() {
-        let source = r#""double" 'single' 'can\'t' "\\\"" '\t\r\n' '\g' r'raw\'' '\420' '\200\0a'"#;
-        let tokens = lex_source(source);
-        assert_eq!(
-            tokens,
-            vec![
-                str_tok("double"),
-                str_tok("single"),
-                str_tok(r"can\'t"),
-                str_tok(r#"\\\""#),
-                str_tok(r"\t\r\n"),
-                str_tok(r"\g"),
-                raw_str_tok(r"raw\'"),
-                str_tok(r"\420"),
-                str_tok(r"\200\0a"),
-                Tok::Newline,
-            ]
-        );
-    }
-
-    macro_rules! test_string_continuation {
-        ($($name:ident: $eol:expr,)*) => {
-        $(
-            #[test]
-            fn $name() {
-                let source = format!("\"abc\\{}def\"", $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        str_tok("abc\\\ndef"),
-                        Tok::Newline,
-                    ]
-                )
-            }
-        )*
-        }
-    }
-
-    test_string_continuation! {
-        test_string_continuation_windows_eol: WINDOWS_EOL,
-        test_string_continuation_mac_eol: MAC_EOL,
-        test_string_continuation_unix_eol: UNIX_EOL,
-    }
-
-    #[test]
-    fn test_escape_unicode_name() {
-        let source = r#""\N{EN SPACE}""#;
-        let tokens = lex_source(source);
-        assert_eq!(tokens, vec![str_tok(r"\N{EN SPACE}"), Tok::Newline])
-    }
-
-    macro_rules! test_triple_quoted {
-        ($($name:ident: $eol:expr,)*) => {
-        $(
-            #[test]
-            fn $name() {
-                let source = format!("\"\"\"{0} test string{0} \"\"\"", $eol);
-                let tokens = lex_source(&source);
-                assert_eq!(
-                    tokens,
-                    vec![
-                        Tok::String {
-                            value: "\n test string\n ".to_owned(),
-                            kind: StringKind::String,
-                            triple_quoted: true,
-                        },
-                        Tok::Newline,
-                    ]
-                )
-            }
-        )*
-        }
-    }
-
-    test_triple_quoted! {
-        test_triple_quoted_windows_eol: WINDOWS_EOL,
-        test_triple_quoted_mac_eol: MAC_EOL,
-        test_triple_quoted_unix_eol: UNIX_EOL,
-    }
-}
diff --git a/compiler/parser/src/lib.rs b/compiler/parser/src/lib.rs
deleted file mode 100644
index 9516932b49..0000000000
--- a/compiler/parser/src/lib.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-//! This crate can be used to parse Python source code into an Abstract
-//! Syntax Tree.
-//!
-//! ## Overview:
-//!
-//! The process by which source code is parsed into an AST can be broken down
-//! into two general stages: [lexical analysis] and [parsing].
-//!
-//! During lexical analysis, the source code is converted into a stream of lexical
-//! tokens that represent the smallest meaningful units of the language. For example,
-//! the source code `print("Hello world")` would _roughly_ be converted into the following
-//! stream of tokens:
-//!
-//! ```text
-//! Name("print"), LeftParen, String("Hello world"), RightParen
-//! ```
-//!
-//! these tokens are then consumed by the parser, which matches them against a set of
-//! grammar rules to verify that the source code is syntactically valid and to construct
-//! an AST that represents the source code.
-//!  
-//! During parsing, the parser consumes the tokens generated by the lexer and constructs
-//! a tree representation of the source code. The tree is made up of nodes that represent
-//! the different syntactic constructs of the language. If the source code is syntactically
-//! invalid, parsing fails and an error is returned. After a successful parse, the AST can
-//! be used to perform further analysis on the source code. Continuing with the example
-//! above, the AST generated by the parser would _roughly_ look something like this:
-//!
-//! ```text
-//! node: Expr {
-//!     value: {
-//!         node: Call {
-//!             func: {
-//!                 node: Name {
-//!                     id: "print",
-//!                     ctx: Load,
-//!                 },
-//!             },
-//!             args: [
-//!                 node: Constant {
-//!                     value: Str("Hello World"),
-//!                     kind: None,
-//!                 },
-//!             ],
-//!             keywords: [],
-//!         },
-//!     },
-//! },
-//!```
-//!
-//! Note: The Tokens/ASTs shown above are not the exact tokens/ASTs generated by the parser.
-//!
-//! ## Source code layout:
-//!
-//! The functionality of this crate is split into several modules:
-//!
-//! - token: This module contains the definition of the tokens that are generated by the lexer.
-//! - [lexer]: This module contains the lexer and is responsible for generating the tokens.
-//! - parser: This module contains an interface to the parser and is responsible for generating the AST.
-//!     - Functions and strings have special parsing requirements that are handled in additional files.
-//! - mode: This module contains the definition of the different modes that the parser can be in.
-//!
-//! # Examples
-//!
-//! For example, to get a stream of tokens from a given string, one could do this:
-//!
-//! ```
-//! use rustpython_parser::{lexer::lex, Mode};
-//!
-//! let python_source = r#"
-//! def is_odd(i):
-//!     return bool(i & 1)
-//! "#;
-//! let mut tokens = lex(python_source, Mode::Module);
-//! assert!(tokens.all(|t| t.is_ok()));
-//! ```
-//!
-//! These tokens can be directly fed into the parser to generate an AST:
-//!
-//! ```
-//! use rustpython_parser::{lexer::lex, Mode, parse_tokens};
-//!
-//! let python_source = r#"
-//! def is_odd(i):
-//!    return bool(i & 1)
-//! "#;
-//! let tokens = lex(python_source, Mode::Module);
-//! let ast = parse_tokens(tokens, Mode::Module, "<embedded>");
-//!
-//! assert!(ast.is_ok());
-//! ```
-//!
-//! Alternatively, you can use one of the other `parse_*` functions to parse a string directly without using a specific
-//! mode or tokenizing the source beforehand:
-//!
-//! ```
-//! use rustpython_parser::parse_program;
-//!
-//! let python_source = r#"
-//! def is_odd(i):
-//!   return bool(i & 1)
-//! "#;
-//! let ast = parse_program(python_source, "<embedded>");
-//!
-//! assert!(ast.is_ok());
-//! ```
-//!
-//! [lexical analysis]: https://en.wikipedia.org/wiki/Lexical_analysis
-//! [parsing]: https://en.wikipedia.org/wiki/Parsing
-//! [lexer]: crate::lexer
-
-#![doc(html_logo_url = "https://raw.githubusercontent.com/RustPython/RustPython/main/logo.png")]
-#![doc(html_root_url = "https://docs.rs/rustpython-parser/")]
-
-pub use rustpython_ast as ast;
-
-mod function;
-// Skip flattening lexer to distinguish from full parser
-pub mod lexer;
-mod mode;
-mod parser;
-mod string;
-#[rustfmt::skip]
-mod python;
-mod context;
-mod soft_keywords;
-mod token;
-
-pub use mode::Mode;
-pub use parser::{
-    parse, parse_expression, parse_expression_located, parse_located, parse_program, parse_tokens,
-    ParseError, ParseErrorType,
-};
-pub use string::FStringErrorType;
-pub use token::{StringKind, Tok};
diff --git a/compiler/parser/src/mode.rs b/compiler/parser/src/mode.rs
deleted file mode 100644
index 9e9f1e1f6b..0000000000
--- a/compiler/parser/src/mode.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-//! Control in the different modes by which a source file can be parsed.
-use crate::token::Tok;
-
-/// The mode argument specifies in what way code must be parsed.
-#[derive(Clone, Copy)]
-pub enum Mode {
-    /// The code consists of a sequence of statements.
-    Module,
-    /// The code consists of a sequence of interactive statement.
-    Interactive,
-    /// The code consists of a single expression.
-    Expression,
-}
-
-impl Mode {
-    pub(crate) fn to_marker(self) -> Tok {
-        match self {
-            Self::Module => Tok::StartModule,
-            Self::Interactive => Tok::StartInteractive,
-            Self::Expression => Tok::StartExpression,
-        }
-    }
-}
-
-impl From<rustpython_compiler_core::Mode> for Mode {
-    fn from(mode: rustpython_compiler_core::Mode) -> Self {
-        use rustpython_compiler_core::Mode as CompileMode;
-        match mode {
-            CompileMode::Exec => Self::Module,
-            CompileMode::Eval => Self::Expression,
-            CompileMode::Single | CompileMode::BlockExpr => Self::Interactive,
-        }
-    }
-}
-
-impl std::str::FromStr for Mode {
-    type Err = ModeParseError;
-    fn from_str(s: &str) -> Result<Self, ModeParseError> {
-        match s {
-            "exec" | "single" => Ok(Mode::Module),
-            "eval" => Ok(Mode::Expression),
-            _ => Err(ModeParseError(())),
-        }
-    }
-}
-
-/// Returned when a given mode is not valid.
-#[derive(Debug)]
-pub struct ModeParseError(());
-
-impl std::fmt::Display for ModeParseError {
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        write!(f, r#"mode must be "exec", "eval", or "single""#)
-    }
-}
diff --git a/compiler/parser/src/parser.rs b/compiler/parser/src/parser.rs
deleted file mode 100644
index b9c0bc0ade..0000000000
--- a/compiler/parser/src/parser.rs
+++ /dev/null
@@ -1,828 +0,0 @@
-//! Contains the interface to the Python parser.
-//!
-//! Functions in this module can be used to parse Python code into an [Abstract Syntax Tree]
-//! (AST) that is then transformed into bytecode.
-//!
-//! There are three ways to parse Python code corresponding to the different [`Mode`]s
-//! defined in the [`mode`] module.
-//!
-//! All functions return a [`Result`](std::result::Result) containing the parsed AST or
-//! a [`ParseError`] if parsing failed.
-//!
-//! [Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree
-//! [`Mode`]: crate::mode
-
-use crate::{
-    ast::{self, Location},
-    lexer::{self, LexResult, LexicalError, LexicalErrorType},
-    mode::Mode,
-    python,
-    token::Tok,
-};
-use itertools::Itertools;
-use std::iter;
-
-pub(super) use lalrpop_util::ParseError as LalrpopError;
-
-/// Parse a full Python program usually consisting of multiple lines.
-///  
-/// This is a convenience function that can be used to parse a full Python program without having to
-/// specify the [`Mode`] or the location. It is probably what you want to use most of the time.
-///
-/// # Example
-///
-/// For example, parsing a simple function definition and a call to that function:
-///
-/// ```
-/// use rustpython_parser as parser;
-/// let source = r#"
-/// def foo():
-///    return 42
-///
-/// print(foo())
-/// "#;
-/// let program = parser::parse_program(source, "<embedded>");
-/// assert!(program.is_ok());
-/// ```
-pub fn parse_program(source: &str, source_path: &str) -> Result<ast::Suite, ParseError> {
-    parse(source, Mode::Module, source_path).map(|top| match top {
-        ast::Mod::Module { body, .. } => body,
-        _ => unreachable!(),
-    })
-}
-
-/// Parses a single Python expression.
-///
-/// This convenience function can be used to parse a single expression without having to
-/// specify the Mode or the location.
-///
-/// # Example
-///
-/// For example, parsing a single expression denoting the addition of two numbers:
-///
-///  ```
-/// extern crate num_bigint;
-/// use rustpython_parser as parser;
-/// let expr = parser::parse_expression("1 + 2", "<embedded>");
-///
-/// assert!(expr.is_ok());
-///
-/// ```
-pub fn parse_expression(source: &str, path: &str) -> Result<ast::Expr, ParseError> {
-    parse_expression_located(source, path, Location::new(1, 0))
-}
-
-/// Parses a Python expression from a given location.
-///
-/// This function allows to specify the location of the expression in the source code, other than
-/// that, it behaves exactly like [`parse_expression`].
-///
-/// # Example
-///
-/// Parsing a single expression denoting the addition of two numbers, but this time specifying a different,
-/// somewhat silly, location:
-///
-/// ```
-/// use rustpython_parser::{ast::Location, parse_expression_located};
-///
-/// let expr = parse_expression_located("1 + 2", "<embedded>", Location::new(5, 20));
-/// assert!(expr.is_ok());
-/// ```
-pub fn parse_expression_located(
-    source: &str,
-    path: &str,
-    location: Location,
-) -> Result<ast::Expr, ParseError> {
-    parse_located(source, Mode::Expression, path, location).map(|top| match top {
-        ast::Mod::Expression { body } => *body,
-        _ => unreachable!(),
-    })
-}
-
-/// Parse the given Python source code using the specified [`Mode`].
-///
-/// This function is the most general function to parse Python code. Based on the [`Mode`] supplied,
-/// it can be used to parse a single expression, a full Python program or an interactive expression.
-///
-/// # Example
-///
-/// If we want to parse a simple expression, we can use the [`Mode::Expression`] mode during
-/// parsing:
-///
-/// ```
-/// use rustpython_parser::{Mode, parse};
-///
-/// let expr = parse("1 + 2", Mode::Expression, "<embedded>");
-/// assert!(expr.is_ok());
-/// ```
-///
-/// Alternatively, we can parse a full Python program consisting of multiple lines:
-///
-/// ```
-/// use rustpython_parser::{Mode, parse};
-///
-/// let source = r#"
-/// class Greeter:
-///
-///   def greet(self):
-///    print("Hello, world!")
-/// "#;
-/// let program = parse(source, Mode::Module, "<embedded>");
-/// assert!(program.is_ok());
-/// ```
-pub fn parse(source: &str, mode: Mode, source_path: &str) -> Result<ast::Mod, ParseError> {
-    parse_located(source, mode, source_path, Location::new(1, 0))
-}
-
-/// Parse the given Python source code using the specified [`Mode`] and [`Location`].
-///
-/// This function allows to specify the location of the the source code, other than
-/// that, it behaves exactly like [`parse`].
-///
-/// # Example
-///
-/// ```
-/// use rustpython_parser::{ast::Location, Mode, parse_located};
-///
-/// let source = r#"
-/// def fib(i):
-///    a, b = 0, 1
-///    for _ in range(i):
-///       a, b = b, a + b
-///    return a
-///
-/// print(fib(42))
-/// "#;
-/// let program = parse_located(source, Mode::Module, "<embedded>", Location::new(1, 0));
-/// assert!(program.is_ok());
-/// ```
-pub fn parse_located(
-    source: &str,
-    mode: Mode,
-    source_path: &str,
-    location: Location,
-) -> Result<ast::Mod, ParseError> {
-    let lxr = lexer::lex_located(source, mode, location);
-    parse_tokens(lxr, mode, source_path)
-}
-
-/// Parse an iterator of [`LexResult`]s using the specified [`Mode`].
-///
-/// This could allow you to perform some preprocessing on the tokens before parsing them.
-///
-/// # Example
-///
-/// As an example, instead of parsing a string, we can parse a list of tokens after we generate
-/// them using the [`lexer::lex`] function:
-///
-/// ```
-/// use rustpython_parser::{lexer::lex, Mode, parse_tokens};
-///
-/// let expr = parse_tokens(lex("1 + 2", Mode::Expression), Mode::Expression, "<embedded>");
-/// assert!(expr.is_ok());
-/// ```
-pub fn parse_tokens(
-    lxr: impl IntoIterator<Item = LexResult>,
-    mode: Mode,
-    source_path: &str,
-) -> Result<ast::Mod, ParseError> {
-    let marker_token = (Default::default(), mode.to_marker(), Default::default());
-    let lexer = iter::once(Ok(marker_token))
-        .chain(lxr)
-        .filter_ok(|(_, tok, _)| !matches!(tok, Tok::Comment { .. } | Tok::NonLogicalNewline));
-    python::TopParser::new()
-        .parse(lexer.into_iter())
-        .map_err(|e| parse_error_from_lalrpop(e, source_path))
-}
-
-/// Represents represent errors that occur during parsing and are
-/// returned by the `parse_*` functions.
-pub type ParseError = rustpython_compiler_core::BaseError<ParseErrorType>;
-
-/// Represents the different types of errors that can occur during parsing.
-#[derive(Debug, PartialEq)]
-pub enum ParseErrorType {
-    /// Parser encountered an unexpected end of input
-    Eof,
-    /// Parser encountered an extra token
-    ExtraToken(Tok),
-    /// Parser encountered an invalid token
-    InvalidToken,
-    /// Parser encountered an unexpected token
-    UnrecognizedToken(Tok, Option<String>),
-    // Maps to `User` type from `lalrpop-util`
-    /// Parser encountered an error during lexing.
-    Lexical(LexicalErrorType),
-}
-
-impl std::error::Error for ParseErrorType {}
-
-// Convert `lalrpop_util::ParseError` to our internal type
-fn parse_error_from_lalrpop(
-    err: LalrpopError<Location, Tok, LexicalError>,
-    source_path: &str,
-) -> ParseError {
-    let source_path = source_path.to_owned();
-    match err {
-        // TODO: Are there cases where this isn't an EOF?
-        LalrpopError::InvalidToken { location } => ParseError {
-            error: ParseErrorType::Eof,
-            location,
-            source_path,
-        },
-        LalrpopError::ExtraToken { token } => ParseError {
-            error: ParseErrorType::ExtraToken(token.1),
-            location: token.0,
-            source_path,
-        },
-        LalrpopError::User { error } => ParseError {
-            error: ParseErrorType::Lexical(error.error),
-            location: error.location,
-            source_path,
-        },
-        LalrpopError::UnrecognizedToken { token, expected } => {
-            // Hacky, but it's how CPython does it. See PyParser_AddToken,
-            // in particular "Only one possible expected token" comment.
-            let expected = (expected.len() == 1).then(|| expected[0].clone());
-            ParseError {
-                error: ParseErrorType::UnrecognizedToken(token.1, expected),
-                location: token.0.with_col_offset(1),
-                source_path,
-            }
-        }
-        LalrpopError::UnrecognizedEOF { location, expected } => {
-            // This could be an initial indentation error that we should ignore
-            let indent_error = expected == ["Indent"];
-            if indent_error {
-                ParseError {
-                    error: ParseErrorType::Lexical(LexicalErrorType::IndentationError),
-                    location,
-                    source_path,
-                }
-            } else {
-                ParseError {
-                    error: ParseErrorType::Eof,
-                    location,
-                    source_path,
-                }
-            }
-        }
-    }
-}
-
-impl std::fmt::Display for ParseErrorType {
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        match *self {
-            ParseErrorType::Eof => write!(f, "Got unexpected EOF"),
-            ParseErrorType::ExtraToken(ref tok) => write!(f, "Got extraneous token: {tok:?}"),
-            ParseErrorType::InvalidToken => write!(f, "Got invalid token"),
-            ParseErrorType::UnrecognizedToken(ref tok, ref expected) => {
-                if *tok == Tok::Indent {
-                    write!(f, "unexpected indent")
-                } else if expected.as_deref() == Some("Indent") {
-                    write!(f, "expected an indented block")
-                } else {
-                    write!(f, "invalid syntax. Got unexpected token {tok}")
-                }
-            }
-            ParseErrorType::Lexical(ref error) => write!(f, "{error}"),
-        }
-    }
-}
-
-impl ParseErrorType {
-    /// Returns true if the error is an indentation error.
-    pub fn is_indentation_error(&self) -> bool {
-        match self {
-            ParseErrorType::Lexical(LexicalErrorType::IndentationError) => true,
-            ParseErrorType::UnrecognizedToken(token, expected) => {
-                *token == Tok::Indent || expected.clone() == Some("Indent".to_owned())
-            }
-            _ => false,
-        }
-    }
-
-    /// Returns true if the error is a tab error.
-    pub fn is_tab_error(&self) -> bool {
-        matches!(
-            self,
-            ParseErrorType::Lexical(LexicalErrorType::TabError)
-                | ParseErrorType::Lexical(LexicalErrorType::TabsAfterSpaces)
-        )
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_parse_empty() {
-        let parse_ast = parse_program("", "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_string() {
-        let source = "'Hello world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_f_string() {
-        let source = "f'Hello world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_print_hello() {
-        let source = "print('Hello world')";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_print_2() {
-        let source = "print('Hello world', 2)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_kwargs() {
-        let source = "my_func('positional', keyword=2)";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_if_elif_else() {
-        let source = "if 1: 10\nelif 2: 20\nelse: 30";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_lambda() {
-        let source = "lambda x, y: x * y"; // lambda(x, y): x * y";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_tuples() {
-        let source = "a, b = 4, 5";
-
-        insta::assert_debug_snapshot!(parse_program(source, "<test>").unwrap());
-    }
-
-    #[test]
-    fn test_parse_class() {
-        let source = "\
-class Foo(A, B):
- def __init__(self):
-  pass
- def method_with_default(self, arg='default'):
-  pass
-";
-        insta::assert_debug_snapshot!(parse_program(source, "<test>").unwrap());
-    }
-
-    #[test]
-    fn test_parse_dict_comprehension() {
-        let source = "{x1: x2 for y in z}";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_list_comprehension() {
-        let source = "[x for y in z]";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_double_list_comprehension() {
-        let source = "[x for y, y2 in z for a in b if a < 5 if a > 10]";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_generator_comprehension() {
-        let source = "(x for y in z)";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_named_expression_generator_comprehension() {
-        let source = "(x := y + 1 for y in z)";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_if_else_generator_comprehension() {
-        let source = "(x if y else y for y in z)";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_bool_op_or() {
-        let source = "x or y";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_bool_op_and() {
-        let source = "x and y";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_slice() {
-        let source = "x[1:2:3]";
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_with_statement() {
-        let source = "\
-with 0: pass
-with 0 as x: pass
-with 0, 1: pass
-with 0 as x, 1 as y: pass
-with 0 if 1 else 2: pass
-with 0 if 1 else 2 as x: pass
-with (): pass
-with () as x: pass
-with (0): pass
-with (0) as x: pass
-with (0,): pass
-with (0,) as x: pass
-with (0, 1): pass
-with (0, 1) as x: pass
-with (*a,): pass
-with (*a,) as x: pass
-with (0, *a): pass
-with (0, *a) as x: pass
-with (a := 0): pass
-with (a := 0) as x: pass
-with (a := 0, b := 1): pass
-with (a := 0, b := 1) as x: pass
-with (0 as a): pass
-with (0 as a,): pass
-with (0 as a, 1 as b): pass
-with (0 as a, 1 as b,): pass
-";
-        insta::assert_debug_snapshot!(parse_program(source, "<test>").unwrap());
-    }
-
-    #[test]
-    fn test_with_statement_invalid() {
-        for source in [
-            "with 0,: pass",
-            "with 0 as x,: pass",
-            "with 0 as *x: pass",
-            "with *a: pass",
-            "with *a as x: pass",
-            "with (*a): pass",
-            "with (*a) as x: pass",
-            "with *a, 0 as x: pass",
-            "with (*a, 0 as x): pass",
-            "with 0 as x, *a: pass",
-            "with (0 as x, *a): pass",
-            "with (0 as x) as y: pass",
-            "with (0 as x), 1: pass",
-            "with ((0 as x)): pass",
-            "with a := 0 as x: pass",
-            "with (a := 0 as x): pass",
-        ] {
-            assert!(parse_program(source, "<test>").is_err());
-        }
-    }
-
-    #[test]
-    fn test_star_index() {
-        let source = "\
-array_slice = array[0, *indexes, -1]
-array[0, *indexes, -1] = array_slice
-array[*indexes_to_select, *indexes_to_select]
-array[3:5, *indexes_to_select]
-";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_generator_expression_argument() {
-        let source = r#"' '.join(
-    sql
-    for sql in (
-        "LIMIT %d" % limit if limit else None,
-        ("OFFSET %d" % offset) if offset else None,
-    )
-)"#;
-        let parse_ast = parse_expression(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_try() {
-        let parse_ast = parse_program(
-            r#"try:
-    raise ValueError(1)
-except TypeError as e:
-    print(f'caught {type(e)}')
-except OSError as e:
-    print(f'caught {type(e)}')"#,
-            "<test>",
-        )
-        .unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_try_star() {
-        let parse_ast = parse_program(
-            r#"try:
-    raise ExceptionGroup("eg",
-        [ValueError(1), TypeError(2), OSError(3), OSError(4)])
-except* TypeError as e:
-    print(f'caught {type(e)} with nested {e.exceptions}')
-except* OSError as e:
-    print(f'caught {type(e)} with nested {e.exceptions}')"#,
-            "<test>",
-        )
-        .unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_dict_unpacking() {
-        let parse_ast = parse_expression(r#"{"a": "b", **c, "d": "e"}"#, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_modes() {
-        let source = "a[0][1][2][3][4]";
-
-        assert!(parse(&source, Mode::Expression, "<embedded>").is_ok());
-        assert!(parse(&source, Mode::Module, "<embedded>").is_ok());
-        assert!(parse(&source, Mode::Interactive, "<embedded>").is_ok());
-    }
-
-    #[test]
-    fn test_match_as_identifier() {
-        let parse_ast = parse_program(
-            r#"
-match *a + b, c   # ((match * a) + b), c
-match *(a + b), c   # (match * (a + b)), c
-match (*a + b, c)   # match ((*(a + b)), c)
-match -a * b + c   # (match - (a * b)) + c
-match -(a * b) + c   # (match - (a * b)) + c
-match (-a) * b + c   # (match (-(a * b))) + c
-match ().a   # (match()).a
-match (()).a   # (match(())).a
-match ((),).a   # (match(())).a
-match [a].b   # (match[a]).b
-match [a,].b   # (match[(a,)]).b  (not (match[a]).b)
-match [(a,)].b   # (match[(a,)]).b
-match()[a:
-    b]  # (match())[a: b]
-if match := 1: pass
-match match:
-    case 1: pass
-    case 2:
-        pass
-match = lambda query: query == event
-print(match(12))
-"#,
-            "<test>",
-        )
-        .unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_patma() {
-        let source = r#"# Cases sampled from Lib/test/test_patma.py
-
-# case test_patma_098
-match x:
-    case -0j:
-        y = 0
-# case test_patma_142
-match x:
-    case bytes(z):
-        y = 0
-# case test_patma_073
-match x:
-    case 0 if 0:
-        y = 0
-    case 0 if 1:
-        y = 1
-# case test_patma_006
-match 3:
-    case 0 | 1 | 2 | 3:
-        x = True
-# case test_patma_049
-match x:
-    case [0, 1] | [1, 0]:
-        y = 0
-# case black_check_sequence_then_mapping
-match x:
-    case [*_]:
-        return "seq"
-    case {}:
-        return "map"
-# case test_patma_035
-match x:
-    case {0: [1, 2, {}]}:
-        y = 0
-    case {0: [1, 2, {}] | True} | {1: [[]]} | {0: [1, 2, {}]} | [] | "X" | {}:
-        y = 1
-    case []:
-        y = 2
-# case test_patma_107
-match x:
-    case 0.25 + 1.75j:
-        y = 0
-# case test_patma_097
-match x:
-    case -0j:
-        y = 0
-# case test_patma_007
-match 4:
-    case 0 | 1 | 2 | 3:
-        x = True
-# case test_patma_154
-match x:
-    case 0 if x:
-        y = 0
-# case test_patma_134
-match x:
-    case {1: 0}:
-        y = 0
-    case {0: 0}:
-        y = 1
-    case {**z}:
-        y = 2
-# case test_patma_185
-match Seq():
-    case [*_]:
-        y = 0
-# case test_patma_063
-match x:
-    case 1:
-        y = 0
-    case 1:
-        y = 1
-# case test_patma_248
-match x:
-    case {"foo": bar}:
-        y = bar
-# case test_patma_019
-match (0, 1, 2):
-    case [0, 1, *x, 2]:
-        y = 0
-# case test_patma_052
-match x:
-    case [0]:
-        y = 0
-    case [1, 0] if (x := x[:0]):
-        y = 1
-    case [1, 0]:
-        y = 2
-# case test_patma_191
-match w:
-    case [x, y, *_]:
-        z = 0
-# case test_patma_110
-match x:
-    case -0.25 - 1.75j:
-        y = 0
-# case test_patma_151
-match (x,):
-    case [y]:
-        z = 0
-# case test_patma_114
-match x:
-    case A.B.C.D:
-        y = 0
-# case test_patma_232
-match x:
-    case None:
-        y = 0
-# case test_patma_058
-match x:
-    case 0:
-        y = 0
-# case test_patma_233
-match x:
-    case False:
-        y = 0
-# case test_patma_078
-match x:
-    case []:
-        y = 0
-    case [""]:
-        y = 1
-    case "":
-        y = 2
-# case test_patma_156
-match x:
-    case z:
-        y = 0
-# case test_patma_189
-match w:
-    case [x, y, *rest]:
-        z = 0
-# case test_patma_042
-match x:
-    case (0 as z) | (1 as z) | (2 as z) if z == x % 2:
-        y = 0
-# case test_patma_034
-match x:
-    case {0: [1, 2, {}]}:
-        y = 0
-    case {0: [1, 2, {}] | False} | {1: [[]]} | {0: [1, 2, {}]} | [] | "X" | {}:
-        y = 1
-    case []:
-        y = 2
-# case test_patma_123
-match (0, 1, 2):
-    case 0, *x:
-        y = 0
-# case test_patma_126
-match (0, 1, 2):
-    case *x, 2,:
-        y = 0
-# case test_patma_151
-match x,:
-    case y,:
-        z = 0
-# case test_patma_152
-match w, x:
-    case y, z:
-        v = 0
-# case test_patma_153
-match w := x,:
-    case y as v,:
-        z = 0
-"#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_match() {
-        let parse_ast = parse_program(
-            r#"
-match {"test": 1}:
-    case {
-        **rest,
-    }:
-        print(rest)
-match {"label": "test"}:
-    case {
-        "label": str() | None as label,
-    }:
-        print(label)
-match x:
-    case [0, 1,]:
-        y = 0
-match x:
-    case (0, 1,):
-        y = 0
-match x:
-    case (0,):
-        y = 0
-"#,
-            "<test>",
-        )
-        .unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_variadic_generics() {
-        let parse_ast = parse_program(
-            r#"
-def args_to_tuple(*args: *Ts) -> Tuple[*Ts]: ...
-"#,
-            "<test>",
-        )
-        .unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-}
diff --git a/compiler/parser/src/python.rs b/compiler/parser/src/python.rs
deleted file mode 100644
index a00274d6c4..0000000000
--- a/compiler/parser/src/python.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-#![allow(clippy::all)]
-#![allow(unused)]
-include!(concat!(env!("OUT_DIR"), "/python.rs"));
diff --git a/compiler/parser/src/soft_keywords.rs b/compiler/parser/src/soft_keywords.rs
deleted file mode 100644
index c670fd1742..0000000000
--- a/compiler/parser/src/soft_keywords.rs
+++ /dev/null
@@ -1,118 +0,0 @@
-use crate::{lexer::LexResult, mode::Mode, token::Tok};
-use itertools::{Itertools, MultiPeek};
-
-/// An [`Iterator`] that transforms a token stream to accommodate soft keywords (namely, `match`
-/// and `case`).
-///
-/// [PEP 634](https://www.python.org/dev/peps/pep-0634/) introduced the `match` and `case` keywords
-/// as soft keywords, meaning that they can be used as identifiers (e.g., variable names) in certain
-/// contexts.
-///
-/// This function modifies a token stream to accommodate this change. In particular, it replaces
-/// `match` and `case` tokens with `identifier` tokens if they are used as identifiers.
-///
-/// Handling soft keywords in this intermediary pass allows us to simplify both the lexer and
-/// parser, as neither of them need to be aware of soft keywords.
-pub struct SoftKeywordTransformer<I>
-where
-    I: Iterator<Item = LexResult>,
-{
-    underlying: MultiPeek<I>,
-    start_of_line: bool,
-}
-
-impl<I> SoftKeywordTransformer<I>
-where
-    I: Iterator<Item = LexResult>,
-{
-    pub fn new(lexer: I, mode: Mode) -> Self {
-        Self {
-            underlying: lexer.multipeek(), // spell-checker:ignore multipeek
-            start_of_line: matches!(mode, Mode::Interactive | Mode::Module),
-        }
-    }
-}
-
-impl<I> Iterator for SoftKeywordTransformer<I>
-where
-    I: Iterator<Item = LexResult>,
-{
-    type Item = LexResult;
-
-    #[inline]
-    fn next(&mut self) -> Option<LexResult> {
-        let mut next = self.underlying.next();
-        if let Some(Ok((start, tok, end))) = next.as_ref() {
-            // If the token is a `match` or `case` token, check if it's used as an identifier.
-            // We assume every `match` or `case` is an identifier unless both of the following
-            // conditions are met:
-            // 1. The token is at the start of a logical line.
-            // 2. The logical line contains a top-level colon (that is, a colon that is not nested
-            //    inside a parenthesized expression, list, or dictionary).
-            // 3. The top-level colon is not the immediate sibling of a `match` or `case` token.
-            //    (This is to avoid treating `match` and `case` as identifiers when annotated with
-            //    type hints.)
-            if matches!(tok, Tok::Match | Tok::Case) {
-                if !self.start_of_line {
-                    next = Some(Ok((*start, soft_to_name(tok), *end)));
-                } else {
-                    let mut nesting = 0;
-                    let mut first = true;
-                    let mut seen_colon = false;
-                    let mut seen_lambda = false;
-                    while let Some(Ok((_, tok, _))) = self.underlying.peek() {
-                        match tok {
-                            Tok::Newline => break,
-                            Tok::Lambda if nesting == 0 => seen_lambda = true,
-                            Tok::Colon if nesting == 0 => {
-                                if seen_lambda {
-                                    seen_lambda = false;
-                                } else if !first {
-                                    seen_colon = true;
-                                }
-                            }
-                            Tok::Lpar | Tok::Lsqb | Tok::Lbrace => nesting += 1,
-                            Tok::Rpar | Tok::Rsqb | Tok::Rbrace => nesting -= 1,
-                            _ => {}
-                        }
-                        first = false;
-                    }
-                    if !seen_colon {
-                        next = Some(Ok((*start, soft_to_name(tok), *end)));
-                    }
-                }
-            }
-        }
-
-        self.start_of_line = next.as_ref().map_or(false, |lex_result| {
-            lex_result.as_ref().map_or(false, |(_, tok, _)| {
-                if matches!(tok, Tok::NonLogicalNewline | Tok::Comment { .. }) {
-                    self.start_of_line
-                } else {
-                    matches!(
-                        tok,
-                        Tok::StartModule
-                            | Tok::StartInteractive
-                            | Tok::Newline
-                            | Tok::Indent
-                            | Tok::Dedent
-                    )
-                }
-            })
-        });
-
-        next
-    }
-}
-
-#[inline]
-fn soft_to_name(tok: &Tok) -> Tok {
-    let name = match tok {
-        Tok::Match => "match",
-        Tok::Case => "case",
-        _ => unreachable!("other tokens never reach here"),
-    };
-    Tok::Name {
-        name: name.to_owned(),
-    }
-}
diff --git a/compiler/parser/src/string.rs b/compiler/parser/src/string.rs
deleted file mode 100644
index 14f5ce1caa..0000000000
--- a/compiler/parser/src/string.rs
+++ /dev/null
@@ -1,1075 +0,0 @@
-// Contains the logic for parsing string literals (mostly concerned with f-strings.)
-//
-// The lexer doesn't do any special handling of f-strings, it just treats them as
-// regular strings. Since the parser has no definition of f-string formats (Pending PEP 701)
-// we have to do the parsing here, manually.
-use crate::{
-    ast::{Constant, ConversionFlag, Expr, ExprKind, Location},
-    lexer::{LexicalError, LexicalErrorType},
-    parser::{parse_expression_located, LalrpopError, ParseError, ParseErrorType},
-    token::{StringKind, Tok},
-};
-use itertools::Itertools;
-
-// unicode_name2 does not expose `MAX_NAME_LENGTH`, so we replicate that constant here, fix #3798
-const MAX_UNICODE_NAME: usize = 88;
-
-struct StringParser<'a> {
-    chars: std::iter::Peekable<std::str::Chars<'a>>,
-    kind: StringKind,
-    start: Location,
-    end: Location,
-    location: Location,
-}
-
-impl<'a> StringParser<'a> {
-    fn new(
-        source: &'a str,
-        kind: StringKind,
-        triple_quoted: bool,
-        start: Location,
-        end: Location,
-    ) -> Self {
-        let offset = kind.prefix_len() + if triple_quoted { 3 } else { 1 };
-        Self {
-            chars: source.chars().peekable(),
-            kind,
-            start,
-            end,
-            location: start.with_col_offset(offset),
-        }
-    }
-
-    #[inline]
-    fn next_char(&mut self) -> Option<char> {
-        let Some(c) = self.chars.next() else {
-            return None
-        };
-        if c == '\n' {
-            self.location.newline();
-        } else {
-            self.location.go_right();
-        }
-        Some(c)
-    }
-
-    #[inline]
-    fn peek(&mut self) -> Option<&char> {
-        self.chars.peek()
-    }
-
-    #[inline]
-    fn get_pos(&self) -> Location {
-        self.location
-    }
-
-    #[inline]
-    fn expr(&self, node: ExprKind) -> Expr {
-        Expr::new(self.start, self.end, node)
-    }
-
-    fn parse_unicode_literal(&mut self, literal_number: usize) -> Result<char, LexicalError> {
-        let mut p: u32 = 0u32;
-        let unicode_error = LexicalError::new(LexicalErrorType::UnicodeError, self.get_pos());
-        for i in 1..=literal_number {
-            match self.next_char() {
-                Some(c) => match c.to_digit(16) {
-                    Some(d) => p += d << ((literal_number - i) * 4),
-                    None => return Err(unicode_error),
-                },
-                None => return Err(unicode_error),
-            }
-        }
-        match p {
-            0xD800..=0xDFFF => Ok(std::char::REPLACEMENT_CHARACTER),
-            _ => std::char::from_u32(p).ok_or(unicode_error),
-        }
-    }
-
-    fn parse_octet(&mut self, first: char) -> char {
-        let mut octet_content = String::new();
-        octet_content.push(first);
-        while octet_content.len() < 3 {
-            if let Some('0'..='7') = self.peek() {
-                octet_content.push(self.next_char().unwrap())
-            } else {
-                break;
-            }
-        }
-        let value = u32::from_str_radix(&octet_content, 8).unwrap();
-        char::from_u32(value).unwrap()
-    }
-
-    fn parse_unicode_name(&mut self) -> Result<char, LexicalError> {
-        let start_pos = self.get_pos();
-        match self.next_char() {
-            Some('{') => {}
-            _ => return Err(LexicalError::new(LexicalErrorType::StringError, start_pos)),
-        }
-        let start_pos = self.get_pos();
-        let mut name = String::new();
-        loop {
-            match self.next_char() {
-                Some('}') => break,
-                Some(c) => name.push(c),
-                None => {
-                    return Err(LexicalError::new(
-                        LexicalErrorType::StringError,
-                        self.get_pos(),
-                    ))
-                }
-            }
-        }
-
-        if name.len() > MAX_UNICODE_NAME {
-            return Err(LexicalError::new(
-                LexicalErrorType::UnicodeError,
-                self.get_pos(),
-            ));
-        }
-
-        unicode_names2::character(&name)
-            .ok_or_else(|| LexicalError::new(LexicalErrorType::UnicodeError, start_pos))
-    }
-
-    fn parse_escaped_char(&mut self) -> Result<String, LexicalError> {
-        match self.next_char() {
-            Some(c) => {
-                let char = match c {
-                    '\\' => '\\',
-                    '\'' => '\'',
-                    '\"' => '"',
-                    'a' => '\x07',
-                    'b' => '\x08',
-                    'f' => '\x0c',
-                    'n' => '\n',
-                    'r' => '\r',
-                    't' => '\t',
-                    'v' => '\x0b',
-                    o @ '0'..='7' => self.parse_octet(o),
-                    'x' => self.parse_unicode_literal(2)?,
-                    'u' if !self.kind.is_bytes() => self.parse_unicode_literal(4)?,
-                    'U' if !self.kind.is_bytes() => self.parse_unicode_literal(8)?,
-                    'N' if !self.kind.is_bytes() => self.parse_unicode_name()?,
-                    // Special cases where the escape sequence is not a single character
-                    '\n' => return Ok("".to_string()),
-                    c => {
-                        if self.kind.is_bytes() && !c.is_ascii() {
-                            return Err(LexicalError {
-                                error: LexicalErrorType::OtherError(
-                                    "bytes can only contain ASCII literal characters".to_owned(),
-                                ),
-                                location: self.get_pos(),
-                            });
-                        }
-                        return Ok(format!("\\{c}"));
-                    }
-                };
-                Ok(char.to_string())
-            }
-            None => Err(LexicalError {
-                error: LexicalErrorType::StringError,
-                location: self.get_pos(),
-            }),
-        }
-    }
-
-    fn parse_formatted_value(&mut self, nested: u8) -> Result<Vec<Expr>, LexicalError> {
-        use FStringErrorType::*;
-
-        let mut expression = String::new();
-        let mut spec = None;
-        let mut delimiters = Vec::new();
-        let mut conversion = ConversionFlag::None;
-        let mut self_documenting = false;
-        let mut trailing_seq = String::new();
-        let location = self.get_pos();
-
-        while let Some(ch) = self.next_char() {
-            match ch {
-                // can be integrated better with the remaining code, but as a starting point ok
-                // in general I would do here a tokenizing of the fstrings to omit this peeking.
-                '!' | '=' | '>' | '<' if self.peek() == Some(&'=') => {
-                    expression.push(ch);
-                    expression.push('=');
-                    self.next_char();
-                }
-                '!' if delimiters.is_empty() && self.peek() != Some(&'=') => {
-                    if expression.trim().is_empty() {
-                        return Err(FStringError::new(EmptyExpression, self.get_pos()).into());
-                    }
-
-                    conversion = match self.next_char() {
-                        Some('s') => ConversionFlag::Str,
-                        Some('a') => ConversionFlag::Ascii,
-                        Some('r') => ConversionFlag::Repr,
-                        Some(_) => {
-                            return Err(
-                                FStringError::new(InvalidConversionFlag, self.get_pos()).into()
-                            );
-                        }
-                        None => {
-                            return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into());
-                        }
-                    };
-
-                    match self.peek() {
-                        Some('}' | ':') => {}
-                        Some(_) | None => {
-                            return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into());
-                        }
-                    }
-                }
-
-                // match a python 3.8 self documenting expression
-                // format '{' PYTHON_EXPRESSION '=' FORMAT_SPECIFIER? '}'
-                '=' if self.peek() != Some(&'=') && delimiters.is_empty() => {
-                    self_documenting = true;
-                }
-
-                ':' if delimiters.is_empty() => {
-                    let parsed_spec = self.parse_spec(nested)?;
-
-                    spec = Some(Box::new(self.expr(ExprKind::JoinedStr {
-                        values: parsed_spec,
-                    })));
-                }
-                '(' | '{' | '[' => {
-                    expression.push(ch);
-                    delimiters.push(ch);
-                }
-                ')' => {
-                    let last_delim = delimiters.pop();
-                    match last_delim {
-                        Some('(') => {
-                            expression.push(ch);
-                        }
-                        Some(c) => {
-                            return Err(FStringError::new(
-                                MismatchedDelimiter(c, ')'),
-                                self.get_pos(),
-                            )
-                            .into());
-                        }
-                        None => {
-                            return Err(FStringError::new(Unmatched(')'), self.get_pos()).into());
-                        }
-                    }
-                }
-                ']' => {
-                    let last_delim = delimiters.pop();
-                    match last_delim {
-                        Some('[') => {
-                            expression.push(ch);
-                        }
-                        Some(c) => {
-                            return Err(FStringError::new(
-                                MismatchedDelimiter(c, ']'),
-                                self.get_pos(),
-                            )
-                            .into());
-                        }
-                        None => {
-                            return Err(FStringError::new(Unmatched(']'), self.get_pos()).into());
-                        }
-                    }
-                }
-                '}' if !delimiters.is_empty() => {
-                    let last_delim = delimiters.pop();
-                    match last_delim {
-                        Some('{') => {
-                            expression.push(ch);
-                        }
-                        Some(c) => {
-                            return Err(FStringError::new(
-                                MismatchedDelimiter(c, '}'),
-                                self.get_pos(),
-                            )
-                            .into());
-                        }
-                        None => {}
-                    }
-                }
-                '}' => {
-                    if expression.trim().is_empty() {
-                        return Err(FStringError::new(EmptyExpression, self.get_pos()).into());
-                    }
-
-                    let ret = if !self_documenting {
-                        vec![self.expr(ExprKind::FormattedValue {
-                            value: Box::new(parse_fstring_expr(&expression, location).map_err(
-                                |e| {
-                                    FStringError::new(
-                                        InvalidExpression(Box::new(e.error)),
-                                        location,
-                                    )
-                                },
-                            )?),
-                            conversion: conversion as _,
-                            format_spec: spec,
-                        })]
-                    } else {
-                        vec![
-                            self.expr(ExprKind::Constant {
-                                value: Constant::Str(expression.to_owned() + "="),
-                                kind: None,
-                            }),
-                            self.expr(ExprKind::Constant {
-                                value: trailing_seq.into(),
-                                kind: None,
-                            }),
-                            self.expr(ExprKind::FormattedValue {
-                                value: Box::new(
-                                    parse_fstring_expr(&expression, location).map_err(|e| {
-                                        FStringError::new(
-                                            InvalidExpression(Box::new(e.error)),
-                                            location,
-                                        )
-                                    })?,
-                                ),
-                                conversion: (if conversion == ConversionFlag::None && spec.is_none()
-                                {
-                                    ConversionFlag::Repr
-                                } else {
-                                    conversion
-                                }) as _,
-                                format_spec: spec,
-                            }),
-                        ]
-                    };
-                    return Ok(ret);
-                }
-                '"' | '\'' => {
-                    expression.push(ch);
-                    loop {
-                        let Some(c) = self.next_char() else {
-                            return Err(FStringError::new(UnterminatedString, self.get_pos()).into());
-                        };
-                        expression.push(c);
-                        if c == ch {
-                            break;
-                        }
-                    }
-                }
-                ' ' if self_documenting => {
-                    trailing_seq.push(ch);
-                }
-                '\\' => return Err(FStringError::new(UnterminatedString, self.get_pos()).into()),
-                _ => {
-                    if self_documenting {
-                        return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into());
-                    }
-
-                    expression.push(ch);
-                }
-            }
-        }
-        Err(FStringError::new(UnclosedLbrace, self.get_pos()).into())
-    }
-
-    fn parse_spec(&mut self, nested: u8) -> Result<Vec<Expr>, LexicalError> {
-        let mut spec_constructor = Vec::new();
-        let mut constant_piece = String::new();
-        while let Some(&next) = self.peek() {
-            match next {
-                '{' => {
-                    if !constant_piece.is_empty() {
-                        spec_constructor.push(self.expr(ExprKind::Constant {
-                            value: constant_piece.drain(..).collect::<String>().into(),
-                            kind: None,
-                        }));
-                    }
-                    let parsed_expr = self.parse_fstring(nested + 1)?;
-                    spec_constructor.extend(parsed_expr);
-                    continue;
-                }
-                '}' => {
-                    break;
-                }
-                _ => {
-                    constant_piece.push(next);
-                }
-            }
-            self.next_char();
-        }
-        if !constant_piece.is_empty() {
-            spec_constructor.push(self.expr(ExprKind::Constant {
-                value: constant_piece.drain(..).collect::<String>().into(),
-                kind: None,
-            }));
-        }
-        Ok(spec_constructor)
-    }
-
-    fn parse_fstring(&mut self, nested: u8) -> Result<Vec<Expr>, LexicalError> {
-        use FStringErrorType::*;
-
-        if nested >= 2 {
-            return Err(FStringError::new(ExpressionNestedTooDeeply, self.get_pos()).into());
-        }
-
-        let mut content = String::new();
-        let mut values = vec![];
-
-        while let Some(&ch) = self.peek() {
-            match ch {
-                '{' => {
-                    self.next_char();
-                    if nested == 0 {
-                        match self.peek() {
-                            Some('{') => {
-                                self.next_char();
-                                content.push('{');
-                                continue;
-                            }
-                            None => {
-                                return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into())
-                            }
-                            _ => {}
-                        }
-                    }
-                    if !content.is_empty() {
-                        values.push(self.expr(ExprKind::Constant {
-                            value: content.drain(..).collect::<String>().into(),
-                            kind: None,
-                        }));
-                    }
-
-                    let parsed_values = self.parse_formatted_value(nested)?;
-                    values.extend(parsed_values);
-                }
-                '}' => {
-                    if nested > 0 {
-                        break;
-                    }
-                    self.next_char();
-                    if let Some('}') = self.peek() {
-                        self.next_char();
-                        content.push('}');
-                    } else {
-                        return Err(FStringError::new(SingleRbrace, self.get_pos()).into());
-                    }
-                }
-                '\\' if !self.kind.is_raw() => {
-                    self.next_char();
-                    content.push_str(&self.parse_escaped_char()?);
-                }
-                _ => {
-                    content.push(ch);
-                    self.next_char();
-                }
-            }
-        }
-
-        if !content.is_empty() {
-            values.push(self.expr(ExprKind::Constant {
-                value: content.into(),
-                kind: None,
-            }))
-        }
-
-        Ok(values)
-    }
-
-    fn parse_bytes(&mut self) -> Result<Expr, LexicalError> {
-        let mut content = String::new();
-        while let Some(ch) = self.next_char() {
-            match ch {
-                '\\' if !self.kind.is_raw() => {
-                    content.push_str(&self.parse_escaped_char()?);
-                }
-                ch => {
-                    if !ch.is_ascii() {
-                        return Err(LexicalError::new(
-                            LexicalErrorType::OtherError(
-                                "bytes can only contain ASCII literal characters".to_string(),
-                            ),
-                            self.get_pos(),
-                        ));
-                    }
-                    content.push(ch);
-                }
-            }
-        }
-
-        Ok(self.expr(ExprKind::Constant {
-            value: Constant::Bytes(content.chars().map(|c| c as u8).collect()),
-            kind: None,
-        }))
-    }
-
-    fn parse_string(&mut self) -> Result<Expr, LexicalError> {
-        let mut content = String::new();
-        while let Some(ch) = self.next_char() {
-            match ch {
-                '\\' if !self.kind.is_raw() => {
-                    content.push_str(&self.parse_escaped_char()?);
-                }
-                ch => content.push(ch),
-            }
-        }
-        Ok(self.expr(ExprKind::Constant {
-            value: Constant::Str(content),
-            kind: self.kind.is_unicode().then(|| "u".to_string()),
-        }))
-    }
-
-    fn parse(&mut self) -> Result<Vec<Expr>, LexicalError> {
-        if self.kind.is_fstring() {
-            self.parse_fstring(0)
-        } else if self.kind.is_bytes() {
-            self.parse_bytes().map(|expr| vec![expr])
-        } else {
-            self.parse_string().map(|expr| vec![expr])
-        }
-    }
-}
-
-fn parse_fstring_expr(source: &str, location: Location) -> Result<Expr, ParseError> {
-    let fstring_body = format!("({source})");
-    parse_expression_located(&fstring_body, "<fstring>", location.with_col_offset(-1))
-}
-
-fn parse_string(
-    source: &str,
-    kind: StringKind,
-    triple_quoted: bool,
-    start: Location,
-    end: Location,
-) -> Result<Vec<Expr>, LexicalError> {
-    StringParser::new(source, kind, triple_quoted, start, end).parse()
-}
-
-pub(crate) fn parse_strings(
-    values: Vec<(Location, (String, StringKind, bool), Location)>,
-) -> Result<Expr, LexicalError> {
-    // Preserve the initial location and kind.
-    let initial_start = values[0].0;
-    let last_end = values.last().unwrap().2;
-    let initial_kind = (values[0].1 .1 == StringKind::Unicode).then(|| "u".to_owned());
-    let has_fstring = values.iter().any(|(_, (_, kind, ..), _)| kind.is_fstring());
-    let num_bytes = values
-        .iter()
-        .filter(|(_, (_, kind, ..), _)| kind.is_bytes())
-        .count();
-    let has_bytes = num_bytes > 0;
-
-    if has_bytes && num_bytes < values.len() {
-        return Err(LexicalError {
-            error: LexicalErrorType::OtherError(
-                "cannot mix bytes and nonbytes literals".to_owned(),
-            ),
-            location: initial_start,
-        });
-    }
-
-    if has_bytes {
-        let mut content: Vec<u8> = vec![];
-        for (start, (source, kind, triple_quoted), end) in values {
-            for value in parse_string(&source, kind, triple_quoted, start, end)? {
-                match value.node {
-                    ExprKind::Constant {
-                        value: Constant::Bytes(value),
-                        ..
-                    } => content.extend(value),
-                    _ => unreachable!("Unexpected non-bytes expression."),
-                }
-            }
-        }
-        return Ok(Expr::new(
-            initial_start,
-            last_end,
-            ExprKind::Constant {
-                value: Constant::Bytes(content),
-                kind: None,
-            },
-        ));
-    }
-
-    if !has_fstring {
-        let mut content: Vec<String> = vec![];
-        for (start, (source, kind, triple_quoted), end) in values {
-            for value in parse_string(&source, kind, triple_quoted, start, end)? {
-                match value.node {
-                    ExprKind::Constant {
-                        value: Constant::Str(value),
-                        ..
-                    } => content.push(value),
-                    _ => unreachable!("Unexpected non-string expression."),
-                }
-            }
-        }
-        return Ok(Expr::new(
-            initial_start,
-            last_end,
-            ExprKind::Constant {
-                value: Constant::Str(content.join("")),
-                kind: initial_kind,
-            },
-        ));
-    }
-
-    // De-duplicate adjacent constants.
-    let mut deduped: Vec<Expr> = vec![];
-    let mut current: Vec<String> = vec![];
-
-    let take_current = |current: &mut Vec<String>| -> Expr {
-        Expr::new(
-            initial_start,
-            last_end,
-            ExprKind::Constant {
-                value: Constant::Str(current.drain(..).join("")),
-                kind: initial_kind.clone(),
-            },
-        )
-    };
-
-    for (start, (source, kind, triple_quoted), end) in values {
-        for value in parse_string(&source, kind, triple_quoted, start, end)? {
-            match value.node {
-                ExprKind::FormattedValue { .. } => {
-                    if !current.is_empty() {
-                        deduped.push(take_current(&mut current));
-                    }
-                    deduped.push(value)
-                }
-                ExprKind::Constant {
-                    value: Constant::Str(value),
-                    ..
-                } => current.push(value),
-                _ => unreachable!("Unexpected non-string expression."),
-            }
-        }
-    }
-    if !current.is_empty() {
-        deduped.push(take_current(&mut current));
-    }
-
-    Ok(Expr::new(
-        initial_start,
-        last_end,
-        ExprKind::JoinedStr { values: deduped },
-    ))
-}
-
-// TODO: consolidate these with ParseError
-/// An error that occurred during parsing of an f-string.
-#[derive(Debug, PartialEq)]
-struct FStringError {
-    /// The type of error that occurred.
-    pub error: FStringErrorType,
-    /// The location of the error.
-    pub location: Location,
-}
-
-impl FStringError {
-    /// Creates a new `FStringError` with the given error type and location.
-    pub fn new(error: FStringErrorType, location: Location) -> Self {
-        Self { error, location }
-    }
-}
-
-impl From<FStringError> for LexicalError {
-    fn from(err: FStringError) -> Self {
-        LexicalError {
-            error: LexicalErrorType::FStringError(err.error),
-            location: err.location,
-        }
-    }
-}
-
-/// Represents the different types of errors that can occur during parsing of an f-string.
-#[derive(Debug, PartialEq)]
-pub enum FStringErrorType {
-    /// Expected a right brace after an opened left brace.
-    UnclosedLbrace,
-    /// Expected a left brace after an ending right brace.
-    UnopenedRbrace,
-    /// Expected a right brace after a conversion flag.
-    ExpectedRbrace,
-    /// An error occurred while parsing an f-string expression.
-    InvalidExpression(Box<ParseErrorType>),
-    /// An invalid conversion flag was encountered.
-    InvalidConversionFlag,
-    /// An empty expression was encountered.
-    EmptyExpression,
-    /// An opening delimiter was not closed properly.
-    MismatchedDelimiter(char, char),
-    /// Too many nested expressions in an f-string.
-    ExpressionNestedTooDeeply,
-    /// The f-string expression cannot include the given character.
-    ExpressionCannotInclude(char),
-    /// A single right brace was encountered.
-    SingleRbrace,
-    /// A closing delimiter was not opened properly.
-    Unmatched(char),
-    // TODO: Test this case.
-    /// Unterminated string.
-    UnterminatedString,
-}
-
-impl std::fmt::Display for FStringErrorType {
-    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
-        use FStringErrorType::*;
-        match self {
-            UnclosedLbrace => write!(f, "expecting '}}'"),
-            UnopenedRbrace => write!(f, "Unopened '}}'"),
-            ExpectedRbrace => write!(f, "Expected '}}' after conversion flag."),
-            InvalidExpression(error) => {
-                write!(f, "{error}")
-            }
-            InvalidConversionFlag => write!(f, "invalid conversion character"),
-            EmptyExpression => write!(f, "empty expression not allowed"),
-            MismatchedDelimiter(first, second) => write!(
-                f,
-                "closing parenthesis '{second}' does not match opening parenthesis '{first}'"
-            ),
-            SingleRbrace => write!(f, "single '}}' is not allowed"),
-            Unmatched(delim) => write!(f, "unmatched '{delim}'"),
-            ExpressionNestedTooDeeply => {
-                write!(f, "expressions nested too deeply")
-            }
-            UnterminatedString => {
-                write!(f, "unterminated string")
-            }
-            ExpressionCannotInclude(c) => {
-                if *c == '\\' {
-                    write!(f, "f-string expression part cannot include a backslash")
-                } else {
-                    write!(f, "f-string expression part cannot include '{c}'s")
-                }
-            }
-        }
-    }
-}
-
-impl From<FStringError> for LalrpopError<Location, Tok, LexicalError> {
-    fn from(err: FStringError) -> Self {
-        lalrpop_util::ParseError::User {
-            error: LexicalError {
-                error: LexicalErrorType::FStringError(err.error),
-                location: err.location,
-            },
-        }
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use crate::parser::parse_program;
-
-    fn parse_fstring(source: &str) -> Result<Vec<Expr>, LexicalError> {
-        StringParser::new(
-            source,
-            StringKind::FString,
-            false,
-            Location::default(),
-            Location::default().with_col_offset(source.len() + 3), // 3 for prefix and quotes
-        )
-        .parse()
-    }
-
-    #[test]
-    fn test_parse_fstring() {
-        let source = "{a}{ b }{{foo}}";
-        let parse_ast = parse_fstring(source).unwrap();
-
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_fstring_nested_spec() {
-        let source = "{foo:{spec}}";
-        let parse_ast = parse_fstring(source).unwrap();
-
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_fstring_not_nested_spec() {
-        let source = "{foo:spec}";
-        let parse_ast = parse_fstring(source).unwrap();
-
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_empty_fstring() {
-        insta::assert_debug_snapshot!(parse_fstring("").unwrap());
-    }
-
-    #[test]
-    fn test_fstring_parse_self_documenting_base() {
-        let src = "{user=}";
-        let parse_ast = parse_fstring(src).unwrap();
-
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_fstring_parse_self_documenting_base_more() {
-        let src = "mix {user=} with text and {second=}";
-        let parse_ast = parse_fstring(src).unwrap();
-
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_fstring_parse_self_documenting_format() {
-        let src = "{user=:>10}";
-        let parse_ast = parse_fstring(src).unwrap();
-
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    fn parse_fstring_error(source: &str) -> FStringErrorType {
-        parse_fstring(source)
-            .map_err(|e| match e.error {
-                LexicalErrorType::FStringError(e) => e,
-                e => unreachable!("Expected FStringError: {:?}", e),
-            })
-            .err()
-            .expect("Expected error")
-    }
-
-    #[test]
-    fn test_parse_invalid_fstring() {
-        use FStringErrorType::*;
-        assert_eq!(parse_fstring_error("{5!a"), UnclosedLbrace);
-        assert_eq!(parse_fstring_error("{5!a1}"), UnclosedLbrace);
-        assert_eq!(parse_fstring_error("{5!"), UnclosedLbrace);
-        assert_eq!(parse_fstring_error("abc{!a 'cat'}"), EmptyExpression);
-        assert_eq!(parse_fstring_error("{!a"), EmptyExpression);
-        assert_eq!(parse_fstring_error("{ !a}"), EmptyExpression);
-
-        assert_eq!(parse_fstring_error("{5!}"), InvalidConversionFlag);
-        assert_eq!(parse_fstring_error("{5!x}"), InvalidConversionFlag);
-
-        assert_eq!(
-            parse_fstring_error("{a:{a:{b}}}"),
-            ExpressionNestedTooDeeply
-        );
-
-        assert_eq!(parse_fstring_error("{a:b}}"), SingleRbrace);
-        assert_eq!(parse_fstring_error("}"), SingleRbrace);
-        assert_eq!(parse_fstring_error("{a:{b}"), UnclosedLbrace);
-        assert_eq!(parse_fstring_error("{"), UnclosedLbrace);
-
-        assert_eq!(parse_fstring_error("{}"), EmptyExpression);
-
-        // TODO: check for InvalidExpression enum?
-        assert!(parse_fstring("{class}").is_err());
-    }
-
-    #[test]
-    fn test_parse_fstring_not_equals() {
-        let source = "{1 != 2}";
-        let parse_ast = parse_fstring(source).unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_fstring_equals() {
-        let source = "{42 == 42}";
-        let parse_ast = parse_fstring(source).unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_fstring_self_doc_prec_space() {
-        let source = "{x   =}";
-        let parse_ast = parse_fstring(source).unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_fstring_self_doc_trailing_space() {
-        let source = "{x=   }";
-        let parse_ast = parse_fstring(source).unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_fstring_yield_expr() {
-        let source = "{yield}";
-        let parse_ast = parse_fstring(source).unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_string_concat() {
-        let source = "'Hello ' 'world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_u_string_concat_1() {
-        let source = "'Hello ' u'world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_u_string_concat_2() {
-        let source = "u'Hello ' 'world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_f_string_concat_1() {
-        let source = "'Hello ' f'world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_f_string_concat_2() {
-        let source = "'Hello ' f'world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_f_string_concat_3() {
-        let source = "'Hello ' f'world{\"!\"}'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_u_f_string_concat_1() {
-        let source = "u'Hello ' f'world'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_u_f_string_concat_2() {
-        let source = "u'Hello ' f'world' '!'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_parse_string_triple_quotes_with_kind() {
-        let source = "u'''Hello, world!'''";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_single_quoted_byte() {
-        // single quote
-        let source = r##"b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'"##;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_double_quoted_byte() {
-        // double quote
-        let source = r##"b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff""##;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_escape_char_in_byte_literal() {
-        // backslash does not escape
-        let source = r##"b"omkmok\Xaa""##; // spell-checker:ignore omkmok
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_raw_byte_literal_1() {
-        let source = r"rb'\x1z'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_raw_byte_literal_2() {
-        let source = r"rb'\\'";
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_escape_octet() {
-        let source = r##"b'\43a\4\1234'"##;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_fstring_escaped_newline() {
-        let source = r#"f"\n{x}""#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_fstring_unescaped_newline() {
-        let source = r#"f"""
-{x}""""#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_fstring_escaped_character() {
-        let source = r#"f"\\{x}""#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_raw_fstring() {
-        let source = r#"rf"{x}""#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_triple_quoted_raw_fstring() {
-        let source = r#"rf"""{x}""""#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    #[test]
-    fn test_fstring_line_continuation() {
-        let source = r#"rf"\
-{x}""#;
-        let parse_ast = parse_program(source, "<test>").unwrap();
-        insta::assert_debug_snapshot!(parse_ast);
-    }
-
-    macro_rules! test_aliases_parse {
-        ($($name:ident: $alias:expr,)*) => {
-        $(
-            #[test]
-            fn $name() {
-                let source = format!(r#""\N{{{0}}}""#, $alias);
-                let parse_ast = parse_program(&source, "<test>").unwrap();
-                insta::assert_debug_snapshot!(parse_ast);
-            }
-        )*
-        }
-    }
-
-    test_aliases_parse! {
-        test_backspace_alias: "BACKSPACE",
-        test_bell_alias: "BEL",
-        test_carriage_return_alias: "CARRIAGE RETURN",
-        test_delete_alias: "DELETE",
-        test_escape_alias: "ESCAPE",
-        test_form_feed_alias: "FORM FEED",
-        test_hts_alias: "HTS",
-        test_character_tabulation_with_justification_alias: "CHARACTER TABULATION WITH JUSTIFICATION",
-    }
-}
diff --git a/compiler/parser/src/token.rs b/compiler/parser/src/token.rs
deleted file mode 100644
index 42b0991514..0000000000
--- a/compiler/parser/src/token.rs
+++ /dev/null
@@ -1,412 +0,0 @@
-//! Token type for Python source code created by the lexer and consumed by the parser.
-//!
-//! This module defines the tokens that the lexer recognizes. The tokens are
-//! loosely based on the token definitions found in the [CPython source].
-//!
-//! [CPython source]: https://github.com/python/cpython/blob/dfc2e065a2e71011017077e549cd2f9bf4944c54/Include/internal/pycore_token.h
-use num_bigint::BigInt;
-use std::fmt;
-
-/// The set of tokens the Python source code can be tokenized in.
-#[derive(Clone, Debug, PartialEq)]
-pub enum Tok {
-    /// Token value for a name, commonly known as an identifier.
-    Name {
-        /// The name value.
-        name: String,
-    },
-    /// Token value for an integer.
-    Int {
-        /// The integer value.
-        value: BigInt,
-    },
-    /// Token value for a floating point number.
-    Float {
-        /// The float value.
-        value: f64,
-    },
-    /// Token value for a complex number.
-    Complex {
-        /// The real part of the complex number.
-        real: f64,
-        /// The imaginary part of the complex number.
-        imag: f64,
-    },
-    /// Token value for a string.
-    String {
-        /// The string value.
-        value: String,
-        /// The kind of string.
-        kind: StringKind,
-        /// Whether the string is triple quoted.
-        triple_quoted: bool,
-    },
-    /// Token value for a comment. These are filtered out of the token stream prior to parsing.
-    Comment(String),
-    /// Token value for a newline.
-    Newline,
-    /// Token value for a newline that is not a logical line break. These are filtered out of
-    /// the token stream prior to parsing.
-    NonLogicalNewline,
-    /// Token value for an indent.
-    Indent,
-    /// Token value for a dedent.
-    Dedent,
-    EndOfFile,
-    /// Token value for a left parenthesis `(`.
-    Lpar,
-    /// Token value for a right parenthesis `)`.
-    Rpar,
-    /// Token value for a left square bracket `[`.
-    Lsqb,
-    /// Token value for a right square bracket `]`.
-    Rsqb,
-    /// Token value for a colon `:`.
-    Colon,
-    /// Token value for a comma `,`.
-    Comma,
-    /// Token value for a semicolon `;`.
-    Semi,
-    /// Token value for plus `+`.
-    Plus,
-    /// Token value for minus `-`.
-    Minus,
-    /// Token value for star `*`.
-    Star,
-    /// Token value for slash `/`.
-    Slash,
-    /// Token value for vertical bar `|`.
-    Vbar,
-    /// Token value for ampersand `&`.
-    Amper,
-    /// Token value for less than `<`.
-    Less,
-    /// Token value for greater than `>`.
-    Greater,
-    /// Token value for equal `=`.
-    Equal,
-    /// Token value for dot `.`.
-    Dot,
-    /// Token value for percent `%`.
-    Percent,
-    /// Token value for left bracket `{`.
-    Lbrace,
-    /// Token value for right bracket `}`.
-    Rbrace,
-    /// Token value for double equal `==`.
-    EqEqual,
-    /// Token value for not equal `!=`.
-    NotEqual,
-    /// Token value for less than or equal `<=`.
-    LessEqual,
-    /// Token value for greater than or equal `>=`.
-    GreaterEqual,
-    /// Token value for tilde `~`.
-    Tilde,
-    /// Token value for caret `^`.
-    CircumFlex,
-    /// Token value for left shift `<<`.
-    LeftShift,
-    /// Token value for right shift `>>`.
-    RightShift,
-    /// Token value for double star `**`.
-    DoubleStar,
-    /// Token value for double star equal `**=`.
-    DoubleStarEqual,
-    /// Token value for plus equal `+=`.
-    PlusEqual,
-    /// Token value for minus equal `-=`.
-    MinusEqual,
-    /// Token value for star equal `*=`.
-    StarEqual,
-    /// Token value for slash equal `/=`.
-    SlashEqual,
-    /// Token value for percent equal `%=`.
-    PercentEqual,
-    /// Token value for ampersand equal `&=`.
-    AmperEqual,
-    /// Token value for vertical bar equal `|=`.
-    VbarEqual,
-    /// Token value for caret equal `^=`.
-    CircumflexEqual,
-    /// Token value for left shift equal `<<=`.
-    LeftShiftEqual,
-    /// Token value for right shift equal `>>=`.
-    RightShiftEqual,
-    /// Token value for double slash `//`.
-    DoubleSlash,
-    /// Token value for double slash equal `//=`.
-    DoubleSlashEqual,
-    /// Token value for colon equal `:=`.
-    ColonEqual,
-    /// Token value for at `@`.
-    At,
-    /// Token value for at equal `@=`.
-    AtEqual,
-    /// Token value for arrow `->`.
-    Rarrow,
-    /// Token value for ellipsis `...`.
-    Ellipsis,
-
-    // Self documenting.
-    // Keywords (alphabetically):
-    False,
-    None,
-    True,
-
-    And,
-    As,
-    Assert,
-    Async,
-    Await,
-    Break,
-    Class,
-    Continue,
-    Def,
-    Del,
-    Elif,
-    Else,
-    Except,
-    Finally,
-    For,
-    From,
-    Global,
-    If,
-    Import,
-    In,
-    Is,
-    Lambda,
-    Nonlocal,
-    Not,
-    Or,
-    Pass,
-    Raise,
-    Return,
-    Try,
-    While,
-    Match,
-    Case,
-    With,
-    Yield,
-
-    // RustPython specific.
-    StartModule,
-    StartInteractive,
-    StartExpression,
-}
-
-impl fmt::Display for Tok {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        use Tok::*;
-        match self {
-            Name { name } => write!(f, "'{name}'"),
-            Int { value } => write!(f, "'{value}'"),
-            Float { value } => write!(f, "'{value}'"),
-            Complex { real, imag } => write!(f, "{real}j{imag}"),
-            String {
-                value,
-                kind,
-                triple_quoted,
-            } => {
-                let quotes = "\"".repeat(if *triple_quoted { 3 } else { 1 });
-                write!(f, "{kind}{quotes}{value}{quotes}")
-            }
-            Newline => f.write_str("Newline"),
-            NonLogicalNewline => f.write_str("NonLogicalNewline"),
-            Indent => f.write_str("Indent"),
-            Dedent => f.write_str("Dedent"),
-            StartModule => f.write_str("StartProgram"),
-            StartInteractive => f.write_str("StartInteractive"),
-            StartExpression => f.write_str("StartExpression"),
-            EndOfFile => f.write_str("EOF"),
-            Lpar => f.write_str("'('"),
-            Rpar => f.write_str("')'"),
-            Lsqb => f.write_str("'['"),
-            Rsqb => f.write_str("']'"),
-            Colon => f.write_str("':'"),
-            Comma => f.write_str("','"),
-            Comment(value) => f.write_str(value),
-            Semi => f.write_str("';'"),
-            Plus => f.write_str("'+'"),
-            Minus => f.write_str("'-'"),
-            Star => f.write_str("'*'"),
-            Slash => f.write_str("'/'"),
-            Vbar => f.write_str("'|'"),
-            Amper => f.write_str("'&'"),
-            Less => f.write_str("'<'"),
-            Greater => f.write_str("'>'"),
-            Equal => f.write_str("'='"),
-            Dot => f.write_str("'.'"),
-            Percent => f.write_str("'%'"),
-            Lbrace => f.write_str("'{'"),
-            Rbrace => f.write_str("'}'"),
-            EqEqual => f.write_str("'=='"),
-            NotEqual => f.write_str("'!='"),
-            LessEqual => f.write_str("'<='"),
-            GreaterEqual => f.write_str("'>='"),
-            Tilde => f.write_str("'~'"),
-            CircumFlex => f.write_str("'^'"),
-            LeftShift => f.write_str("'<<'"),
-            RightShift => f.write_str("'>>'"),
-            DoubleStar => f.write_str("'**'"),
-            DoubleStarEqual => f.write_str("'**='"),
-            PlusEqual => f.write_str("'+='"),
-            MinusEqual => f.write_str("'-='"),
-            StarEqual => f.write_str("'*='"),
-            SlashEqual => f.write_str("'/='"),
-            PercentEqual => f.write_str("'%='"),
-            AmperEqual => f.write_str("'&='"),
-            VbarEqual => f.write_str("'|='"),
-            CircumflexEqual => f.write_str("'^='"),
-            LeftShiftEqual => f.write_str("'<<='"),
-            RightShiftEqual => f.write_str("'>>='"),
-            DoubleSlash => f.write_str("'//'"),
-            DoubleSlashEqual => f.write_str("'//='"),
-            At => f.write_str("'@'"),
-            AtEqual => f.write_str("'@='"),
-            Rarrow => f.write_str("'->'"),
-            Ellipsis => f.write_str("'...'"),
-            False => f.write_str("'False'"),
-            None => f.write_str("'None'"),
-            True => f.write_str("'True'"),
-            And => f.write_str("'and'"),
-            As => f.write_str("'as'"),
-            Assert => f.write_str("'assert'"),
-            Async => f.write_str("'async'"),
-            Await => f.write_str("'await'"),
-            Break => f.write_str("'break'"),
-            Class => f.write_str("'class'"),
-            Continue => f.write_str("'continue'"),
-            Def => f.write_str("'def'"),
-            Del => f.write_str("'del'"),
-            Elif => f.write_str("'elif'"),
-            Else => f.write_str("'else'"),
-            Except => f.write_str("'except'"),
-            Finally => f.write_str("'finally'"),
-            For => f.write_str("'for'"),
-            From => f.write_str("'from'"),
-            Global => f.write_str("'global'"),
-            If => f.write_str("'if'"),
-            Import => f.write_str("'import'"),
-            In => f.write_str("'in'"),
-            Is => f.write_str("'is'"),
-            Lambda => f.write_str("'lambda'"),
-            Nonlocal => f.write_str("'nonlocal'"),
-            Not => f.write_str("'not'"),
-            Or => f.write_str("'or'"),
-            Pass => f.write_str("'pass'"),
-            Raise => f.write_str("'raise'"),
-            Return => f.write_str("'return'"),
-            Try => f.write_str("'try'"),
-            While => f.write_str("'while'"),
-            Match => f.write_str("'match'"),
-            Case => f.write_str("'case'"),
-            With => f.write_str("'with'"),
-            Yield => f.write_str("'yield'"),
-            ColonEqual => f.write_str("':='"),
-        }
-    }
-}
-
-/// The kind of string literal as described in the [String and Bytes literals]
-/// section of the Python reference.
-///
-/// [String and Bytes literals]: https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
-#[derive(PartialEq, Eq, Debug, Clone)]
-pub enum StringKind {
-    /// A normal string literal with no prefix.
-    String,
-    /// A f-string literal, with a `f` or `F` prefix.
-    FString,
-    /// A byte string literal, with a `b` or `B` prefix.
-    Bytes,
-    /// A raw string literal, with a `r` or `R` prefix.
-    RawString,
-    /// A raw f-string literal, with a `rf`/`fr` or `rF`/`Fr` or `Rf`/`fR` or `RF`/`FR` prefix.
-    RawFString,
-    /// A raw byte string literal, with a `rb`/`br` or `rB`/`Br` or `Rb`/`bR` or `RB`/`BR` prefix.
-    RawBytes,
-    /// A unicode string literal, with a `u` or `U` prefix.
-    Unicode,
-}
-
-impl TryFrom<char> for StringKind {
-    type Error = String;
-
-    fn try_from(ch: char) -> Result<Self, String> {
-        match ch {
-            'r' | 'R' => Ok(StringKind::RawString),
-            'f' | 'F' => Ok(StringKind::FString),
-            'u' | 'U' => Ok(StringKind::Unicode),
-            'b' | 'B' => Ok(StringKind::Bytes),
-            c => Err(format!("Unexpected string prefix: {c}")),
-        }
-    }
-}
-
-impl TryFrom<[char; 2]> for StringKind {
-    type Error = String;
-
-    fn try_from(chars: [char; 2]) -> Result<Self, String> {
-        match chars {
-            ['r' | 'R', 'f' | 'F'] => Ok(StringKind::RawFString),
-            ['f' | 'F', 'r' | 'R'] => Ok(StringKind::RawFString),
-            ['r' | 'R', 'b' | 'B'] => Ok(StringKind::RawBytes),
-            ['b' | 'B', 'r' | 'R'] => Ok(StringKind::RawBytes),
-            [c1, c2] => Err(format!("Unexpected string prefix: {c1}{c2}")),
-        }
-    }
-}
-
-impl fmt::Display for StringKind {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        use StringKind::*;
-        match self {
-            String => f.write_str(""),
-            FString => f.write_str("f"),
-            Bytes => f.write_str("b"),
-            RawString => f.write_str("r"),
-            RawFString => f.write_str("rf"),
-            RawBytes => f.write_str("rb"),
-            Unicode => f.write_str("u"),
-        }
-    }
-}
-
-impl StringKind {
-    /// Returns true if the string is a raw string, i,e one of
-    /// [`StringKind::RawString`] or [`StringKind::RawFString`] or [`StringKind::RawBytes`].
-    pub fn is_raw(&self) -> bool {
-        use StringKind::{RawBytes, RawFString, RawString};
-        matches!(self, RawString | RawFString | RawBytes)
-    }
-
-    /// Returns true if the string is an f-string, i,e one of
-    /// [`StringKind::FString`] or [`StringKind::RawFString`].
-    pub fn is_fstring(&self) -> bool {
-        use StringKind::{FString, RawFString};
-        matches!(self, FString | RawFString)
-    }
-
-    /// Returns true if the string is a byte string, i,e one of
-    /// [`StringKind::Bytes`] or [`StringKind::RawBytes`].
-    pub fn is_bytes(&self) -> bool {
-        use StringKind::{Bytes, RawBytes};
-        matches!(self, Bytes | RawBytes)
-    }
-
-    /// Returns true if the string is a unicode string, i,e [`StringKind::Unicode`].
-    pub fn is_unicode(&self) -> bool {
-        matches!(self, StringKind::Unicode)
-    }
-
-    /// Returns the number of characters in the prefix.
-    pub fn prefix_len(&self) -> usize {
-        use StringKind::*;
-        match self {
-            String => 0,
-            RawString | FString | Unicode | Bytes => 1,
-            RawFString | RawBytes => 2,
-        }
-    }
-}
diff --git a/compiler/src/lib.rs b/compiler/src/lib.rs
index 9c38408b44..5786aa65e6 100644
--- a/compiler/src/lib.rs
+++ b/compiler/src/lib.rs
@@ -1,12 +1,14 @@
 use rustpython_codegen::{compile, symboltable};
-use rustpython_parser::{
-    self as parser,
-    ast::{fold::Fold, ConstantOptimizer},
-};
+use rustpython_parser::ast::{fold::Fold, ConstantOptimizer};
 
 pub use rustpython_codegen::compile::CompileOpts;
 pub use rustpython_compiler_core::{BaseError as CompileErrorBody, CodeObject, Mode};
 
+// these modules are out of repository. re-exporting them here for convenience.
+pub use rustpython_codegen as codegen;
+pub use rustpython_compiler_core as core;
+pub use rustpython_parser as parser;
+
 use std::error::Error as StdError;
 use std::fmt;
 
diff --git a/derive-impl/Cargo.toml b/derive-impl/Cargo.toml
index 31fab8abcc..36296e1057 100644
--- a/derive-impl/Cargo.toml
+++ b/derive-impl/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.2.0"
 edition = "2021"
 
 [dependencies]
-rustpython-compiler-core = { path = "../compiler/core", version = "0.2.0" }
+rustpython-compiler-core = { workspace = true }
 rustpython-doc = { git = "https://github.com/RustPython/__doc__", branch = "main" }
 
 indexmap = { workspace = true }
diff --git a/jit/Cargo.toml b/jit/Cargo.toml
index 290af1428f..0a7ff67fb2 100644
--- a/jit/Cargo.toml
+++ b/jit/Cargo.toml
@@ -10,7 +10,7 @@ edition = "2021"
 autotests = false
 
 [dependencies]
-rustpython-compiler-core = { path = "../compiler/core", version = "0.2.0" }
+rustpython-compiler-core = { workspace = true }
 
 num-traits = { workspace = true }
 thiserror = { workspace = true }
diff --git a/pylib/Cargo.toml b/pylib/Cargo.toml
index dba74d6c3b..b2e6ab6f09 100644
--- a/pylib/Cargo.toml
+++ b/pylib/Cargo.toml
@@ -12,7 +12,7 @@ include = ["Cargo.toml", "src/**/*.rs", "Lib/", "!Lib/**/test/", "!Lib/**/*.pyc"
 freeze-stdlib = []
 
 [dependencies]
-rustpython-compiler-core = { version = "0.2.0", path = "../compiler/core" }
+rustpython-compiler-core = { workspace = true }
 rustpython-derive = { version = "0.2.0", path = "../derive" }
 
 [build-dependencies]
diff --git a/vm/Cargo.toml b/vm/Cargo.toml
index e89691c566..c214625053 100644
--- a/vm/Cargo.toml
+++ b/vm/Cargo.toml
@@ -25,15 +25,16 @@ serde = ["dep:serde"]
 
 [dependencies]
 rustpython-compiler = { path = "../compiler", optional = true, version = "0.2.0" }
-rustpython-ast = { path = "../compiler/ast", optional = true, version = "0.2.0" }
-rustpython-parser = { path = "../compiler/parser", optional = true, version = "0.2.0" }
 rustpython-codegen = { path = "../compiler/codegen", optional = true, version = "0.2.0" }
-rustpython-compiler-core = { path = "../compiler/core", version = "0.2.0" }
 rustpython-common = { path = "../common" }
-rustpython-literal = { path = "../compiler/literal" }
 rustpython-derive = { path = "../derive", version = "0.2.0" }
 rustpython-jit = { path = "../jit", optional = true, version = "0.2.0" }
 
+rustpython-ast = { workspace = true, optional = true }
+rustpython-parser = { workspace = true, optional = true }
+rustpython-compiler-core = { workspace = true }
+rustpython-literal = { workspace = true }
+
 ascii = { workspace = true }
 ahash = { workspace = true }
 atty = { workspace = true }
diff --git a/wasm/lib/Cargo.toml b/wasm/lib/Cargo.toml
index 04af5b6f27..15276ae74b 100644
--- a/wasm/lib/Cargo.toml
+++ b/wasm/lib/Cargo.toml
@@ -17,12 +17,13 @@ no-start-func = []
 
 [dependencies]
 rustpython-common = { path = "../../common" }
-rustpython-parser = { path = "../../compiler/parser" }
 rustpython-pylib = { path = "../../pylib", default-features = false, optional = true }
 rustpython-stdlib = { path = "../../stdlib", default-features = false, optional = true }
 # make sure no threading! otherwise wasm build will fail
 rustpython-vm = { path = "../../vm", default-features = false, features = ["compiler", "encodings", "serde"] }
 
+rustpython-parser = { workspace = true }
+
 serde = { workspace = true }
 
 console_error_panic_hook = "0.1"


Test patch:
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap
deleted file mode 100644
index 78ccf76818..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap
+++ /dev/null
@@ -1,77 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: AnnAssign {
-            target: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 1,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Store,
-                },
-            },
-            annotation: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "int",
-                    ctx: Load,
-                },
-            },
-            value: Some(
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 9,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 10,
-                        },
-                    ),
-                    custom: (),
-                    node: Constant {
-                        value: Int(
-                            1,
-                        ),
-                        kind: None,
-                    },
-                },
-            ),
-            simple: 1,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_attribute.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_attribute.snap
deleted file mode 100644
index 984cb7a37c..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_attribute.snap
+++ /dev/null
@@ -1,133 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 3,
-                        },
-                    ),
-                    custom: (),
-                    node: Attribute {
-                        value: Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 1,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                        attr: "y",
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_for.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_for.snap
deleted file mode 100644
index 9dd280206e..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_for.snap
+++ /dev/null
@@ -1,131 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 24,
-            },
-        ),
-        custom: (),
-        node: For {
-            target: Located {
-                location: Location {
-                    row: 1,
-                    column: 4,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 5,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Store,
-                },
-            },
-            iter: Located {
-                location: Location {
-                    row: 1,
-                    column: 9,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            body: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 20,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 24,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            orelse: [],
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_list.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_list.snap
deleted file mode 100644
index ea59293b53..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_list.snap
+++ /dev/null
@@ -1,151 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 6,
-                        },
-                    ),
-                    custom: (),
-                    node: List {
-                        elts: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 1,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 2,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "x",
-                                    ctx: Store,
-                                },
-                            },
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y",
-                                    ctx: Store,
-                                },
-                            },
-                        ],
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 9,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap
deleted file mode 100644
index 367f09a44f..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap
+++ /dev/null
@@ -1,171 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 26,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 1,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "x",
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 4,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 26,
-                    },
-                ),
-                custom: (),
-                node: ListComp {
-                    elt: Located {
-                        location: Location {
-                            row: 1,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "y",
-                            ctx: Load,
-                        },
-                    },
-                    generators: [
-                        Comprehension {
-                            target: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y",
-                                    ctx: Store,
-                                },
-                            },
-                            iter: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 16,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 25,
-                                    },
-                                ),
-                                custom: (),
-                                node: Tuple {
-                                    elts: [
-                                        Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 17,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 18,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                        Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 20,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 21,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    2,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                        Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 23,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 24,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    3,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    ],
-                                    ctx: Load,
-                                },
-                            },
-                            ifs: [],
-                            is_async: 0,
-                        },
-                    ],
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_name.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_name.snap
deleted file mode 100644
index 55d4e70dc1..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_name.snap
+++ /dev/null
@@ -1,116 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 1,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "x",
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 4,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 13,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 5,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 6,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 9,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_named_expr.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_named_expr.snap
deleted file mode 100644
index 64ddb632e2..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_named_expr.snap
+++ /dev/null
@@ -1,89 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: If {
-            test: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 8,
-                    },
-                ),
-                custom: (),
-                node: NamedExpr {
-                    target: Located {
-                        location: Location {
-                            row: 1,
-                            column: 3,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 4,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "x",
-                            ctx: Store,
-                        },
-                    },
-                    value: Located {
-                        location: Location {
-                            row: 1,
-                            column: 7,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 8,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                },
-            },
-            body: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 10,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 14,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            orelse: [],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap
deleted file mode 100644
index 97ecaa081e..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap
+++ /dev/null
@@ -1,171 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 26,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 1,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "x",
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 4,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 26,
-                    },
-                ),
-                custom: (),
-                node: SetComp {
-                    elt: Located {
-                        location: Location {
-                            row: 1,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "y",
-                            ctx: Load,
-                        },
-                    },
-                    generators: [
-                        Comprehension {
-                            target: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y",
-                                    ctx: Store,
-                                },
-                            },
-                            iter: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 16,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 25,
-                                    },
-                                ),
-                                custom: (),
-                                node: Tuple {
-                                    elts: [
-                                        Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 17,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 18,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                        Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 20,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 21,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    2,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                        Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 23,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 24,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    3,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    ],
-                                    ctx: Load,
-                                },
-                            },
-                            ifs: [],
-                            is_async: 0,
-                        },
-                    ],
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_starred.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_starred.snap
deleted file mode 100644
index 015f9bdd7f..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_starred.snap
+++ /dev/null
@@ -1,167 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 19,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 7,
-                        },
-                    ),
-                    custom: (),
-                    node: Tuple {
-                        elts: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 1,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 2,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "x",
-                                    ctx: Store,
-                                },
-                            },
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 6,
-                                    },
-                                ),
-                                custom: (),
-                                node: Starred {
-                                    value: Located {
-                                        location: Location {
-                                            row: 1,
-                                            column: 5,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 1,
-                                                column: 6,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                    ctx: Store,
-                                },
-                            },
-                        ],
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 10,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 19,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 17,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 18,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_subscript.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_subscript.snap
deleted file mode 100644
index 756867c372..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_subscript.snap
+++ /dev/null
@@ -1,149 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 4,
-                        },
-                    ),
-                    custom: (),
-                    node: Subscript {
-                        value: Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 1,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                        slice: Located {
-                            location: Location {
-                                row: 1,
-                                column: 2,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 3,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "y",
-                                ctx: Load,
-                            },
-                        },
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 7,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 16,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 9,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_tuple.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_tuple.snap
deleted file mode 100644
index c520427d93..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_tuple.snap
+++ /dev/null
@@ -1,151 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 6,
-                        },
-                    ),
-                    custom: (),
-                    node: Tuple {
-                        elts: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 1,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 2,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "x",
-                                    ctx: Store,
-                                },
-                            },
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y",
-                                    ctx: Store,
-                                },
-                            },
-                        ],
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 9,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_with.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_with.snap
deleted file mode 100644
index 100b672820..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__assign_with.snap
+++ /dev/null
@@ -1,80 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 1,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 13,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 17,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_attribute.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_attribute.snap
deleted file mode 100644
index 3e6e4b79db..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_attribute.snap
+++ /dev/null
@@ -1,131 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: AugAssign {
-            target: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 3,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 1,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 1,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "x",
-                            ctx: Load,
-                        },
-                    },
-                    attr: "y",
-                    ctx: Store,
-                },
-            },
-            op: Add,
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 7,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 16,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 9,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_name.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_name.snap
deleted file mode 100644
index 0035310f1d..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_name.snap
+++ /dev/null
@@ -1,58 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 6,
-            },
-        ),
-        custom: (),
-        node: AugAssign {
-            target: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 1,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Store,
-                },
-            },
-            op: Add,
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 5,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Int(
-                        1,
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_subscript.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_subscript.snap
deleted file mode 100644
index 72fe61db27..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__aug_assign_subscript.snap
+++ /dev/null
@@ -1,147 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: AugAssign {
-            target: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 4,
-                    },
-                ),
-                custom: (),
-                node: Subscript {
-                    value: Located {
-                        location: Location {
-                            row: 1,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 1,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "x",
-                            ctx: Load,
-                        },
-                    },
-                    slice: Located {
-                        location: Location {
-                            row: 1,
-                            column: 2,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 3,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "y",
-                            ctx: Load,
-                        },
-                    },
-                    ctx: Store,
-                },
-            },
-            op: Add,
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 8,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 15,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    3,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_attribute.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_attribute.snap
deleted file mode 100644
index f44c23b557..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_attribute.snap
+++ /dev/null
@@ -1,57 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 7,
-            },
-        ),
-        custom: (),
-        node: Delete {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 4,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 7,
-                        },
-                    ),
-                    custom: (),
-                    node: Attribute {
-                        value: Located {
-                            location: Location {
-                                row: 1,
-                                column: 4,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 5,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                        attr: "y",
-                        ctx: Del,
-                    },
-                },
-            ],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_name.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_name.snap
deleted file mode 100644
index 56208d2069..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_name.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 5,
-            },
-        ),
-        custom: (),
-        node: Delete {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 4,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 5,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "x",
-                        ctx: Del,
-                    },
-                },
-            ],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_subscript.snap b/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_subscript.snap
deleted file mode 100644
index dca2e7ceb4..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__context__tests__del_subscript.snap
+++ /dev/null
@@ -1,73 +0,0 @@
----
-source: compiler/parser/src/context.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 8,
-            },
-        ),
-        custom: (),
-        node: Delete {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 4,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 8,
-                        },
-                    ),
-                    custom: (),
-                    node: Subscript {
-                        value: Located {
-                            location: Location {
-                                row: 1,
-                                column: 4,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 5,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                        slice: Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "y",
-                                ctx: Load,
-                            },
-                        },
-                        ctx: Del,
-                    },
-                },
-            ],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args.snap
deleted file mode 100644
index 2b990fa833..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args.snap
+++ /dev/null
@@ -1,107 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 23,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [],
-                    vararg: None,
-                    kwonlyargs: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 15,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    kw_defaults: [],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 19,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 23,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args_with_defaults.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args_with_defaults.snap
deleted file mode 100644
index 08fa27e467..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args_with_defaults.snap
+++ /dev/null
@@ -1,146 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 29,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [],
-                    vararg: None,
-                    kwonlyargs: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 18,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    kw_defaults: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    20,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 20,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    30,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 25,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 29,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_no_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_no_args.snap
deleted file mode 100644
index a8d08b9add..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_no_args.snap
+++ /dev/null
@@ -1,52 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 13,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [],
-                    vararg: None,
-                    kwonlyargs: [],
-                    kw_defaults: [],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args.snap
deleted file mode 100644
index 766a36b1ad..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args.snap
+++ /dev/null
@@ -1,162 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 32,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    vararg: None,
-                    kwonlyargs: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 18,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "d",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 21,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "e",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 24,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 25,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "f",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    kw_defaults: [],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 28,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 32,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap
deleted file mode 100644
index c6ff5e5d2c..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap
+++ /dev/null
@@ -1,201 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 38,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    vararg: None,
-                    kwonlyargs: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 18,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "d",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 21,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "e",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 27,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 28,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "f",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    kw_defaults: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 23,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 25,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    20,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 29,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 31,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    30,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 34,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 38,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap
deleted file mode 100644
index 830a9c5298..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap
+++ /dev/null
@@ -1,220 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 42,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    vararg: Some(
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "args",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ),
-                    kwonlyargs: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 22,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 23,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "d",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 25,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 26,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "e",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 31,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 32,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "f",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    kw_defaults: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 27,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 29,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    20,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 33,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 35,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    30,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 38,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 42,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap
deleted file mode 100644
index fde81e980e..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap
+++ /dev/null
@@ -1,239 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 52,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    vararg: Some(
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "args",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ),
-                    kwonlyargs: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 22,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 23,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "d",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 25,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 26,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "e",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 31,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 32,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "f",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    kw_defaults: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 27,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 29,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    20,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 33,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 35,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    30,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    kwarg: Some(
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 39,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 45,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "kwargs",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ),
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 48,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 52,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_args.snap
deleted file mode 100644
index 251bba870a..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_args.snap
+++ /dev/null
@@ -1,107 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 20,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    vararg: None,
-                    kwonlyargs: [],
-                    kw_defaults: [],
-                    kwarg: None,
-                    defaults: [],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 16,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 20,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_args_with_defaults.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_args_with_defaults.snap
deleted file mode 100644
index 71b4bb8694..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__function_pos_args_with_defaults.snap
+++ /dev/null
@@ -1,146 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 26,
-                },
-            ),
-            custom: (),
-            node: FunctionDef {
-                name: "f",
-                args: Arguments {
-                    posonlyargs: [],
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "a",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "b",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 15,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: ArgData {
-                                arg: "c",
-                                annotation: None,
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                    vararg: None,
-                    kwonlyargs: [],
-                    kw_defaults: [],
-                    kwarg: None,
-                    defaults: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    20,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 17,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    30,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-                body: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 22,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 26,
-                            },
-                        ),
-                        custom: (),
-                        node: Pass,
-                    },
-                ],
-                decorator_list: [],
-                returns: None,
-                type_comment: None,
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_kw_only_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_kw_only_args.snap
deleted file mode 100644
index 59987372f8..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_kw_only_args.snap
+++ /dev/null
@@ -1,121 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 20,
-                },
-            ),
-            custom: (),
-            node: Expr {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 20,
-                        },
-                    ),
-                    custom: (),
-                    node: Lambda {
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [],
-                            vararg: None,
-                            kwonlyargs: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "a",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "b",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 16,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 17,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "c",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [],
-                        },
-                        body: Located {
-                            location: Location {
-                                row: 1,
-                                column: 19,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_kw_only_args_with_defaults.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_kw_only_args_with_defaults.snap
deleted file mode 100644
index d48792dc11..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_kw_only_args_with_defaults.snap
+++ /dev/null
@@ -1,160 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 26,
-                },
-            ),
-            custom: (),
-            node: Expr {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 26,
-                        },
-                    ),
-                    custom: (),
-                    node: Lambda {
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [],
-                            vararg: None,
-                            kwonlyargs: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "a",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "b",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 19,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "c",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            kw_defaults: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 15,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 17,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            20,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 21,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 23,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            30,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            kwarg: None,
-                            defaults: [],
-                        },
-                        body: Located {
-                            location: Location {
-                                row: 1,
-                                column: 25,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 26,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_no_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_no_args.snap
deleted file mode 100644
index aab5ec4d50..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_no_args.snap
+++ /dev/null
@@ -1,66 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 9,
-                },
-            ),
-            custom: (),
-            node: Expr {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 9,
-                        },
-                    ),
-                    custom: (),
-                    node: Lambda {
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [],
-                            vararg: None,
-                            kwonlyargs: [],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [],
-                        },
-                        body: Located {
-                            location: Location {
-                                row: 1,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 9,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_and_kw_only_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_and_kw_only_args.snap
deleted file mode 100644
index 22f695b309..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_and_kw_only_args.snap
+++ /dev/null
@@ -1,158 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 26,
-                },
-            ),
-            custom: (),
-            node: Expr {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 26,
-                        },
-                    ),
-                    custom: (),
-                    node: Lambda {
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 7,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 8,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "a",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "b",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "c",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            vararg: None,
-                            kwonlyargs: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 19,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "d",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 22,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 23,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "e",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [],
-                        },
-                        body: Located {
-                            location: Location {
-                                row: 1,
-                                column: 25,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 26,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    0,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_args.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_args.snap
deleted file mode 100644
index f4ce79f978..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_args.snap
+++ /dev/null
@@ -1,121 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 17,
-                },
-            ),
-            custom: (),
-            node: Expr {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 17,
-                        },
-                    ),
-                    custom: (),
-                    node: Lambda {
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 7,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 8,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "a",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "b",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "c",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            vararg: None,
-                            kwonlyargs: [],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [],
-                        },
-                        body: Located {
-                            location: Location {
-                                row: 1,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_args_with_defaults.snap b/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_args_with_defaults.snap
deleted file mode 100644
index 01691aa7d8..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__function__tests__lambda_pos_args_with_defaults.snap
+++ /dev/null
@@ -1,160 +0,0 @@
----
-source: compiler/parser/src/function.rs
-expression: parse_ast
----
-Ok(
-    [
-        Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 23,
-                },
-            ),
-            custom: (),
-            node: Expr {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 23,
-                        },
-                    ),
-                    custom: (),
-                    node: Lambda {
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 7,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 8,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "a",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "b",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 16,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 17,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "c",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            vararg: None,
-                            kwonlyargs: [],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            20,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 18,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            30,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                        },
-                        body: Located {
-                            location: Location {
-                                row: 1,
-                                column: 22,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 23,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    ],
-)
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__dict_unpacking.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__dict_unpacking.snap
deleted file mode 100644
index 212f737ee3..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__dict_unpacking.snap
+++ /dev/null
@@ -1,121 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 25,
-        },
-    ),
-    custom: (),
-    node: Dict {
-        keys: [
-            Some(
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 1,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 4,
-                        },
-                    ),
-                    custom: (),
-                    node: Constant {
-                        value: Str(
-                            "a",
-                        ),
-                        kind: None,
-                    },
-                },
-            ),
-            None,
-            Some(
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 16,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 19,
-                        },
-                    ),
-                    custom: (),
-                    node: Constant {
-                        value: Str(
-                            "d",
-                        ),
-                        kind: None,
-                    },
-                },
-            ),
-        ],
-        values: [
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 9,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "b",
-                    ),
-                    kind: None,
-                },
-            },
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 13,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 14,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "c",
-                    ctx: Load,
-                },
-            },
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 21,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 24,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "e",
-                    ),
-                    kind: None,
-                },
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap
deleted file mode 100644
index 863ece4606..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap
+++ /dev/null
@@ -1,333 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 7,
-            column: 1,
-        },
-    ),
-    custom: (),
-    node: Call {
-        func: Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 8,
-                },
-            ),
-            custom: (),
-            node: Attribute {
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 3,
-                        },
-                    ),
-                    custom: (),
-                    node: Constant {
-                        value: Str(
-                            " ",
-                        ),
-                        kind: None,
-                    },
-                },
-                attr: "join",
-                ctx: Load,
-            },
-        },
-        args: [
-            Located {
-                location: Location {
-                    row: 2,
-                    column: 4,
-                },
-                end_location: Some(
-                    Location {
-                        row: 6,
-                        column: 5,
-                    },
-                ),
-                custom: (),
-                node: GeneratorExp {
-                    elt: Located {
-                        location: Location {
-                            row: 2,
-                            column: 4,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 2,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "sql",
-                            ctx: Load,
-                        },
-                    },
-                    generators: [
-                        Comprehension {
-                            target: Located {
-                                location: Location {
-                                    row: 3,
-                                    column: 8,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 3,
-                                        column: 11,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "sql",
-                                    ctx: Store,
-                                },
-                            },
-                            iter: Located {
-                                location: Location {
-                                    row: 3,
-                                    column: 15,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Tuple {
-                                    elts: [
-                                        Located {
-                                            location: Location {
-                                                row: 4,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 4,
-                                                    column: 45,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: IfExp {
-                                                test: Located {
-                                                    location: Location {
-                                                        row: 4,
-                                                        column: 30,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 4,
-                                                            column: 35,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: Name {
-                                                        id: "limit",
-                                                        ctx: Load,
-                                                    },
-                                                },
-                                                body: Located {
-                                                    location: Location {
-                                                        row: 4,
-                                                        column: 8,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 4,
-                                                            column: 26,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: BinOp {
-                                                        left: Located {
-                                                            location: Location {
-                                                                row: 4,
-                                                                column: 8,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 4,
-                                                                    column: 18,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: Constant {
-                                                                value: Str(
-                                                                    "LIMIT %d",
-                                                                ),
-                                                                kind: None,
-                                                            },
-                                                        },
-                                                        op: Mod,
-                                                        right: Located {
-                                                            location: Location {
-                                                                row: 4,
-                                                                column: 21,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 4,
-                                                                    column: 26,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: Name {
-                                                                id: "limit",
-                                                                ctx: Load,
-                                                            },
-                                                        },
-                                                    },
-                                                },
-                                                orelse: Located {
-                                                    location: Location {
-                                                        row: 4,
-                                                        column: 41,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 4,
-                                                            column: 45,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: Constant {
-                                                        value: None,
-                                                        kind: None,
-                                                    },
-                                                },
-                                            },
-                                        },
-                                        Located {
-                                            location: Location {
-                                                row: 5,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 5,
-                                                    column: 50,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: IfExp {
-                                                test: Located {
-                                                    location: Location {
-                                                        row: 5,
-                                                        column: 34,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 5,
-                                                            column: 40,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: Name {
-                                                        id: "offset",
-                                                        ctx: Load,
-                                                    },
-                                                },
-                                                body: Located {
-                                                    location: Location {
-                                                        row: 5,
-                                                        column: 9,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 5,
-                                                            column: 29,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: BinOp {
-                                                        left: Located {
-                                                            location: Location {
-                                                                row: 5,
-                                                                column: 9,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 5,
-                                                                    column: 20,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: Constant {
-                                                                value: Str(
-                                                                    "OFFSET %d",
-                                                                ),
-                                                                kind: None,
-                                                            },
-                                                        },
-                                                        op: Mod,
-                                                        right: Located {
-                                                            location: Location {
-                                                                row: 5,
-                                                                column: 23,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 5,
-                                                                    column: 29,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: Name {
-                                                                id: "offset",
-                                                                ctx: Load,
-                                                            },
-                                                        },
-                                                    },
-                                                },
-                                                orelse: Located {
-                                                    location: Location {
-                                                        row: 5,
-                                                        column: 46,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 5,
-                                                            column: 50,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: Constant {
-                                                        value: None,
-                                                        kind: None,
-                                                    },
-                                                },
-                                            },
-                                        },
-                                    ],
-                                    ctx: Load,
-                                },
-                            },
-                            ifs: [],
-                            is_async: 0,
-                        },
-                    ],
-                },
-            },
-        ],
-        keywords: [],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__match.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__match.snap
deleted file mode 100644
index 6bc9c16a73..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__match.snap
+++ /dev/null
@@ -1,949 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 2,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 6,
-                column: 19,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 2,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 2,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: Dict {
-                    keys: [
-                        Some(
-                            Located {
-                                location: Location {
-                                    row: 2,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 2,
-                                        column: 13,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Str(
-                                        "test",
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        ),
-                    ],
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 2,
-                                column: 15,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 3,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 5,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [],
-                            patterns: [],
-                            rest: Some(
-                                "rest",
-                            ),
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 6,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 6,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: Expr {
-                                value: Located {
-                                    location: Location {
-                                        row: 6,
-                                        column: 8,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 6,
-                                            column: 19,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Call {
-                                        func: Located {
-                                            location: Location {
-                                                row: 6,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 6,
-                                                    column: 13,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "print",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        args: [
-                                            Located {
-                                                location: Location {
-                                                    row: 6,
-                                                    column: 14,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 6,
-                                                        column: 18,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "rest",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                        ],
-                                        keywords: [],
-                                    },
-                                },
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 7,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 11,
-                column: 20,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 7,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 7,
-                        column: 23,
-                    },
-                ),
-                custom: (),
-                node: Dict {
-                    keys: [
-                        Some(
-                            Located {
-                                location: Location {
-                                    row: 7,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 7,
-                                        column: 14,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Str(
-                                        "label",
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        ),
-                    ],
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 7,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 7,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "test",
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 8,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 10,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [
-                                Located {
-                                    location: Location {
-                                        row: 9,
-                                        column: 8,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 9,
-                                            column: 15,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Str(
-                                            "label",
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 9,
-                                        column: 17,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 9,
-                                            column: 38,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 9,
-                                                    column: 17,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 9,
-                                                        column: 29,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchOr {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 9,
-                                                                column: 17,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 9,
-                                                                    column: 22,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchClass {
-                                                                cls: Located {
-                                                                    location: Location {
-                                                                        row: 9,
-                                                                        column: 17,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 9,
-                                                                            column: 20,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Name {
-                                                                        id: "str",
-                                                                        ctx: Load,
-                                                                    },
-                                                                },
-                                                                patterns: [],
-                                                                kwd_attrs: [],
-                                                                kwd_patterns: [],
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 9,
-                                                                column: 25,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 9,
-                                                                    column: 29,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSingleton {
-                                                                value: None,
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ),
-                                        name: Some(
-                                            "label",
-                                        ),
-                                    },
-                                },
-                            ],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 11,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 11,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Expr {
-                                value: Located {
-                                    location: Location {
-                                        row: 11,
-                                        column: 8,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 11,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Call {
-                                        func: Located {
-                                            location: Location {
-                                                row: 11,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 11,
-                                                    column: 13,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "print",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        args: [
-                                            Located {
-                                                location: Location {
-                                                    row: 11,
-                                                    column: 14,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 11,
-                                                        column: 19,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "label",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                        ],
-                                        keywords: [],
-                                    },
-                                },
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 12,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 14,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 12,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 12,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 13,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 13,
-                                column: 16,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 13,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 13,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 13,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 13,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 13,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 13,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 13,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 13,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 14,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 14,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 14,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 14,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 14,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 14,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 15,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 17,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 15,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 15,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 16,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 16,
-                                column: 16,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 16,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 16,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 16,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 16,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 16,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 16,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 16,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 16,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 17,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 17,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 17,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 17,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 17,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 17,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 18,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 20,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 18,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 18,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 19,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 19,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 19,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 19,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 19,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 19,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 20,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 20,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 20,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 20,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 20,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 20,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__match_as_identifier.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__match_as_identifier.snap
deleted file mode 100644
index 2fb15a7f14..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__match_as_identifier.snap
+++ /dev/null
@@ -1,1910 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 2,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 2,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 2,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 2,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 2,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: BinOp {
-                                left: Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 0,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 8,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: BinOp {
-                                        left: Located {
-                                            location: Location {
-                                                row: 2,
-                                                column: 0,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 2,
-                                                    column: 5,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "match",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        op: Mult,
-                                        right: Located {
-                                            location: Location {
-                                                row: 2,
-                                                column: 7,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 2,
-                                                    column: 8,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                    },
-                                },
-                                op: Add,
-                                right: Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 11,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 12,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "b",
-                                        ctx: Load,
-                                    },
-                                },
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 2,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "c",
-                                ctx: Load,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 3,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 3,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 3,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 3,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 3,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 3,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: BinOp {
-                                left: Located {
-                                    location: Location {
-                                        row: 3,
-                                        column: 0,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 3,
-                                            column: 5,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "match",
-                                        ctx: Load,
-                                    },
-                                },
-                                op: Mult,
-                                right: Located {
-                                    location: Location {
-                                        row: 3,
-                                        column: 8,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 3,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: BinOp {
-                                        left: Located {
-                                            location: Location {
-                                                row: 3,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 3,
-                                                    column: 9,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        op: Add,
-                                        right: Located {
-                                            location: Location {
-                                                row: 3,
-                                                column: 12,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 3,
-                                                    column: 13,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "b",
-                                                ctx: Load,
-                                            },
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 3,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 3,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "c",
-                                ctx: Load,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 4,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 4,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 4,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 4,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: Call {
-                    func: Located {
-                        location: Location {
-                            row: 4,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 4,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "match",
-                            ctx: Load,
-                        },
-                    },
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 4,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 4,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Starred {
-                                value: Located {
-                                    location: Location {
-                                        row: 4,
-                                        column: 8,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 4,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: BinOp {
-                                        left: Located {
-                                            location: Location {
-                                                row: 4,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 4,
-                                                    column: 9,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        op: Add,
-                                        right: Located {
-                                            location: Location {
-                                                row: 4,
-                                                column: 12,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 4,
-                                                    column: 13,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "b",
-                                                ctx: Load,
-                                            },
-                                        },
-                                    },
-                                },
-                                ctx: Load,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 4,
-                                column: 15,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 4,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "c",
-                                ctx: Load,
-                            },
-                        },
-                    ],
-                    keywords: [],
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 5,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 5,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 5,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 5,
-                        column: 16,
-                    },
-                ),
-                custom: (),
-                node: BinOp {
-                    left: Located {
-                        location: Location {
-                            row: 5,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 5,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: BinOp {
-                            left: Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            op: Sub,
-                            right: Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: BinOp {
-                                    left: Located {
-                                        location: Location {
-                                            row: 5,
-                                            column: 7,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 5,
-                                                column: 8,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "a",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    op: Mult,
-                                    right: Located {
-                                        location: Location {
-                                            row: 5,
-                                            column: 11,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 5,
-                                                column: 12,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "b",
-                                            ctx: Load,
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                    op: Add,
-                    right: Located {
-                        location: Location {
-                            row: 5,
-                            column: 15,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 5,
-                                column: 16,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "c",
-                            ctx: Load,
-                        },
-                    },
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 6,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 6,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 6,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 6,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: BinOp {
-                    left: Located {
-                        location: Location {
-                            row: 6,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 6,
-                                column: 14,
-                            },
-                        ),
-                        custom: (),
-                        node: BinOp {
-                            left: Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            op: Sub,
-                            right: Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 8,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 13,
-                                    },
-                                ),
-                                custom: (),
-                                node: BinOp {
-                                    left: Located {
-                                        location: Location {
-                                            row: 6,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 6,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "a",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    op: Mult,
-                                    right: Located {
-                                        location: Location {
-                                            row: 6,
-                                            column: 12,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 6,
-                                                column: 13,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "b",
-                                            ctx: Load,
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                    op: Add,
-                    right: Located {
-                        location: Location {
-                            row: 6,
-                            column: 17,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 6,
-                                column: 18,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "c",
-                            ctx: Load,
-                        },
-                    },
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 7,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 7,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 7,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 7,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: BinOp {
-                    left: Located {
-                        location: Location {
-                            row: 7,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 7,
-                                column: 14,
-                            },
-                        ),
-                        custom: (),
-                        node: BinOp {
-                            left: Located {
-                                location: Location {
-                                    row: 7,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 7,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Call {
-                                    func: Located {
-                                        location: Location {
-                                            row: 7,
-                                            column: 0,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 7,
-                                                column: 5,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "match",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    args: [
-                                        Located {
-                                            location: Location {
-                                                row: 7,
-                                                column: 7,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 7,
-                                                    column: 9,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: UnaryOp {
-                                                op: USub,
-                                                operand: Located {
-                                                    location: Location {
-                                                        row: 7,
-                                                        column: 8,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 7,
-                                                            column: 9,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: Name {
-                                                        id: "a",
-                                                        ctx: Load,
-                                                    },
-                                                },
-                                            },
-                                        },
-                                    ],
-                                    keywords: [],
-                                },
-                            },
-                            op: Mult,
-                            right: Located {
-                                location: Location {
-                                    row: 7,
-                                    column: 13,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 7,
-                                        column: 14,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "b",
-                                    ctx: Load,
-                                },
-                            },
-                        },
-                    },
-                    op: Add,
-                    right: Located {
-                        location: Location {
-                            row: 7,
-                            column: 17,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 7,
-                                column: 18,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "c",
-                            ctx: Load,
-                        },
-                    },
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 8,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 8,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 8,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 8,
-                        column: 10,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 8,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 8,
-                                column: 8,
-                            },
-                        ),
-                        custom: (),
-                        node: Call {
-                            func: Located {
-                                location: Location {
-                                    row: 8,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 8,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            args: [],
-                            keywords: [],
-                        },
-                    },
-                    attr: "a",
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 9,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 9,
-                column: 12,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 9,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 9,
-                        column: 12,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 9,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 9,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: Call {
-                            func: Located {
-                                location: Location {
-                                    row: 9,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 9,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 9,
-                                        column: 7,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 9,
-                                            column: 9,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Tuple {
-                                        elts: [],
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            keywords: [],
-                        },
-                    },
-                    attr: "a",
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 10,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 10,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 10,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 10,
-                        column: 13,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 10,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 10,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: Call {
-                            func: Located {
-                                location: Location {
-                                    row: 10,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 10,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 10,
-                                        column: 7,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 10,
-                                            column: 9,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Tuple {
-                                        elts: [],
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            keywords: [],
-                        },
-                    },
-                    attr: "a",
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 11,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 11,
-                column: 11,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 11,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 11,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 11,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 11,
-                                column: 9,
-                            },
-                        ),
-                        custom: (),
-                        node: Subscript {
-                            value: Located {
-                                location: Location {
-                                    row: 11,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 11,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            slice: Located {
-                                location: Location {
-                                    row: 11,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 11,
-                                        column: 8,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "a",
-                                    ctx: Load,
-                                },
-                            },
-                            ctx: Load,
-                        },
-                    },
-                    attr: "b",
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 12,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 12,
-                column: 12,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 12,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 12,
-                        column: 12,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 12,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 12,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: Subscript {
-                            value: Located {
-                                location: Location {
-                                    row: 12,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 12,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            slice: Located {
-                                location: Location {
-                                    row: 12,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 12,
-                                        column: 9,
-                                    },
-                                ),
-                                custom: (),
-                                node: Tuple {
-                                    elts: [
-                                        Located {
-                                            location: Location {
-                                                row: 12,
-                                                column: 7,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 12,
-                                                    column: 8,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                    ],
-                                    ctx: Load,
-                                },
-                            },
-                            ctx: Load,
-                        },
-                    },
-                    attr: "b",
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 13,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 13,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 13,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 13,
-                        column: 14,
-                    },
-                ),
-                custom: (),
-                node: Attribute {
-                    value: Located {
-                        location: Location {
-                            row: 13,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 13,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: Subscript {
-                            value: Located {
-                                location: Location {
-                                    row: 13,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 13,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            slice: Located {
-                                location: Location {
-                                    row: 13,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 13,
-                                        column: 11,
-                                    },
-                                ),
-                                custom: (),
-                                node: Tuple {
-                                    elts: [
-                                        Located {
-                                            location: Location {
-                                                row: 13,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 13,
-                                                    column: 9,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                    ],
-                                    ctx: Load,
-                                },
-                            },
-                            ctx: Load,
-                        },
-                    },
-                    attr: "b",
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 14,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 15,
-                column: 6,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 14,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 15,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Subscript {
-                    value: Located {
-                        location: Location {
-                            row: 14,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 14,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Call {
-                            func: Located {
-                                location: Location {
-                                    row: 14,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 14,
-                                        column: 5,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "match",
-                                    ctx: Load,
-                                },
-                            },
-                            args: [],
-                            keywords: [],
-                        },
-                    },
-                    slice: Located {
-                        location: Location {
-                            row: 14,
-                            column: 8,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 15,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Slice {
-                            lower: Some(
-                                Located {
-                                    location: Location {
-                                        row: 14,
-                                        column: 8,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 14,
-                                            column: 9,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "a",
-                                        ctx: Load,
-                                    },
-                                },
-                            ),
-                            upper: Some(
-                                Located {
-                                    location: Location {
-                                        row: 15,
-                                        column: 4,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 15,
-                                            column: 5,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "b",
-                                        ctx: Load,
-                                    },
-                                },
-                            ),
-                            step: None,
-                        },
-                    },
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 16,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 16,
-                column: 19,
-            },
-        ),
-        custom: (),
-        node: If {
-            test: Located {
-                location: Location {
-                    row: 16,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 16,
-                        column: 13,
-                    },
-                ),
-                custom: (),
-                node: NamedExpr {
-                    target: Located {
-                        location: Location {
-                            row: 16,
-                            column: 3,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 16,
-                                column: 8,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "match",
-                            ctx: Store,
-                        },
-                    },
-                    value: Located {
-                        location: Location {
-                            row: 16,
-                            column: 12,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 16,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                },
-            },
-            body: [
-                Located {
-                    location: Location {
-                        row: 16,
-                        column: 15,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 16,
-                            column: 19,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            orelse: [],
-        },
-    },
-    Located {
-        location: Location {
-            row: 17,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 20,
-                column: 12,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 17,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 17,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "match",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 18,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 18,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 18,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 18,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        1,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 18,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 18,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Pass,
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 19,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 19,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 19,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 19,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        2,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 20,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 20,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Pass,
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 21,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 21,
-                column: 36,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 21,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 21,
-                            column: 5,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "match",
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 21,
-                    column: 8,
-                },
-                end_location: Some(
-                    Location {
-                        row: 21,
-                        column: 36,
-                    },
-                ),
-                custom: (),
-                node: Lambda {
-                    args: Arguments {
-                        posonlyargs: [],
-                        args: [
-                            Located {
-                                location: Location {
-                                    row: 21,
-                                    column: 15,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 21,
-                                        column: 20,
-                                    },
-                                ),
-                                custom: (),
-                                node: ArgData {
-                                    arg: "query",
-                                    annotation: None,
-                                    type_comment: None,
-                                },
-                            },
-                        ],
-                        vararg: None,
-                        kwonlyargs: [],
-                        kw_defaults: [],
-                        kwarg: None,
-                        defaults: [],
-                    },
-                    body: Located {
-                        location: Location {
-                            row: 21,
-                            column: 22,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 21,
-                                column: 36,
-                            },
-                        ),
-                        custom: (),
-                        node: Compare {
-                            left: Located {
-                                location: Location {
-                                    row: 21,
-                                    column: 22,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 21,
-                                        column: 27,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "query",
-                                    ctx: Load,
-                                },
-                            },
-                            ops: [
-                                Eq,
-                            ],
-                            comparators: [
-                                Located {
-                                    location: Location {
-                                        row: 21,
-                                        column: 31,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 21,
-                                            column: 36,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "event",
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                },
-            },
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 22,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 22,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 22,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 22,
-                        column: 16,
-                    },
-                ),
-                custom: (),
-                node: Call {
-                    func: Located {
-                        location: Location {
-                            row: 22,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 22,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "print",
-                            ctx: Load,
-                        },
-                    },
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 22,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 22,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Call {
-                                func: Located {
-                                    location: Location {
-                                        row: 22,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 22,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "match",
-                                        ctx: Load,
-                                    },
-                                },
-                                args: [
-                                    Located {
-                                        location: Location {
-                                            row: 22,
-                                            column: 12,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 22,
-                                                column: 14,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Int(
-                                                12,
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                ],
-                                keywords: [],
-                            },
-                        },
-                    ],
-                    keywords: [],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_bool_op_and.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_bool_op_and.snap
deleted file mode 100644
index f0e856205c..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_bool_op_and.snap
+++ /dev/null
@@ -1,56 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 7,
-        },
-    ),
-    custom: (),
-    node: BoolOp {
-        op: And,
-        values: [
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 1,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "y",
-                    ctx: Load,
-                },
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_bool_op_or.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_bool_op_or.snap
deleted file mode 100644
index 5d5abad36d..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_bool_op_or.snap
+++ /dev/null
@@ -1,56 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 6,
-        },
-    ),
-    custom: (),
-    node: BoolOp {
-        op: Or,
-        values: [
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 1,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            Located {
-                location: Location {
-                    row: 1,
-                    column: 5,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "y",
-                    ctx: Load,
-                },
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_class.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_class.snap
deleted file mode 100644
index 22b15410b7..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_class.snap
+++ /dev/null
@@ -1,226 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: "parse_program(source, \"<test>\").unwrap()"
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 5,
-                column: 6,
-            },
-        ),
-        custom: (),
-        node: ClassDef {
-            name: "Foo",
-            bases: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 10,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 11,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "A",
-                        ctx: Load,
-                    },
-                },
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 13,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 14,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "B",
-                        ctx: Load,
-                    },
-                },
-            ],
-            keywords: [],
-            body: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 1,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 3,
-                            column: 6,
-                        },
-                    ),
-                    custom: (),
-                    node: FunctionDef {
-                        name: "__init__",
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 14,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 18,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "self",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            vararg: None,
-                            kwonlyargs: [],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [],
-                        },
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 3,
-                                    column: 2,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 3,
-                                        column: 6,
-                                    },
-                                ),
-                                custom: (),
-                                node: Pass,
-                            },
-                        ],
-                        decorator_list: [],
-                        returns: None,
-                        type_comment: None,
-                    },
-                },
-                Located {
-                    location: Location {
-                        row: 4,
-                        column: 1,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 5,
-                            column: 6,
-                        },
-                    ),
-                    custom: (),
-                    node: FunctionDef {
-                        name: "method_with_default",
-                        args: Arguments {
-                            posonlyargs: [],
-                            args: [
-                                Located {
-                                    location: Location {
-                                        row: 4,
-                                        column: 25,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 4,
-                                            column: 29,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "self",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 4,
-                                        column: 31,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 4,
-                                            column: 34,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: ArgData {
-                                        arg: "arg",
-                                        annotation: None,
-                                        type_comment: None,
-                                    },
-                                },
-                            ],
-                            vararg: None,
-                            kwonlyargs: [],
-                            kw_defaults: [],
-                            kwarg: None,
-                            defaults: [
-                                Located {
-                                    location: Location {
-                                        row: 4,
-                                        column: 35,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 4,
-                                            column: 44,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Str(
-                                            "default",
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                        },
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 2,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 6,
-                                    },
-                                ),
-                                custom: (),
-                                node: Pass,
-                            },
-                        ],
-                        decorator_list: [],
-                        returns: None,
-                        type_comment: None,
-                    },
-                },
-            ],
-            decorator_list: [],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap
deleted file mode 100644
index 2c0bc513ba..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap
+++ /dev/null
@@ -1,93 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 19,
-        },
-    ),
-    custom: (),
-    node: DictComp {
-        key: Located {
-            location: Location {
-                row: 1,
-                column: 1,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 3,
-                },
-            ),
-            custom: (),
-            node: Name {
-                id: "x1",
-                ctx: Load,
-            },
-        },
-        value: Located {
-            location: Location {
-                row: 1,
-                column: 5,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 7,
-                },
-            ),
-            custom: (),
-            node: Name {
-                id: "x2",
-                ctx: Load,
-            },
-        },
-        generators: [
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 12,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 13,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 17,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 18,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "z",
-                        ctx: Load,
-                    },
-                },
-                ifs: [],
-                is_async: 0,
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap
deleted file mode 100644
index f8346b5c34..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap
+++ /dev/null
@@ -1,262 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 48,
-        },
-    ),
-    custom: (),
-    node: ListComp {
-        elt: Located {
-            location: Location {
-                row: 1,
-                column: 1,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 2,
-                },
-            ),
-            custom: (),
-            node: Name {
-                id: "x",
-                ctx: Load,
-            },
-        },
-        generators: [
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 7,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 12,
-                        },
-                    ),
-                    custom: (),
-                    node: Tuple {
-                        elts: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 8,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y",
-                                    ctx: Store,
-                                },
-                            },
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y2",
-                                    ctx: Store,
-                                },
-                            },
-                        ],
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 16,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 17,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "z",
-                        ctx: Load,
-                    },
-                },
-                ifs: [],
-                is_async: 0,
-            },
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 22,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 23,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "a",
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 27,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 28,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "b",
-                        ctx: Load,
-                    },
-                },
-                ifs: [
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 32,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 37,
-                            },
-                        ),
-                        custom: (),
-                        node: Compare {
-                            left: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 32,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 33,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "a",
-                                    ctx: Load,
-                                },
-                            },
-                            ops: [
-                                Lt,
-                            ],
-                            comparators: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 36,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 37,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            5,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 41,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 47,
-                            },
-                        ),
-                        custom: (),
-                        node: Compare {
-                            left: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 41,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 42,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "a",
-                                    ctx: Load,
-                                },
-                            },
-                            ops: [
-                                Gt,
-                            ],
-                            comparators: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 45,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 47,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            10,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                ],
-                is_async: 0,
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_empty.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_empty.snap
deleted file mode 100644
index 17be8fe7ea..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_empty.snap
+++ /dev/null
@@ -1,5 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_f_string.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_f_string.snap
deleted file mode 100644
index 14009d328c..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_f_string.snap
+++ /dev/null
@@ -1,57 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 14,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap
deleted file mode 100644
index 89e05b2838..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap
+++ /dev/null
@@ -1,76 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 14,
-        },
-    ),
-    custom: (),
-    node: GeneratorExp {
-        elt: Located {
-            location: Location {
-                row: 1,
-                column: 1,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 2,
-                },
-            ),
-            custom: (),
-            node: Name {
-                id: "x",
-                ctx: Load,
-            },
-        },
-        generators: [
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 7,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 8,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 12,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 13,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "z",
-                        ctx: Load,
-                    },
-                },
-                ifs: [],
-                is_async: 0,
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_elif_else.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_elif_else.snap
deleted file mode 100644
index 26bd492b93..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_elif_else.snap
+++ /dev/null
@@ -1,184 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 3,
-                column: 8,
-            },
-        ),
-        custom: (),
-        node: If {
-            test: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 4,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Int(
-                        1,
-                    ),
-                    kind: None,
-                },
-            },
-            body: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 6,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 8,
-                        },
-                    ),
-                    custom: (),
-                    node: Expr {
-                        value: Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    10,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            ],
-            orelse: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 3,
-                            column: 8,
-                        },
-                    ),
-                    custom: (),
-                    node: If {
-                        test: Located {
-                            location: Location {
-                                row: 2,
-                                column: 5,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 6,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 2,
-                                    column: 8,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 2,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Expr {
-                                    value: Located {
-                                        location: Location {
-                                            row: 2,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 2,
-                                                column: 10,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Int(
-                                                20,
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                },
-                            },
-                        ],
-                        orelse: [
-                            Located {
-                                location: Location {
-                                    row: 3,
-                                    column: 6,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 3,
-                                        column: 8,
-                                    },
-                                ),
-                                custom: (),
-                                node: Expr {
-                                    value: Located {
-                                        location: Location {
-                                            row: 3,
-                                            column: 6,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 3,
-                                                column: 8,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Int(
-                                                30,
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                },
-                            },
-                        ],
-                    },
-                },
-            ],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap
deleted file mode 100644
index 92b85877de..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap
+++ /dev/null
@@ -1,125 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 26,
-        },
-    ),
-    custom: (),
-    node: GeneratorExp {
-        elt: Located {
-            location: Location {
-                row: 1,
-                column: 1,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 14,
-                },
-            ),
-            custom: (),
-            node: IfExp {
-                test: Located {
-                    location: Location {
-                        row: 1,
-                        column: 6,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 7,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Load,
-                    },
-                },
-                body: Located {
-                    location: Location {
-                        row: 1,
-                        column: 1,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 2,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "x",
-                        ctx: Load,
-                    },
-                },
-                orelse: Located {
-                    location: Location {
-                        row: 1,
-                        column: 13,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 14,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Load,
-                    },
-                },
-            },
-        },
-        generators: [
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 19,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 20,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 24,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 25,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "z",
-                        ctx: Load,
-                    },
-                },
-                ifs: [],
-                is_async: 0,
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_kwargs.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_kwargs.snap
deleted file mode 100644
index dfe9859731..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_kwargs.snap
+++ /dev/null
@@ -1,113 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 32,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 32,
-                    },
-                ),
-                custom: (),
-                node: Call {
-                    func: Located {
-                        location: Location {
-                            row: 1,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "my_func",
-                            ctx: Load,
-                        },
-                    },
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "positional",
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    keywords: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 22,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 31,
-                                },
-                            ),
-                            custom: (),
-                            node: KeywordData {
-                                arg: Some(
-                                    "keyword",
-                                ),
-                                value: Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 30,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 31,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            2,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_lambda.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_lambda.snap
deleted file mode 100644
index df154a3731..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_lambda.snap
+++ /dev/null
@@ -1,132 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: Lambda {
-                    args: Arguments {
-                        posonlyargs: [],
-                        args: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 8,
-                                    },
-                                ),
-                                custom: (),
-                                node: ArgData {
-                                    arg: "x",
-                                    annotation: None,
-                                    type_comment: None,
-                                },
-                            },
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 10,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 11,
-                                    },
-                                ),
-                                custom: (),
-                                node: ArgData {
-                                    arg: "y",
-                                    annotation: None,
-                                    type_comment: None,
-                                },
-                            },
-                        ],
-                        vararg: None,
-                        kwonlyargs: [],
-                        kw_defaults: [],
-                        kwarg: None,
-                        defaults: [],
-                    },
-                    body: Located {
-                        location: Location {
-                            row: 1,
-                            column: 13,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 18,
-                            },
-                        ),
-                        custom: (),
-                        node: BinOp {
-                            left: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 13,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 14,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "x",
-                                    ctx: Load,
-                                },
-                            },
-                            op: Mult,
-                            right: Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 18,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "y",
-                                    ctx: Load,
-                                },
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap
deleted file mode 100644
index 9af8e55ea3..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap
+++ /dev/null
@@ -1,76 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 14,
-        },
-    ),
-    custom: (),
-    node: ListComp {
-        elt: Located {
-            location: Location {
-                row: 1,
-                column: 1,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 2,
-                },
-            ),
-            custom: (),
-            node: Name {
-                id: "x",
-                ctx: Load,
-            },
-        },
-        generators: [
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 7,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 8,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 12,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 13,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "z",
-                        ctx: Load,
-                    },
-                },
-                ifs: [],
-                is_async: 0,
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap
deleted file mode 100644
index 639bf21f98..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap
+++ /dev/null
@@ -1,143 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 23,
-        },
-    ),
-    custom: (),
-    node: GeneratorExp {
-        elt: Located {
-            location: Location {
-                row: 1,
-                column: 1,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 11,
-                },
-            ),
-            custom: (),
-            node: NamedExpr {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 1,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 2,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "x",
-                        ctx: Store,
-                    },
-                },
-                value: Located {
-                    location: Location {
-                        row: 1,
-                        column: 6,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 11,
-                        },
-                    ),
-                    custom: (),
-                    node: BinOp {
-                        left: Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "y",
-                                ctx: Load,
-                            },
-                        },
-                        op: Add,
-                        right: Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            },
-        },
-        generators: [
-            Comprehension {
-                target: Located {
-                    location: Location {
-                        row: 1,
-                        column: 16,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 17,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "y",
-                        ctx: Store,
-                    },
-                },
-                iter: Located {
-                    location: Location {
-                        row: 1,
-                        column: 21,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 22,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "z",
-                        ctx: Load,
-                    },
-                },
-                ifs: [],
-                is_async: 0,
-            },
-        ],
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_print_2.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_print_2.snap
deleted file mode 100644
index c782b8a887..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_print_2.snap
+++ /dev/null
@@ -1,94 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 23,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 23,
-                    },
-                ),
-                custom: (),
-                node: Call {
-                    func: Located {
-                        location: Location {
-                            row: 1,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "print",
-                            ctx: Load,
-                        },
-                    },
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 21,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    keywords: [],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_print_hello.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_print_hello.snap
deleted file mode 100644
index 34f6ed85be..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_print_hello.snap
+++ /dev/null
@@ -1,75 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 20,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 20,
-                    },
-                ),
-                custom: (),
-                node: Call {
-                    func: Located {
-                        location: Location {
-                            row: 1,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "print",
-                            ctx: Load,
-                        },
-                    },
-                    args: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    keywords: [],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_string.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_string.snap
deleted file mode 100644
index d58f9e3a40..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_string.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 13,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "Hello world",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_tuples.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_tuples.snap
deleted file mode 100644
index 7be8628176..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__parse_tuples.snap
+++ /dev/null
@@ -1,132 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: "parse_program(source, \"<test>\").unwrap()"
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 11,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 4,
-                        },
-                    ),
-                    custom: (),
-                    node: Tuple {
-                        elts: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 1,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "a",
-                                    ctx: Store,
-                                },
-                            },
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 3,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 4,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "b",
-                                    ctx: Store,
-                                },
-                            },
-                        ],
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 7,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    4,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    5,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__patma.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__patma.snap
deleted file mode 100644
index 147ba2424e..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__patma.snap
+++ /dev/null
@@ -1,8254 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 4,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 6,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 4,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 4,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 5,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 5,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: UnaryOp {
-                                    op: USub,
-                                    operand: Located {
-                                        location: Location {
-                                            row: 5,
-                                            column: 10,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 5,
-                                                column: 12,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Complex {
-                                                real: 0.0,
-                                                imag: 0.0,
-                                            },
-                                            kind: None,
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 6,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 6,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 6,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 6,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 6,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 6,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 8,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 10,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 8,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 8,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 9,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 9,
-                                column: 17,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchClass {
-                            cls: Located {
-                                location: Location {
-                                    row: 9,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 9,
-                                        column: 14,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "bytes",
-                                    ctx: Load,
-                                },
-                            },
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 9,
-                                        column: 15,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 9,
-                                            column: 16,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "z",
-                                        ),
-                                    },
-                                },
-                            ],
-                            kwd_attrs: [],
-                            kwd_patterns: [],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 10,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 10,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 10,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 10,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 10,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 10,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 12,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 16,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 12,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 12,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 13,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 13,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 13,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 13,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: Some(
-                        Located {
-                            location: Location {
-                                row: 13,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 13,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    0,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ),
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 14,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 14,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 14,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 14,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 14,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 14,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 15,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 15,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 15,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 15,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: Some(
-                        Located {
-                            location: Location {
-                                row: 15,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 15,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ),
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 16,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 16,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 16,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 16,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 16,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 16,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 18,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 20,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 18,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 18,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Int(
-                        3,
-                    ),
-                    kind: None,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 19,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 19,
-                                column: 22,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchOr {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 19,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 19,
-                                            column: 10,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 19,
-                                                column: 9,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 19,
-                                                    column: 10,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 19,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 19,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 19,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 19,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 19,
-                                        column: 17,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 19,
-                                            column: 18,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 19,
-                                                column: 17,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 19,
-                                                    column: 18,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    2,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 19,
-                                        column: 21,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 19,
-                                            column: 22,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 19,
-                                                column: 21,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 19,
-                                                    column: 22,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    3,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 20,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 20,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 20,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 20,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "x",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 20,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 20,
-                                            column: 16,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Bool(
-                                            true,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 22,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 24,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 22,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 22,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 23,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 23,
-                                column: 24,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchOr {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 23,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 23,
-                                            column: 15,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchSequence {
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 23,
-                                                    column: 10,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 23,
-                                                        column: 11,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 23,
-                                                            column: 10,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 23,
-                                                                column: 11,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                0,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                            Located {
-                                                location: Location {
-                                                    row: 23,
-                                                    column: 13,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 23,
-                                                        column: 14,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 23,
-                                                            column: 13,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 23,
-                                                                column: 14,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                1,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                        ],
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 23,
-                                        column: 18,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 23,
-                                            column: 24,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchSequence {
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 23,
-                                                    column: 19,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 23,
-                                                        column: 20,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 23,
-                                                            column: 19,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 23,
-                                                                column: 20,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                1,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                            Located {
-                                                location: Location {
-                                                    row: 23,
-                                                    column: 22,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 23,
-                                                        column: 23,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 23,
-                                                            column: 22,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 23,
-                                                                column: 23,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                0,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                        ],
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 24,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 24,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 24,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 24,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 24,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 24,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 26,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 30,
-                column: 20,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 26,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 26,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 27,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 27,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 27,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 27,
-                                            column: 12,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 28,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 28,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Return {
-                                value: Some(
-                                    Located {
-                                        location: Location {
-                                            row: 28,
-                                            column: 15,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 28,
-                                                column: 20,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Str(
-                                                "seq",
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                ),
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 29,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 29,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [],
-                            patterns: [],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 30,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 30,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Return {
-                                value: Some(
-                                    Located {
-                                        location: Location {
-                                            row: 30,
-                                            column: 15,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 30,
-                                                column: 20,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Str(
-                                                "map",
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                ),
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 32,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 38,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 32,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 32,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 33,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 33,
-                                column: 24,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [
-                                Located {
-                                    location: Location {
-                                        row: 33,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 33,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 33,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 33,
-                                            column: 23,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchSequence {
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 33,
-                                                    column: 14,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 33,
-                                                        column: 15,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 33,
-                                                            column: 14,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 33,
-                                                                column: 15,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                1,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                            Located {
-                                                location: Location {
-                                                    row: 33,
-                                                    column: 17,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 33,
-                                                        column: 18,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 33,
-                                                            column: 17,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 33,
-                                                                column: 18,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                2,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                            Located {
-                                                location: Location {
-                                                    row: 33,
-                                                    column: 20,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 33,
-                                                        column: 22,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchMapping {
-                                                    keys: [],
-                                                    patterns: [],
-                                                    rest: None,
-                                                },
-                                            },
-                                        ],
-                                    },
-                                },
-                            ],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 34,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 34,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 34,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 34,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 34,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 34,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 35,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 35,
-                                column: 77,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchOr {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 35,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 35,
-                                            column: 31,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [
-                                            Located {
-                                                location: Location {
-                                                    row: 35,
-                                                    column: 10,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 35,
-                                                        column: 11,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        0,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ],
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 35,
-                                                    column: 13,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 35,
-                                                        column: 30,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchOr {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 35,
-                                                                column: 13,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 35,
-                                                                    column: 23,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSequence {
-                                                                patterns: [
-                                                                    Located {
-                                                                        location: Location {
-                                                                            row: 35,
-                                                                            column: 14,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 35,
-                                                                                column: 15,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: MatchValue {
-                                                                            value: Located {
-                                                                                location: Location {
-                                                                                    row: 35,
-                                                                                    column: 14,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 35,
-                                                                                        column: 15,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Constant {
-                                                                                    value: Int(
-                                                                                        1,
-                                                                                    ),
-                                                                                    kind: None,
-                                                                                },
-                                                                            },
-                                                                        },
-                                                                    },
-                                                                    Located {
-                                                                        location: Location {
-                                                                            row: 35,
-                                                                            column: 17,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 35,
-                                                                                column: 18,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: MatchValue {
-                                                                            value: Located {
-                                                                                location: Location {
-                                                                                    row: 35,
-                                                                                    column: 17,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 35,
-                                                                                        column: 18,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Constant {
-                                                                                    value: Int(
-                                                                                        2,
-                                                                                    ),
-                                                                                    kind: None,
-                                                                                },
-                                                                            },
-                                                                        },
-                                                                    },
-                                                                    Located {
-                                                                        location: Location {
-                                                                            row: 35,
-                                                                            column: 20,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 35,
-                                                                                column: 22,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: MatchMapping {
-                                                                            keys: [],
-                                                                            patterns: [],
-                                                                            rest: None,
-                                                                        },
-                                                                    },
-                                                                ],
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 35,
-                                                                column: 26,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 35,
-                                                                    column: 30,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSingleton {
-                                                                value: Bool(
-                                                                    true,
-                                                                ),
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ],
-                                        rest: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 35,
-                                        column: 34,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 35,
-                                            column: 43,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [
-                                            Located {
-                                                location: Location {
-                                                    row: 35,
-                                                    column: 35,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 35,
-                                                        column: 36,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        1,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ],
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 35,
-                                                    column: 38,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 35,
-                                                        column: 42,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchSequence {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 35,
-                                                                column: 39,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 35,
-                                                                    column: 41,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSequence {
-                                                                patterns: [],
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ],
-                                        rest: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 35,
-                                        column: 46,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 35,
-                                            column: 61,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [
-                                            Located {
-                                                location: Location {
-                                                    row: 35,
-                                                    column: 47,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 35,
-                                                        column: 48,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        0,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ],
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 35,
-                                                    column: 50,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 35,
-                                                        column: 60,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchSequence {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 35,
-                                                                column: 51,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 35,
-                                                                    column: 52,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchValue {
-                                                                value: Located {
-                                                                    location: Location {
-                                                                        row: 35,
-                                                                        column: 51,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 35,
-                                                                            column: 52,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            1,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 35,
-                                                                column: 54,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 35,
-                                                                    column: 55,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchValue {
-                                                                value: Located {
-                                                                    location: Location {
-                                                                        row: 35,
-                                                                        column: 54,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 35,
-                                                                            column: 55,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            2,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 35,
-                                                                column: 57,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 35,
-                                                                    column: 59,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchMapping {
-                                                                keys: [],
-                                                                patterns: [],
-                                                                rest: None,
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ],
-                                        rest: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 35,
-                                        column: 64,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 35,
-                                            column: 66,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchSequence {
-                                        patterns: [],
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 35,
-                                        column: 69,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 35,
-                                            column: 72,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 35,
-                                                column: 69,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 35,
-                                                    column: 72,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Str(
-                                                    "X",
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 35,
-                                        column: 75,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 35,
-                                            column: 77,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [],
-                                        patterns: [],
-                                        rest: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 36,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 36,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 36,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 36,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 36,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 36,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 37,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 37,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 38,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 38,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 38,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 38,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 38,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 38,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            2,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 40,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 42,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 40,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 40,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 41,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 41,
-                                column: 21,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 41,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 41,
-                                        column: 21,
-                                    },
-                                ),
-                                custom: (),
-                                node: BinOp {
-                                    left: Located {
-                                        location: Location {
-                                            row: 41,
-                                            column: 9,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 41,
-                                                column: 13,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Float(
-                                                0.25,
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                    op: Add,
-                                    right: Located {
-                                        location: Location {
-                                            row: 41,
-                                            column: 16,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 41,
-                                                column: 21,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Complex {
-                                                real: 0.0,
-                                                imag: 1.75,
-                                            },
-                                            kind: None,
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 42,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 42,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 42,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 42,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 42,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 42,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 44,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 46,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 44,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 44,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 45,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 45,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 45,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 45,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: UnaryOp {
-                                    op: USub,
-                                    operand: Located {
-                                        location: Location {
-                                            row: 45,
-                                            column: 10,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 45,
-                                                column: 12,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Complex {
-                                                real: 0.0,
-                                                imag: 0.0,
-                                            },
-                                            kind: None,
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 46,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 46,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 46,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 46,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 46,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 46,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 48,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 50,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 48,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 48,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Int(
-                        4,
-                    ),
-                    kind: None,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 49,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 49,
-                                column: 22,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchOr {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 49,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 49,
-                                            column: 10,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 49,
-                                                column: 9,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 49,
-                                                    column: 10,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 49,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 49,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 49,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 49,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 49,
-                                        column: 17,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 49,
-                                            column: 18,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 49,
-                                                column: 17,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 49,
-                                                    column: 18,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    2,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 49,
-                                        column: 21,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 49,
-                                            column: 22,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 49,
-                                                column: 21,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 49,
-                                                    column: 22,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    3,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 50,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 50,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 50,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 50,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "x",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 50,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 50,
-                                            column: 16,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Bool(
-                                            true,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 52,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 54,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 52,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 52,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 53,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 53,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 53,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 53,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: Some(
-                        Located {
-                            location: Location {
-                                row: 53,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 53,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                    ),
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 54,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 54,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 54,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 54,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 54,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 54,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 56,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 62,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 56,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 56,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 57,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 57,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [
-                                Located {
-                                    location: Location {
-                                        row: 57,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 57,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 57,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 57,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 57,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 57,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 58,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 58,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 58,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 58,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 58,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 58,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 59,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 59,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [
-                                Located {
-                                    location: Location {
-                                        row: 59,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 59,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 59,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 59,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 59,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 59,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 60,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 60,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 60,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 60,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 60,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 60,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 61,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 61,
-                                column: 14,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [],
-                            patterns: [],
-                            rest: Some(
-                                "z",
-                            ),
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 62,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 62,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 62,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 62,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 62,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 62,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            2,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 64,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 66,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 64,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 64,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: Call {
-                    func: Located {
-                        location: Location {
-                            row: 64,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 64,
-                                column: 9,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "Seq",
-                            ctx: Load,
-                        },
-                    },
-                    args: [],
-                    keywords: [],
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 65,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 65,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 65,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 65,
-                                            column: 12,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 66,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 66,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 66,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 66,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 66,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 66,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 68,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 72,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 68,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 68,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 69,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 69,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 69,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 69,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        1,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 70,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 70,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 70,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 70,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 70,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 70,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 71,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 71,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 71,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 71,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        1,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 72,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 72,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 72,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 72,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 72,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 72,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 74,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 76,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 74,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 74,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 75,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 75,
-                                column: 21,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [
-                                Located {
-                                    location: Location {
-                                        row: 75,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 75,
-                                            column: 15,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Str(
-                                            "foo",
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 75,
-                                        column: 17,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 75,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "bar",
-                                        ),
-                                    },
-                                },
-                            ],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 76,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 76,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 76,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 76,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 76,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 76,
-                                            column: 15,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "bar",
-                                        ctx: Load,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 78,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 80,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 78,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 78,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 78,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 78,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    0,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 78,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 78,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 78,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 78,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 79,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 79,
-                                column: 22,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 79,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 79,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 79,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 79,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 79,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 79,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 79,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 79,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 79,
-                                        column: 16,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 79,
-                                            column: 18,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: Some(
-                                            "x",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 79,
-                                        column: 20,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 79,
-                                            column: 21,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 79,
-                                                column: 20,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 79,
-                                                    column: 21,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    2,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 80,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 80,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 80,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 80,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 80,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 80,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 82,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 88,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 82,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 82,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 83,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 83,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 83,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 83,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 83,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 83,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 84,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 84,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 84,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 84,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 84,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 84,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 85,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 85,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 85,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 85,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 85,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 85,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 85,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 85,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 85,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 85,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: Some(
-                        Located {
-                            location: Location {
-                                row: 85,
-                                column: 20,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 85,
-                                    column: 30,
-                                },
-                            ),
-                            custom: (),
-                            node: NamedExpr {
-                                target: Located {
-                                    location: Location {
-                                        row: 85,
-                                        column: 20,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 85,
-                                            column: 21,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Store,
-                                    },
-                                },
-                                value: Located {
-                                    location: Location {
-                                        row: 85,
-                                        column: 25,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 85,
-                                            column: 30,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Subscript {
-                                        value: Located {
-                                            location: Location {
-                                                row: 85,
-                                                column: 25,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 85,
-                                                    column: 26,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "x",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        slice: Located {
-                                            location: Location {
-                                                row: 85,
-                                                column: 27,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 85,
-                                                    column: 29,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Slice {
-                                                lower: None,
-                                                upper: Some(
-                                                    Located {
-                                                        location: Location {
-                                                            row: 85,
-                                                            column: 28,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 85,
-                                                                column: 29,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                0,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                ),
-                                                step: None,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            },
-                        },
-                    ),
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 86,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 86,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 86,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 86,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 86,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 86,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 87,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 87,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 87,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 87,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 87,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 87,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 87,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 87,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 87,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 87,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 88,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 88,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 88,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 88,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 88,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 88,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            2,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 90,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 92,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 90,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 90,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "w",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 91,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 91,
-                                column: 19,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 91,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 91,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "x",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 91,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 91,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "y",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 91,
-                                        column: 16,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 91,
-                                            column: 18,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 92,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 92,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 92,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 92,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "z",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 92,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 92,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 94,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 96,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 94,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 94,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 95,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 95,
-                                column: 22,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 95,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 95,
-                                        column: 22,
-                                    },
-                                ),
-                                custom: (),
-                                node: BinOp {
-                                    left: Located {
-                                        location: Location {
-                                            row: 95,
-                                            column: 9,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 95,
-                                                column: 14,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: UnaryOp {
-                                            op: USub,
-                                            operand: Located {
-                                                location: Location {
-                                                    row: 95,
-                                                    column: 10,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 95,
-                                                        column: 14,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Float(
-                                                        0.25,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        },
-                                    },
-                                    op: Sub,
-                                    right: Located {
-                                        location: Location {
-                                            row: 95,
-                                            column: 17,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 95,
-                                                column: 22,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Complex {
-                                                real: 0.0,
-                                                imag: 1.75,
-                                            },
-                                            kind: None,
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 96,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 96,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 96,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 96,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 96,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 96,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 98,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 100,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 98,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 98,
-                        column: 10,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 98,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 98,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 99,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 99,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 99,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 99,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "y",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 100,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 100,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 100,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 100,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "z",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 100,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 100,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 102,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 104,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 102,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 102,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 103,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 103,
-                                column: 16,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 103,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 103,
-                                        column: 16,
-                                    },
-                                ),
-                                custom: (),
-                                node: Attribute {
-                                    value: Located {
-                                        location: Location {
-                                            row: 103,
-                                            column: 9,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 103,
-                                                column: 14,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Attribute {
-                                            value: Located {
-                                                location: Location {
-                                                    row: 103,
-                                                    column: 9,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 103,
-                                                        column: 12,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Attribute {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 103,
-                                                            column: 9,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 103,
-                                                                column: 10,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Name {
-                                                            id: "A",
-                                                            ctx: Load,
-                                                        },
-                                                    },
-                                                    attr: "B",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            attr: "C",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    attr: "D",
-                                    ctx: Load,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 104,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 104,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 104,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 104,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 104,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 104,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 106,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 108,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 106,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 106,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 107,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 107,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSingleton {
-                            value: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 108,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 108,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 108,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 108,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 108,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 108,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 110,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 112,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 110,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 110,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 111,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 111,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 111,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 111,
-                                        column: 10,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 112,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 112,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 112,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 112,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 112,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 112,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 114,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 116,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 114,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 114,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 115,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 115,
-                                column: 14,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSingleton {
-                            value: Bool(
-                                false,
-                            ),
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 116,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 116,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 116,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 116,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 116,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 116,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 118,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 124,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 118,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 118,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 119,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 119,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 120,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 120,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 120,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 120,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 120,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 120,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 121,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 121,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 121,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 121,
-                                            column: 12,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 121,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 121,
-                                                    column: 12,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Str(
-                                                    "",
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 122,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 122,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 122,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 122,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 122,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 122,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 123,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 123,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchValue {
-                            value: Located {
-                                location: Location {
-                                    row: 123,
-                                    column: 9,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 123,
-                                        column: 11,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Str(
-                                        "",
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 124,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 124,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 124,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 124,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 124,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 124,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            2,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 126,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 128,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 126,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 126,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 127,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 127,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchAs {
-                            pattern: None,
-                            name: Some(
-                                "z",
-                            ),
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 128,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 128,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 128,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 128,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 128,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 128,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 130,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 132,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 130,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 130,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "w",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 131,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 131,
-                                column: 22,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 131,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 131,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "x",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 131,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 131,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "y",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 131,
-                                        column: 16,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 131,
-                                            column: 21,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: Some(
-                                            "rest",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 132,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 132,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 132,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 132,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "z",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 132,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 132,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 134,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 136,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 134,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 134,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 135,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 135,
-                                column: 39,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchOr {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 135,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 135,
-                                            column: 17,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 135,
-                                                    column: 10,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 135,
-                                                        column: 11,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 135,
-                                                            column: 10,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 135,
-                                                                column: 11,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                0,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                        ),
-                                        name: Some(
-                                            "z",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 135,
-                                        column: 20,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 135,
-                                            column: 28,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 135,
-                                                    column: 21,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 135,
-                                                        column: 22,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 135,
-                                                            column: 21,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 135,
-                                                                column: 22,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                1,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                        ),
-                                        name: Some(
-                                            "z",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 135,
-                                        column: 31,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 135,
-                                            column: 39,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 135,
-                                                    column: 32,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 135,
-                                                        column: 33,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 135,
-                                                            column: 32,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 135,
-                                                                column: 33,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                2,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                        ),
-                                        name: Some(
-                                            "z",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: Some(
-                        Located {
-                            location: Location {
-                                row: 135,
-                                column: 43,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 135,
-                                    column: 53,
-                                },
-                            ),
-                            custom: (),
-                            node: Compare {
-                                left: Located {
-                                    location: Location {
-                                        row: 135,
-                                        column: 43,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 135,
-                                            column: 44,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "z",
-                                        ctx: Load,
-                                    },
-                                },
-                                ops: [
-                                    Eq,
-                                ],
-                                comparators: [
-                                    Located {
-                                        location: Location {
-                                            row: 135,
-                                            column: 48,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 135,
-                                                column: 53,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: BinOp {
-                                            left: Located {
-                                                location: Location {
-                                                    row: 135,
-                                                    column: 48,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 135,
-                                                        column: 49,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "x",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            op: Mod,
-                                            right: Located {
-                                                location: Location {
-                                                    row: 135,
-                                                    column: 52,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 135,
-                                                        column: 53,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        2,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        },
-                                    },
-                                ],
-                            },
-                        },
-                    ),
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 136,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 136,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 136,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 136,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 136,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 136,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 138,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 144,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 138,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 138,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 139,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 139,
-                                column: 24,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchMapping {
-                            keys: [
-                                Located {
-                                    location: Location {
-                                        row: 139,
-                                        column: 10,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 139,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 139,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 139,
-                                            column: 23,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchSequence {
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 139,
-                                                    column: 14,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 139,
-                                                        column: 15,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 139,
-                                                            column: 14,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 139,
-                                                                column: 15,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                1,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                            Located {
-                                                location: Location {
-                                                    row: 139,
-                                                    column: 17,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 139,
-                                                        column: 18,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchValue {
-                                                    value: Located {
-                                                        location: Location {
-                                                            row: 139,
-                                                            column: 17,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 139,
-                                                                column: 18,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Constant {
-                                                            value: Int(
-                                                                2,
-                                                            ),
-                                                            kind: None,
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                            Located {
-                                                location: Location {
-                                                    row: 139,
-                                                    column: 20,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 139,
-                                                        column: 22,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchMapping {
-                                                    keys: [],
-                                                    patterns: [],
-                                                    rest: None,
-                                                },
-                                            },
-                                        ],
-                                    },
-                                },
-                            ],
-                            rest: None,
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 140,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 140,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 140,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 140,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 140,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 140,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 141,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 141,
-                                column: 78,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchOr {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 141,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 141,
-                                            column: 32,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [
-                                            Located {
-                                                location: Location {
-                                                    row: 141,
-                                                    column: 10,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 141,
-                                                        column: 11,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        0,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ],
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 141,
-                                                    column: 13,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 141,
-                                                        column: 31,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchOr {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 141,
-                                                                column: 13,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 141,
-                                                                    column: 23,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSequence {
-                                                                patterns: [
-                                                                    Located {
-                                                                        location: Location {
-                                                                            row: 141,
-                                                                            column: 14,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 141,
-                                                                                column: 15,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: MatchValue {
-                                                                            value: Located {
-                                                                                location: Location {
-                                                                                    row: 141,
-                                                                                    column: 14,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 141,
-                                                                                        column: 15,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Constant {
-                                                                                    value: Int(
-                                                                                        1,
-                                                                                    ),
-                                                                                    kind: None,
-                                                                                },
-                                                                            },
-                                                                        },
-                                                                    },
-                                                                    Located {
-                                                                        location: Location {
-                                                                            row: 141,
-                                                                            column: 17,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 141,
-                                                                                column: 18,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: MatchValue {
-                                                                            value: Located {
-                                                                                location: Location {
-                                                                                    row: 141,
-                                                                                    column: 17,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 141,
-                                                                                        column: 18,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Constant {
-                                                                                    value: Int(
-                                                                                        2,
-                                                                                    ),
-                                                                                    kind: None,
-                                                                                },
-                                                                            },
-                                                                        },
-                                                                    },
-                                                                    Located {
-                                                                        location: Location {
-                                                                            row: 141,
-                                                                            column: 20,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 141,
-                                                                                column: 22,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: MatchMapping {
-                                                                            keys: [],
-                                                                            patterns: [],
-                                                                            rest: None,
-                                                                        },
-                                                                    },
-                                                                ],
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 141,
-                                                                column: 26,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 141,
-                                                                    column: 31,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSingleton {
-                                                                value: Bool(
-                                                                    false,
-                                                                ),
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ],
-                                        rest: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 141,
-                                        column: 35,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 141,
-                                            column: 44,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [
-                                            Located {
-                                                location: Location {
-                                                    row: 141,
-                                                    column: 36,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 141,
-                                                        column: 37,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        1,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ],
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 141,
-                                                    column: 39,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 141,
-                                                        column: 43,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchSequence {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 141,
-                                                                column: 40,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 141,
-                                                                    column: 42,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchSequence {
-                                                                patterns: [],
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ],
-                                        rest: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 141,
-                                        column: 47,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 141,
-                                            column: 62,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [
-                                            Located {
-                                                location: Location {
-                                                    row: 141,
-                                                    column: 48,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 141,
-                                                        column: 49,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        0,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ],
-                                        patterns: [
-                                            Located {
-                                                location: Location {
-                                                    row: 141,
-                                                    column: 51,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 141,
-                                                        column: 61,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchSequence {
-                                                    patterns: [
-                                                        Located {
-                                                            location: Location {
-                                                                row: 141,
-                                                                column: 52,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 141,
-                                                                    column: 53,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchValue {
-                                                                value: Located {
-                                                                    location: Location {
-                                                                        row: 141,
-                                                                        column: 52,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 141,
-                                                                            column: 53,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            1,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 141,
-                                                                column: 55,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 141,
-                                                                    column: 56,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchValue {
-                                                                value: Located {
-                                                                    location: Location {
-                                                                        row: 141,
-                                                                        column: 55,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 141,
-                                                                            column: 56,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            2,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            },
-                                                        },
-                                                        Located {
-                                                            location: Location {
-                                                                row: 141,
-                                                                column: 58,
-                                                            },
-                                                            end_location: Some(
-                                                                Location {
-                                                                    row: 141,
-                                                                    column: 60,
-                                                                },
-                                                            ),
-                                                            custom: (),
-                                                            node: MatchMapping {
-                                                                keys: [],
-                                                                patterns: [],
-                                                                rest: None,
-                                                            },
-                                                        },
-                                                    ],
-                                                },
-                                            },
-                                        ],
-                                        rest: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 141,
-                                        column: 65,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 141,
-                                            column: 67,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchSequence {
-                                        patterns: [],
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 141,
-                                        column: 70,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 141,
-                                            column: 73,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 141,
-                                                column: 70,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 141,
-                                                    column: 73,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Str(
-                                                    "X",
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 141,
-                                        column: 76,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 141,
-                                            column: 78,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchMapping {
-                                        keys: [],
-                                        patterns: [],
-                                        rest: None,
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 142,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 142,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 142,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 142,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 142,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 142,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 143,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 143,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 144,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 144,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 144,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 144,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 144,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 144,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            2,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 146,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 148,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 146,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 146,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 146,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 146,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    0,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 146,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 146,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 146,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 146,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 147,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 147,
-                                column: 14,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 147,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 147,
-                                            column: 10,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 147,
-                                                column: 9,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 147,
-                                                    column: 10,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 147,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 147,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: Some(
-                                            "x",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 148,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 148,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 148,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 148,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 148,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 148,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 150,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 152,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 150,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 150,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 150,
-                                column: 7,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 150,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    0,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 150,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 150,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    1,
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 150,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 150,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 151,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 151,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 151,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 151,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchStar {
-                                        name: Some(
-                                            "x",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 151,
-                                        column: 13,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 151,
-                                            column: 14,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchValue {
-                                        value: Located {
-                                            location: Location {
-                                                row: 151,
-                                                column: 13,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 151,
-                                                    column: 14,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    2,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 152,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 152,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 152,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 152,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "y",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 152,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 152,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 154,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 156,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 154,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 154,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 155,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 155,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 155,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 155,
-                                            column: 10,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "y",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 156,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 156,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 156,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 156,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "z",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 156,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 156,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 158,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 160,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 158,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 160,
-                        column: 13,
-                    },
-                ),
-                custom: (),
-                node: Tuple {
-                    elts: [
-                        Located {
-                            location: Location {
-                                row: 158,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 158,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "w",
-                                ctx: Load,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 158,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 158,
-                                    column: 10,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Load,
-                            },
-                        },
-                    ],
-                    ctx: Load,
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 159,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 159,
-                                column: 13,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 159,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 159,
-                                            column: 10,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "y",
-                                        ),
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 159,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 159,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: None,
-                                        name: Some(
-                                            "z",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 160,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 160,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 160,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 160,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "v",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 160,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 160,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-    Located {
-        location: Location {
-            row: 162,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 164,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Match {
-            subject: Located {
-                location: Location {
-                    row: 162,
-                    column: 6,
-                },
-                end_location: Some(
-                    Location {
-                        row: 162,
-                        column: 12,
-                    },
-                ),
-                custom: (),
-                node: NamedExpr {
-                    target: Located {
-                        location: Location {
-                            row: 162,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 162,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "w",
-                            ctx: Store,
-                        },
-                    },
-                    value: Located {
-                        location: Location {
-                            row: 162,
-                            column: 11,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 162,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "x",
-                            ctx: Load,
-                        },
-                    },
-                },
-            },
-            cases: [
-                MatchCase {
-                    pattern: Located {
-                        location: Location {
-                            row: 163,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 163,
-                                column: 16,
-                            },
-                        ),
-                        custom: (),
-                        node: MatchSequence {
-                            patterns: [
-                                Located {
-                                    location: Location {
-                                        row: 163,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 163,
-                                            column: 15,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: MatchAs {
-                                        pattern: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 163,
-                                                    column: 9,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 163,
-                                                        column: 10,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: MatchAs {
-                                                    pattern: None,
-                                                    name: Some(
-                                                        "y",
-                                                    ),
-                                                },
-                                            },
-                                        ),
-                                        name: Some(
-                                            "v",
-                                        ),
-                                    },
-                                },
-                            ],
-                        },
-                    },
-                    guard: None,
-                    body: [
-                        Located {
-                            location: Location {
-                                row: 164,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 164,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Assign {
-                                targets: [
-                                    Located {
-                                        location: Location {
-                                            row: 164,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 164,
-                                                column: 9,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "z",
-                                            ctx: Store,
-                                        },
-                                    },
-                                ],
-                                value: Located {
-                                    location: Location {
-                                        row: 164,
-                                        column: 12,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 164,
-                                            column: 13,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                type_comment: None,
-                            },
-                        },
-                    ],
-                },
-            ],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__slice.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__slice.snap
deleted file mode 100644
index 2d404f064c..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__slice.snap
+++ /dev/null
@@ -1,115 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-Located {
-    location: Location {
-        row: 1,
-        column: 0,
-    },
-    end_location: Some(
-        Location {
-            row: 1,
-            column: 8,
-        },
-    ),
-    custom: (),
-    node: Subscript {
-        value: Located {
-            location: Location {
-                row: 1,
-                column: 0,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 1,
-                },
-            ),
-            custom: (),
-            node: Name {
-                id: "x",
-                ctx: Load,
-            },
-        },
-        slice: Located {
-            location: Location {
-                row: 1,
-                column: 2,
-            },
-            end_location: Some(
-                Location {
-                    row: 1,
-                    column: 7,
-                },
-            ),
-            custom: (),
-            node: Slice {
-                lower: Some(
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 2,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 3,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                ),
-                upper: Some(
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 4,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                2,
-                            ),
-                            kind: None,
-                        },
-                    },
-                ),
-                step: Some(
-                    Located {
-                        location: Location {
-                            row: 1,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                3,
-                            ),
-                            kind: None,
-                        },
-                    },
-                ),
-            },
-        },
-        ctx: Load,
-    },
-}
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__star_index.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__star_index.snap
deleted file mode 100644
index 897edb232a..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__star_index.snap
+++ /dev/null
@@ -1,641 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 36,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 11,
-                        },
-                    ),
-                    custom: (),
-                    node: Name {
-                        id: "array_slice",
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 14,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 36,
-                    },
-                ),
-                custom: (),
-                node: Subscript {
-                    value: Located {
-                        location: Location {
-                            row: 1,
-                            column: 14,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 19,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "array",
-                            ctx: Load,
-                        },
-                    },
-                    slice: Located {
-                        location: Location {
-                            row: 1,
-                            column: 20,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 35,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 20,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 21,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 23,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 31,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 24,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 31,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "indexes",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 33,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 35,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: UnaryOp {
-                                        op: USub,
-                                        operand: Located {
-                                            location: Location {
-                                                row: 1,
-                                                column: 34,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 1,
-                                                    column: 35,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 2,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 2,
-                column: 36,
-            },
-        ),
-        custom: (),
-        node: Assign {
-            targets: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 2,
-                            column: 22,
-                        },
-                    ),
-                    custom: (),
-                    node: Subscript {
-                        value: Located {
-                            location: Location {
-                                row: 2,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 5,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "array",
-                                ctx: Load,
-                            },
-                        },
-                        slice: Located {
-                            location: Location {
-                                row: 2,
-                                column: 6,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 21,
-                                },
-                            ),
-                            custom: (),
-                            node: Tuple {
-                                elts: [
-                                    Located {
-                                        location: Location {
-                                            row: 2,
-                                            column: 6,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 2,
-                                                column: 7,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Constant {
-                                            value: Int(
-                                                0,
-                                            ),
-                                            kind: None,
-                                        },
-                                    },
-                                    Located {
-                                        location: Location {
-                                            row: 2,
-                                            column: 9,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 2,
-                                                column: 17,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Starred {
-                                            value: Located {
-                                                location: Location {
-                                                    row: 2,
-                                                    column: 10,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 2,
-                                                        column: 17,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "indexes",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            ctx: Load,
-                                        },
-                                    },
-                                    Located {
-                                        location: Location {
-                                            row: 2,
-                                            column: 19,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 2,
-                                                column: 21,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: UnaryOp {
-                                            op: USub,
-                                            operand: Located {
-                                                location: Location {
-                                                    row: 2,
-                                                    column: 20,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 2,
-                                                        column: 21,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        1,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        },
-                                    },
-                                ],
-                                ctx: Load,
-                            },
-                        },
-                        ctx: Store,
-                    },
-                },
-            ],
-            value: Located {
-                location: Location {
-                    row: 2,
-                    column: 25,
-                },
-                end_location: Some(
-                    Location {
-                        row: 2,
-                        column: 36,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "array_slice",
-                    ctx: Load,
-                },
-            },
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 3,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 3,
-                column: 45,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 3,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 3,
-                        column: 45,
-                    },
-                ),
-                custom: (),
-                node: Subscript {
-                    value: Located {
-                        location: Location {
-                            row: 3,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 3,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "array",
-                            ctx: Load,
-                        },
-                    },
-                    slice: Located {
-                        location: Location {
-                            row: 3,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 3,
-                                column: 44,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 3,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 3,
-                                            column: 24,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 3,
-                                                column: 7,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 3,
-                                                    column: 24,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "indexes_to_select",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 3,
-                                        column: 26,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 3,
-                                            column: 44,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 3,
-                                                column: 27,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 3,
-                                                    column: 44,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "indexes_to_select",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    ctx: Load,
-                },
-            },
-        },
-    },
-    Located {
-        location: Location {
-            row: 4,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 4,
-                column: 30,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 4,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 4,
-                        column: 30,
-                    },
-                ),
-                custom: (),
-                node: Subscript {
-                    value: Located {
-                        location: Location {
-                            row: 4,
-                            column: 0,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 4,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Name {
-                            id: "array",
-                            ctx: Load,
-                        },
-                    },
-                    slice: Located {
-                        location: Location {
-                            row: 4,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 4,
-                                column: 29,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 4,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 4,
-                                            column: 9,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Slice {
-                                        lower: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 4,
-                                                    column: 6,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 4,
-                                                        column: 7,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        3,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ),
-                                        upper: Some(
-                                            Located {
-                                                location: Location {
-                                                    row: 4,
-                                                    column: 8,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 4,
-                                                        column: 9,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Constant {
-                                                    value: Int(
-                                                        5,
-                                                    ),
-                                                    kind: None,
-                                                },
-                                            },
-                                        ),
-                                        step: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 4,
-                                        column: 11,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 4,
-                                            column: 29,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 4,
-                                                column: 12,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 4,
-                                                    column: 29,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "indexes_to_select",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    ctx: Load,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__try.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__try.snap
deleted file mode 100644
index 5b6037ae20..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__try.snap
+++ /dev/null
@@ -1,487 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 6,
-                column: 30,
-            },
-        ),
-        custom: (),
-        node: Try {
-            body: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 4,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 2,
-                            column: 23,
-                        },
-                    ),
-                    custom: (),
-                    node: Raise {
-                        exc: Some(
-                            Located {
-                                location: Location {
-                                    row: 2,
-                                    column: 10,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 2,
-                                        column: 23,
-                                    },
-                                ),
-                                custom: (),
-                                node: Call {
-                                    func: Located {
-                                        location: Location {
-                                            row: 2,
-                                            column: 10,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 2,
-                                                column: 20,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "ValueError",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    args: [
-                                        Located {
-                                            location: Location {
-                                                row: 2,
-                                                column: 21,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 2,
-                                                    column: 22,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    ],
-                                    keywords: [],
-                                },
-                            },
-                        ),
-                        cause: None,
-                    },
-                },
-            ],
-            handlers: [
-                Located {
-                    location: Location {
-                        row: 3,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 4,
-                            column: 30,
-                        },
-                    ),
-                    custom: (),
-                    node: ExceptHandler {
-                        type_: Some(
-                            Located {
-                                location: Location {
-                                    row: 3,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 3,
-                                        column: 16,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "TypeError",
-                                    ctx: Load,
-                                },
-                            },
-                        ),
-                        name: Some(
-                            "e",
-                        ),
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 4,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 4,
-                                        column: 30,
-                                    },
-                                ),
-                                custom: (),
-                                node: Expr {
-                                    value: Located {
-                                        location: Location {
-                                            row: 4,
-                                            column: 4,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 4,
-                                                column: 30,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Call {
-                                            func: Located {
-                                                location: Location {
-                                                    row: 4,
-                                                    column: 4,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 4,
-                                                        column: 9,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "print",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            args: [
-                                                Located {
-                                                    location: Location {
-                                                        row: 4,
-                                                        column: 10,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 4,
-                                                            column: 29,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: JoinedStr {
-                                                        values: [
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 4,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 4,
-                                                                        column: 29,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Constant {
-                                                                    value: Str(
-                                                                        "caught ",
-                                                                    ),
-                                                                    kind: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 4,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 4,
-                                                                        column: 29,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: FormattedValue {
-                                                                    value: Located {
-                                                                        location: Location {
-                                                                            row: 4,
-                                                                            column: 20,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 4,
-                                                                                column: 27,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: Call {
-                                                                            func: Located {
-                                                                                location: Location {
-                                                                                    row: 4,
-                                                                                    column: 20,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 4,
-                                                                                        column: 24,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Name {
-                                                                                    id: "type",
-                                                                                    ctx: Load,
-                                                                                },
-                                                                            },
-                                                                            args: [
-                                                                                Located {
-                                                                                    location: Location {
-                                                                                        row: 4,
-                                                                                        column: 25,
-                                                                                    },
-                                                                                    end_location: Some(
-                                                                                        Location {
-                                                                                            row: 4,
-                                                                                            column: 26,
-                                                                                        },
-                                                                                    ),
-                                                                                    custom: (),
-                                                                                    node: Name {
-                                                                                        id: "e",
-                                                                                        ctx: Load,
-                                                                                    },
-                                                                                },
-                                                                            ],
-                                                                            keywords: [],
-                                                                        },
-                                                                    },
-                                                                    conversion: 0,
-                                                                    format_spec: None,
-                                                                },
-                                                            },
-                                                        ],
-                                                    },
-                                                },
-                                            ],
-                                            keywords: [],
-                                        },
-                                    },
-                                },
-                            },
-                        ],
-                    },
-                },
-                Located {
-                    location: Location {
-                        row: 5,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 6,
-                            column: 30,
-                        },
-                    ),
-                    custom: (),
-                    node: ExceptHandler {
-                        type_: Some(
-                            Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 7,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 14,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "OSError",
-                                    ctx: Load,
-                                },
-                            },
-                        ),
-                        name: Some(
-                            "e",
-                        ),
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 30,
-                                    },
-                                ),
-                                custom: (),
-                                node: Expr {
-                                    value: Located {
-                                        location: Location {
-                                            row: 6,
-                                            column: 4,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 6,
-                                                column: 30,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Call {
-                                            func: Located {
-                                                location: Location {
-                                                    row: 6,
-                                                    column: 4,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 6,
-                                                        column: 9,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "print",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            args: [
-                                                Located {
-                                                    location: Location {
-                                                        row: 6,
-                                                        column: 10,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 6,
-                                                            column: 29,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: JoinedStr {
-                                                        values: [
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 6,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 6,
-                                                                        column: 29,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Constant {
-                                                                    value: Str(
-                                                                        "caught ",
-                                                                    ),
-                                                                    kind: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 6,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 6,
-                                                                        column: 29,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: FormattedValue {
-                                                                    value: Located {
-                                                                        location: Location {
-                                                                            row: 6,
-                                                                            column: 20,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 6,
-                                                                                column: 27,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: Call {
-                                                                            func: Located {
-                                                                                location: Location {
-                                                                                    row: 6,
-                                                                                    column: 20,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 6,
-                                                                                        column: 24,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Name {
-                                                                                    id: "type",
-                                                                                    ctx: Load,
-                                                                                },
-                                                                            },
-                                                                            args: [
-                                                                                Located {
-                                                                                    location: Location {
-                                                                                        row: 6,
-                                                                                        column: 25,
-                                                                                    },
-                                                                                    end_location: Some(
-                                                                                        Location {
-                                                                                            row: 6,
-                                                                                            column: 26,
-                                                                                        },
-                                                                                    ),
-                                                                                    custom: (),
-                                                                                    node: Name {
-                                                                                        id: "e",
-                                                                                        ctx: Load,
-                                                                                    },
-                                                                                },
-                                                                            ],
-                                                                            keywords: [],
-                                                                        },
-                                                                    },
-                                                                    conversion: 0,
-                                                                    format_spec: None,
-                                                                },
-                                                            },
-                                                        ],
-                                                    },
-                                                },
-                                            ],
-                                            keywords: [],
-                                        },
-                                    },
-                                },
-                            },
-                        ],
-                    },
-                },
-            ],
-            orelse: [],
-            finalbody: [],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__try_star.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__try_star.snap
deleted file mode 100644
index 472f316b58..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__try_star.snap
+++ /dev/null
@@ -1,861 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 7,
-                column: 57,
-            },
-        ),
-        custom: (),
-        node: TryStar {
-            body: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 4,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 3,
-                            column: 62,
-                        },
-                    ),
-                    custom: (),
-                    node: Raise {
-                        exc: Some(
-                            Located {
-                                location: Location {
-                                    row: 2,
-                                    column: 10,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 3,
-                                        column: 62,
-                                    },
-                                ),
-                                custom: (),
-                                node: Call {
-                                    func: Located {
-                                        location: Location {
-                                            row: 2,
-                                            column: 10,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 2,
-                                                column: 24,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "ExceptionGroup",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    args: [
-                                        Located {
-                                            location: Location {
-                                                row: 2,
-                                                column: 25,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 2,
-                                                    column: 29,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Str(
-                                                    "eg",
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                        Located {
-                                            location: Location {
-                                                row: 3,
-                                                column: 8,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 3,
-                                                    column: 61,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: List {
-                                                elts: [
-                                                    Located {
-                                                        location: Location {
-                                                            row: 3,
-                                                            column: 9,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 3,
-                                                                column: 22,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Call {
-                                                            func: Located {
-                                                                location: Location {
-                                                                    row: 3,
-                                                                    column: 9,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 3,
-                                                                        column: 19,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Name {
-                                                                    id: "ValueError",
-                                                                    ctx: Load,
-                                                                },
-                                                            },
-                                                            args: [
-                                                                Located {
-                                                                    location: Location {
-                                                                        row: 3,
-                                                                        column: 20,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 3,
-                                                                            column: 21,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            1,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            ],
-                                                            keywords: [],
-                                                        },
-                                                    },
-                                                    Located {
-                                                        location: Location {
-                                                            row: 3,
-                                                            column: 24,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 3,
-                                                                column: 36,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Call {
-                                                            func: Located {
-                                                                location: Location {
-                                                                    row: 3,
-                                                                    column: 24,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 3,
-                                                                        column: 33,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Name {
-                                                                    id: "TypeError",
-                                                                    ctx: Load,
-                                                                },
-                                                            },
-                                                            args: [
-                                                                Located {
-                                                                    location: Location {
-                                                                        row: 3,
-                                                                        column: 34,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 3,
-                                                                            column: 35,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            2,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            ],
-                                                            keywords: [],
-                                                        },
-                                                    },
-                                                    Located {
-                                                        location: Location {
-                                                            row: 3,
-                                                            column: 38,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 3,
-                                                                column: 48,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Call {
-                                                            func: Located {
-                                                                location: Location {
-                                                                    row: 3,
-                                                                    column: 38,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 3,
-                                                                        column: 45,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Name {
-                                                                    id: "OSError",
-                                                                    ctx: Load,
-                                                                },
-                                                            },
-                                                            args: [
-                                                                Located {
-                                                                    location: Location {
-                                                                        row: 3,
-                                                                        column: 46,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 3,
-                                                                            column: 47,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            3,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            ],
-                                                            keywords: [],
-                                                        },
-                                                    },
-                                                    Located {
-                                                        location: Location {
-                                                            row: 3,
-                                                            column: 50,
-                                                        },
-                                                        end_location: Some(
-                                                            Location {
-                                                                row: 3,
-                                                                column: 60,
-                                                            },
-                                                        ),
-                                                        custom: (),
-                                                        node: Call {
-                                                            func: Located {
-                                                                location: Location {
-                                                                    row: 3,
-                                                                    column: 50,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 3,
-                                                                        column: 57,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Name {
-                                                                    id: "OSError",
-                                                                    ctx: Load,
-                                                                },
-                                                            },
-                                                            args: [
-                                                                Located {
-                                                                    location: Location {
-                                                                        row: 3,
-                                                                        column: 58,
-                                                                    },
-                                                                    end_location: Some(
-                                                                        Location {
-                                                                            row: 3,
-                                                                            column: 59,
-                                                                        },
-                                                                    ),
-                                                                    custom: (),
-                                                                    node: Constant {
-                                                                        value: Int(
-                                                                            4,
-                                                                        ),
-                                                                        kind: None,
-                                                                    },
-                                                                },
-                                                            ],
-                                                            keywords: [],
-                                                        },
-                                                    },
-                                                ],
-                                                ctx: Load,
-                                            },
-                                        },
-                                    ],
-                                    keywords: [],
-                                },
-                            },
-                        ),
-                        cause: None,
-                    },
-                },
-            ],
-            handlers: [
-                Located {
-                    location: Location {
-                        row: 4,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 5,
-                            column: 57,
-                        },
-                    ),
-                    custom: (),
-                    node: ExceptHandler {
-                        type_: Some(
-                            Located {
-                                location: Location {
-                                    row: 4,
-                                    column: 8,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 4,
-                                        column: 17,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "TypeError",
-                                    ctx: Load,
-                                },
-                            },
-                        ),
-                        name: Some(
-                            "e",
-                        ),
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 57,
-                                    },
-                                ),
-                                custom: (),
-                                node: Expr {
-                                    value: Located {
-                                        location: Location {
-                                            row: 5,
-                                            column: 4,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 5,
-                                                column: 57,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Call {
-                                            func: Located {
-                                                location: Location {
-                                                    row: 5,
-                                                    column: 4,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 5,
-                                                        column: 9,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "print",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            args: [
-                                                Located {
-                                                    location: Location {
-                                                        row: 5,
-                                                        column: 10,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 5,
-                                                            column: 56,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: JoinedStr {
-                                                        values: [
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 5,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 5,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Constant {
-                                                                    value: Str(
-                                                                        "caught ",
-                                                                    ),
-                                                                    kind: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 5,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 5,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: FormattedValue {
-                                                                    value: Located {
-                                                                        location: Location {
-                                                                            row: 5,
-                                                                            column: 20,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 5,
-                                                                                column: 27,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: Call {
-                                                                            func: Located {
-                                                                                location: Location {
-                                                                                    row: 5,
-                                                                                    column: 20,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 5,
-                                                                                        column: 24,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Name {
-                                                                                    id: "type",
-                                                                                    ctx: Load,
-                                                                                },
-                                                                            },
-                                                                            args: [
-                                                                                Located {
-                                                                                    location: Location {
-                                                                                        row: 5,
-                                                                                        column: 25,
-                                                                                    },
-                                                                                    end_location: Some(
-                                                                                        Location {
-                                                                                            row: 5,
-                                                                                            column: 26,
-                                                                                        },
-                                                                                    ),
-                                                                                    custom: (),
-                                                                                    node: Name {
-                                                                                        id: "e",
-                                                                                        ctx: Load,
-                                                                                    },
-                                                                                },
-                                                                            ],
-                                                                            keywords: [],
-                                                                        },
-                                                                    },
-                                                                    conversion: 0,
-                                                                    format_spec: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 5,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 5,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Constant {
-                                                                    value: Str(
-                                                                        " with nested ",
-                                                                    ),
-                                                                    kind: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 5,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 5,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: FormattedValue {
-                                                                    value: Located {
-                                                                        location: Location {
-                                                                            row: 5,
-                                                                            column: 42,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 5,
-                                                                                column: 54,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: Attribute {
-                                                                            value: Located {
-                                                                                location: Location {
-                                                                                    row: 5,
-                                                                                    column: 42,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 5,
-                                                                                        column: 43,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Name {
-                                                                                    id: "e",
-                                                                                    ctx: Load,
-                                                                                },
-                                                                            },
-                                                                            attr: "exceptions",
-                                                                            ctx: Load,
-                                                                        },
-                                                                    },
-                                                                    conversion: 0,
-                                                                    format_spec: None,
-                                                                },
-                                                            },
-                                                        ],
-                                                    },
-                                                },
-                                            ],
-                                            keywords: [],
-                                        },
-                                    },
-                                },
-                            },
-                        ],
-                    },
-                },
-                Located {
-                    location: Location {
-                        row: 6,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 7,
-                            column: 57,
-                        },
-                    ),
-                    custom: (),
-                    node: ExceptHandler {
-                        type_: Some(
-                            Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 8,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 15,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "OSError",
-                                    ctx: Load,
-                                },
-                            },
-                        ),
-                        name: Some(
-                            "e",
-                        ),
-                        body: [
-                            Located {
-                                location: Location {
-                                    row: 7,
-                                    column: 4,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 7,
-                                        column: 57,
-                                    },
-                                ),
-                                custom: (),
-                                node: Expr {
-                                    value: Located {
-                                        location: Location {
-                                            row: 7,
-                                            column: 4,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 7,
-                                                column: 57,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Call {
-                                            func: Located {
-                                                location: Location {
-                                                    row: 7,
-                                                    column: 4,
-                                                },
-                                                end_location: Some(
-                                                    Location {
-                                                        row: 7,
-                                                        column: 9,
-                                                    },
-                                                ),
-                                                custom: (),
-                                                node: Name {
-                                                    id: "print",
-                                                    ctx: Load,
-                                                },
-                                            },
-                                            args: [
-                                                Located {
-                                                    location: Location {
-                                                        row: 7,
-                                                        column: 10,
-                                                    },
-                                                    end_location: Some(
-                                                        Location {
-                                                            row: 7,
-                                                            column: 56,
-                                                        },
-                                                    ),
-                                                    custom: (),
-                                                    node: JoinedStr {
-                                                        values: [
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 7,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 7,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Constant {
-                                                                    value: Str(
-                                                                        "caught ",
-                                                                    ),
-                                                                    kind: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 7,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 7,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: FormattedValue {
-                                                                    value: Located {
-                                                                        location: Location {
-                                                                            row: 7,
-                                                                            column: 20,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 7,
-                                                                                column: 27,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: Call {
-                                                                            func: Located {
-                                                                                location: Location {
-                                                                                    row: 7,
-                                                                                    column: 20,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 7,
-                                                                                        column: 24,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Name {
-                                                                                    id: "type",
-                                                                                    ctx: Load,
-                                                                                },
-                                                                            },
-                                                                            args: [
-                                                                                Located {
-                                                                                    location: Location {
-                                                                                        row: 7,
-                                                                                        column: 25,
-                                                                                    },
-                                                                                    end_location: Some(
-                                                                                        Location {
-                                                                                            row: 7,
-                                                                                            column: 26,
-                                                                                        },
-                                                                                    ),
-                                                                                    custom: (),
-                                                                                    node: Name {
-                                                                                        id: "e",
-                                                                                        ctx: Load,
-                                                                                    },
-                                                                                },
-                                                                            ],
-                                                                            keywords: [],
-                                                                        },
-                                                                    },
-                                                                    conversion: 0,
-                                                                    format_spec: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 7,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 7,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: Constant {
-                                                                    value: Str(
-                                                                        " with nested ",
-                                                                    ),
-                                                                    kind: None,
-                                                                },
-                                                            },
-                                                            Located {
-                                                                location: Location {
-                                                                    row: 7,
-                                                                    column: 10,
-                                                                },
-                                                                end_location: Some(
-                                                                    Location {
-                                                                        row: 7,
-                                                                        column: 56,
-                                                                    },
-                                                                ),
-                                                                custom: (),
-                                                                node: FormattedValue {
-                                                                    value: Located {
-                                                                        location: Location {
-                                                                            row: 7,
-                                                                            column: 42,
-                                                                        },
-                                                                        end_location: Some(
-                                                                            Location {
-                                                                                row: 7,
-                                                                                column: 54,
-                                                                            },
-                                                                        ),
-                                                                        custom: (),
-                                                                        node: Attribute {
-                                                                            value: Located {
-                                                                                location: Location {
-                                                                                    row: 7,
-                                                                                    column: 42,
-                                                                                },
-                                                                                end_location: Some(
-                                                                                    Location {
-                                                                                        row: 7,
-                                                                                        column: 43,
-                                                                                    },
-                                                                                ),
-                                                                                custom: (),
-                                                                                node: Name {
-                                                                                    id: "e",
-                                                                                    ctx: Load,
-                                                                                },
-                                                                            },
-                                                                            attr: "exceptions",
-                                                                            ctx: Load,
-                                                                        },
-                                                                    },
-                                                                    conversion: 0,
-                                                                    format_spec: None,
-                                                                },
-                                                            },
-                                                        ],
-                                                    },
-                                                },
-                                            ],
-                                            keywords: [],
-                                        },
-                                    },
-                                },
-                            },
-                        ],
-                    },
-                },
-            ],
-            orelse: [],
-            finalbody: [],
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__variadic_generics.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__variadic_generics.snap
deleted file mode 100644
index a6875c3ba6..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__variadic_generics.snap
+++ /dev/null
@@ -1,188 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 2,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 2,
-                column: 48,
-            },
-        ),
-        custom: (),
-        node: FunctionDef {
-            name: "args_to_tuple",
-            args: Arguments {
-                posonlyargs: [],
-                args: [],
-                vararg: Some(
-                    Located {
-                        location: Location {
-                            row: 2,
-                            column: 19,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 2,
-                                column: 28,
-                            },
-                        ),
-                        custom: (),
-                        node: ArgData {
-                            arg: "args",
-                            annotation: Some(
-                                Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 25,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 28,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 2,
-                                                column: 26,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 2,
-                                                    column: 28,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "Ts",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ),
-                            type_comment: None,
-                        },
-                    },
-                ),
-                kwonlyargs: [],
-                kw_defaults: [],
-                kwarg: None,
-                defaults: [],
-            },
-            body: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 45,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 2,
-                            column: 48,
-                        },
-                    ),
-                    custom: (),
-                    node: Expr {
-                        value: Located {
-                            location: Location {
-                                row: 2,
-                                column: 45,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 48,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Ellipsis,
-                                kind: None,
-                            },
-                        },
-                    },
-                },
-            ],
-            decorator_list: [],
-            returns: Some(
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 33,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 2,
-                            column: 43,
-                        },
-                    ),
-                    custom: (),
-                    node: Subscript {
-                        value: Located {
-                            location: Location {
-                                row: 2,
-                                column: 33,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 38,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "Tuple",
-                                ctx: Load,
-                            },
-                        },
-                        slice: Located {
-                            location: Location {
-                                row: 2,
-                                column: 39,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 42,
-                                },
-                            ),
-                            custom: (),
-                            node: Starred {
-                                value: Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 40,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 42,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "Ts",
-                                        ctx: Load,
-                                    },
-                                },
-                                ctx: Load,
-                            },
-                        },
-                        ctx: Load,
-                    },
-                },
-            ),
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__with_statement.snap b/compiler/parser/src/snapshots/rustpython_parser__parser__tests__with_statement.snap
deleted file mode 100644
index 8ac056bbec..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__parser__tests__with_statement.snap
+++ /dev/null
@@ -1,2485 +0,0 @@
----
-source: compiler/parser/src/parser.rs
-expression: "parse_program(source, \"<test>\").unwrap()"
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 12,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 1,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 8,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 12,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 2,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 2,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 2,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 2,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 2,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 2,
-                        column: 13,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 2,
-                            column: 17,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 3,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 3,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 3,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 3,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 3,
-                            column: 8,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 3,
-                                column: 9,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 3,
-                        column: 11,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 3,
-                            column: 15,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 4,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 4,
-                column: 25,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 4,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 4,
-                                column: 6,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 4,
-                                column: 10,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 4,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 4,
-                            column: 13,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 4,
-                                column: 14,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 4,
-                                column: 18,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 4,
-                                    column: 19,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "y",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 4,
-                        column: 21,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 4,
-                            column: 25,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 5,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 5,
-                column: 24,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 5,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 5,
-                                column: 18,
-                            },
-                        ),
-                        custom: (),
-                        node: IfExp {
-                            test: Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 10,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 11,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        1,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                            body: Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 5,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 6,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                            orelse: Located {
-                                location: Location {
-                                    row: 5,
-                                    column: 17,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 5,
-                                        column: 18,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        2,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 5,
-                        column: 20,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 5,
-                            column: 24,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 6,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 6,
-                column: 29,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 6,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 6,
-                                column: 18,
-                            },
-                        ),
-                        custom: (),
-                        node: IfExp {
-                            test: Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 10,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 11,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        1,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                            body: Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 5,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 6,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                            orelse: Located {
-                                location: Location {
-                                    row: 6,
-                                    column: 17,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 6,
-                                        column: 18,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        2,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 6,
-                                column: 22,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 6,
-                                    column: 23,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 6,
-                        column: 25,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 6,
-                            column: 29,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 7,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 7,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 7,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 7,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 7,
-                        column: 9,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 7,
-                            column: 13,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 8,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 8,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 8,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 8,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 8,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 8,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 8,
-                        column: 14,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 8,
-                            column: 18,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 9,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 9,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 9,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 9,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 9,
-                        column: 10,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 9,
-                            column: 14,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 10,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 10,
-                column: 19,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 10,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 10,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 10,
-                                column: 12,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 10,
-                                    column: 13,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 10,
-                        column: 15,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 10,
-                            column: 19,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 11,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 11,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 11,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 11,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 11,
-                        column: 11,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 11,
-                            column: 15,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 12,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 12,
-                column: 20,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 12,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 12,
-                                column: 9,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 12,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 12,
-                                            column: 7,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 12,
-                                column: 13,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 12,
-                                    column: 14,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 12,
-                        column: 16,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 12,
-                            column: 20,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 13,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 13,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 13,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 13,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 13,
-                            column: 9,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 13,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 13,
-                        column: 13,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 13,
-                            column: 17,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 14,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 14,
-                column: 22,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 14,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 14,
-                                column: 11,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 14,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 14,
-                                            column: 7,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 14,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 14,
-                                            column: 10,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            1,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 14,
-                                column: 15,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 14,
-                                    column: 16,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 14,
-                        column: 18,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 14,
-                            column: 22,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 15,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 15,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 15,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 15,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 15,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 15,
-                                            column: 8,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 15,
-                                                column: 7,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 15,
-                                                    column: 8,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 15,
-                        column: 12,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 15,
-                            column: 16,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 16,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 16,
-                column: 21,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 16,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 16,
-                                column: 10,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 16,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 16,
-                                            column: 8,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 16,
-                                                column: 7,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 16,
-                                                    column: 8,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 16,
-                                column: 14,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 16,
-                                    column: 15,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 16,
-                        column: 17,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 16,
-                            column: 21,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 17,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 17,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 17,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 17,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 17,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 17,
-                                            column: 7,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 17,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 17,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 17,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 17,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 17,
-                        column: 14,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 17,
-                            column: 18,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 18,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 18,
-                column: 23,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 18,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 18,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 18,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 18,
-                                            column: 7,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Int(
-                                            0,
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 18,
-                                        column: 9,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 18,
-                                            column: 11,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Starred {
-                                        value: Located {
-                                            location: Location {
-                                                row: 18,
-                                                column: 10,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 18,
-                                                    column: 11,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Load,
-                                            },
-                                        },
-                                        ctx: Load,
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 18,
-                                column: 16,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 18,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 18,
-                        column: 19,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 18,
-                            column: 23,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 19,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 19,
-                column: 19,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 19,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 19,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: NamedExpr {
-                            target: Located {
-                                location: Location {
-                                    row: 19,
-                                    column: 6,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 19,
-                                        column: 7,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "a",
-                                    ctx: Store,
-                                },
-                            },
-                            value: Located {
-                                location: Location {
-                                    row: 19,
-                                    column: 11,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 19,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 19,
-                        column: 15,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 19,
-                            column: 19,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 20,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 20,
-                column: 24,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 20,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 20,
-                                column: 12,
-                            },
-                        ),
-                        custom: (),
-                        node: NamedExpr {
-                            target: Located {
-                                location: Location {
-                                    row: 20,
-                                    column: 6,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 20,
-                                        column: 7,
-                                    },
-                                ),
-                                custom: (),
-                                node: Name {
-                                    id: "a",
-                                    ctx: Store,
-                                },
-                            },
-                            value: Located {
-                                location: Location {
-                                    row: 20,
-                                    column: 11,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 20,
-                                        column: 12,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Int(
-                                        0,
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 20,
-                                column: 17,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 20,
-                                    column: 18,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 20,
-                        column: 20,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 20,
-                            column: 24,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 21,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 21,
-                column: 27,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 21,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 21,
-                                column: 21,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 21,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 21,
-                                            column: 12,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: NamedExpr {
-                                        target: Located {
-                                            location: Location {
-                                                row: 21,
-                                                column: 6,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 21,
-                                                    column: 7,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Store,
-                                            },
-                                        },
-                                        value: Located {
-                                            location: Location {
-                                                row: 21,
-                                                column: 11,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 21,
-                                                    column: 12,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 21,
-                                        column: 14,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 21,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: NamedExpr {
-                                        target: Located {
-                                            location: Location {
-                                                row: 21,
-                                                column: 14,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 21,
-                                                    column: 15,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "b",
-                                                ctx: Store,
-                                            },
-                                        },
-                                        value: Located {
-                                            location: Location {
-                                                row: 21,
-                                                column: 19,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 21,
-                                                    column: 20,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: None,
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 21,
-                        column: 23,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 21,
-                            column: 27,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 22,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 22,
-                column: 32,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 22,
-                            column: 5,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 22,
-                                column: 21,
-                            },
-                        ),
-                        custom: (),
-                        node: Tuple {
-                            elts: [
-                                Located {
-                                    location: Location {
-                                        row: 22,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 22,
-                                            column: 12,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: NamedExpr {
-                                        target: Located {
-                                            location: Location {
-                                                row: 22,
-                                                column: 6,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 22,
-                                                    column: 7,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "a",
-                                                ctx: Store,
-                                            },
-                                        },
-                                        value: Located {
-                                            location: Location {
-                                                row: 22,
-                                                column: 11,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 22,
-                                                    column: 12,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    0,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                                Located {
-                                    location: Location {
-                                        row: 22,
-                                        column: 14,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 22,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: NamedExpr {
-                                        target: Located {
-                                            location: Location {
-                                                row: 22,
-                                                column: 14,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 22,
-                                                    column: 15,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Name {
-                                                id: "b",
-                                                ctx: Store,
-                                            },
-                                        },
-                                        value: Located {
-                                            location: Location {
-                                                row: 22,
-                                                column: 19,
-                                            },
-                                            end_location: Some(
-                                                Location {
-                                                    row: 22,
-                                                    column: 20,
-                                                },
-                                            ),
-                                            custom: (),
-                                            node: Constant {
-                                                value: Int(
-                                                    1,
-                                                ),
-                                                kind: None,
-                                            },
-                                        },
-                                    },
-                                },
-                            ],
-                            ctx: Load,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 22,
-                                column: 25,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 22,
-                                    column: 26,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "x",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 22,
-                        column: 28,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 22,
-                            column: 32,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 23,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 23,
-                column: 19,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 23,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 23,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 23,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 23,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "a",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 23,
-                        column: 15,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 23,
-                            column: 19,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 24,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 24,
-                column: 20,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 24,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 24,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 24,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 24,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "a",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 24,
-                        column: 16,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 24,
-                            column: 20,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 25,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 25,
-                column: 27,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 25,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 25,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 25,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 25,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "a",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 25,
-                            column: 14,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 25,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 25,
-                                column: 19,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 25,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "b",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 25,
-                        column: 23,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 25,
-                            column: 27,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 26,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 26,
-                column: 28,
-            },
-        ),
-        custom: (),
-        node: With {
-            items: [
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 26,
-                            column: 6,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 26,
-                                column: 7,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                0,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 26,
-                                column: 11,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 26,
-                                    column: 12,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "a",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-                Withitem {
-                    context_expr: Located {
-                        location: Location {
-                            row: 26,
-                            column: 14,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 26,
-                                column: 15,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    optional_vars: Some(
-                        Located {
-                            location: Location {
-                                row: 26,
-                                column: 19,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 26,
-                                    column: 20,
-                                },
-                            ),
-                            custom: (),
-                            node: Name {
-                                id: "b",
-                                ctx: Store,
-                            },
-                        },
-                    ),
-                },
-            ],
-            body: [
-                Located {
-                    location: Location {
-                        row: 26,
-                        column: 24,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 26,
-                            column: 28,
-                        },
-                    ),
-                    custom: (),
-                    node: Pass,
-                },
-            ],
-            type_comment: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__backspace_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__backspace_alias.snap
deleted file mode 100644
index eea9786970..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__backspace_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{8}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__bell_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__bell_alias.snap
deleted file mode 100644
index cf04fd68fd..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__bell_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 9,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 9,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{7}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__carriage_return_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__carriage_return_alias.snap
deleted file mode 100644
index 33a84d2291..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__carriage_return_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 21,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 21,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\r",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__character_tabulation_with_justification_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__character_tabulation_with_justification_alias.snap
deleted file mode 100644
index 282706f8b9..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__character_tabulation_with_justification_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 45,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 45,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{89}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__delete_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__delete_alias.snap
deleted file mode 100644
index 06e74d248a..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__delete_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 12,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 12,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{7f}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__double_quoted_byte.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__double_quoted_byte.snap
deleted file mode 100644
index 0d8c8c9ab1..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__double_quoted_byte.snap
+++ /dev/null
@@ -1,297 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 738,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 738,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Bytes(
-                        [
-                            0,
-                            1,
-                            2,
-                            3,
-                            4,
-                            5,
-                            6,
-                            7,
-                            8,
-                            9,
-                            10,
-                            11,
-                            12,
-                            13,
-                            14,
-                            15,
-                            16,
-                            17,
-                            18,
-                            19,
-                            20,
-                            21,
-                            22,
-                            23,
-                            24,
-                            25,
-                            26,
-                            27,
-                            28,
-                            29,
-                            30,
-                            31,
-                            32,
-                            33,
-                            34,
-                            35,
-                            36,
-                            37,
-                            38,
-                            39,
-                            40,
-                            41,
-                            42,
-                            43,
-                            44,
-                            45,
-                            46,
-                            47,
-                            48,
-                            49,
-                            50,
-                            51,
-                            52,
-                            53,
-                            54,
-                            55,
-                            56,
-                            57,
-                            58,
-                            59,
-                            60,
-                            61,
-                            62,
-                            63,
-                            64,
-                            65,
-                            66,
-                            67,
-                            68,
-                            69,
-                            70,
-                            71,
-                            72,
-                            73,
-                            74,
-                            75,
-                            76,
-                            77,
-                            78,
-                            79,
-                            80,
-                            81,
-                            82,
-                            83,
-                            84,
-                            85,
-                            86,
-                            87,
-                            88,
-                            89,
-                            90,
-                            91,
-                            92,
-                            93,
-                            94,
-                            95,
-                            96,
-                            97,
-                            98,
-                            99,
-                            100,
-                            101,
-                            102,
-                            103,
-                            104,
-                            105,
-                            106,
-                            107,
-                            108,
-                            109,
-                            110,
-                            111,
-                            112,
-                            113,
-                            114,
-                            115,
-                            116,
-                            117,
-                            118,
-                            119,
-                            120,
-                            121,
-                            122,
-                            123,
-                            124,
-                            125,
-                            126,
-                            127,
-                            128,
-                            129,
-                            130,
-                            131,
-                            132,
-                            133,
-                            134,
-                            135,
-                            136,
-                            137,
-                            138,
-                            139,
-                            140,
-                            141,
-                            142,
-                            143,
-                            144,
-                            145,
-                            146,
-                            147,
-                            148,
-                            149,
-                            150,
-                            151,
-                            152,
-                            153,
-                            154,
-                            155,
-                            156,
-                            157,
-                            158,
-                            159,
-                            160,
-                            161,
-                            162,
-                            163,
-                            164,
-                            165,
-                            166,
-                            167,
-                            168,
-                            169,
-                            170,
-                            171,
-                            172,
-                            173,
-                            174,
-                            175,
-                            176,
-                            177,
-                            178,
-                            179,
-                            180,
-                            181,
-                            182,
-                            183,
-                            184,
-                            185,
-                            186,
-                            187,
-                            188,
-                            189,
-                            190,
-                            191,
-                            192,
-                            193,
-                            194,
-                            195,
-                            196,
-                            197,
-                            198,
-                            199,
-                            200,
-                            201,
-                            202,
-                            203,
-                            204,
-                            205,
-                            206,
-                            207,
-                            208,
-                            209,
-                            210,
-                            211,
-                            212,
-                            213,
-                            214,
-                            215,
-                            216,
-                            217,
-                            218,
-                            219,
-                            220,
-                            221,
-                            222,
-                            223,
-                            224,
-                            225,
-                            226,
-                            227,
-                            228,
-                            229,
-                            230,
-                            231,
-                            232,
-                            233,
-                            234,
-                            235,
-                            236,
-                            237,
-                            238,
-                            239,
-                            240,
-                            241,
-                            242,
-                            243,
-                            244,
-                            245,
-                            246,
-                            247,
-                            248,
-                            249,
-                            250,
-                            251,
-                            252,
-                            253,
-                            254,
-                            255,
-                        ],
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_alias.snap
deleted file mode 100644
index 751456db8c..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 12,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 12,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{1b}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_char_in_byte_literal.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_char_in_byte_literal.snap
deleted file mode 100644
index 98fc3c7949..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_char_in_byte_literal.snap
+++ /dev/null
@@ -1,51 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 13,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Bytes(
-                        [
-                            111,
-                            109,
-                            107,
-                            109,
-                            111,
-                            107,
-                            92,
-                            88,
-                            97,
-                            97,
-                        ],
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_octet.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_octet.snap
deleted file mode 100644
index 677e3f9f86..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__escape_octet.snap
+++ /dev/null
@@ -1,46 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 14,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Bytes(
-                        [
-                            35,
-                            97,
-                            4,
-                            83,
-                            52,
-                        ],
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__form_feed_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__form_feed_alias.snap
deleted file mode 100644
index b91c10ebe2..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__form_feed_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 15,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{c}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_escaped_character.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_escaped_character.snap
deleted file mode 100644
index 7ab1247bf1..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_escaped_character.snap
+++ /dev/null
@@ -1,91 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 8,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 8,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "\\",
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 5,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 6,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Load,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_escaped_newline.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_escaped_newline.snap
deleted file mode 100644
index 8359845998..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_escaped_newline.snap
+++ /dev/null
@@ -1,91 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 8,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 8,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "\n",
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 8,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 5,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 6,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Load,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_line_continuation.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_line_continuation.snap
deleted file mode 100644
index 2f6167d4ba..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_line_continuation.snap
+++ /dev/null
@@ -1,91 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 2,
-                column: 4,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 2,
-                        column: 4,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 4,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "\\\n",
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 4,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 1,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 2,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Load,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_base.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_base.snap
deleted file mode 100644
index 125c6af7a7..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_base.snap
+++ /dev/null
@@ -1,78 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "user=",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "user",
-                    ctx: Load,
-                },
-            },
-            conversion: 114,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_base_more.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_base_more.snap
deleted file mode 100644
index 14a20345ee..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_base_more.snap
+++ /dev/null
@@ -1,188 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "mix ",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "user=",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 7,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "user",
-                    ctx: Load,
-                },
-            },
-            conversion: 114,
-            format_spec: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                " with text and ",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "second=",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 38,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 29,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 35,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "second",
-                    ctx: Load,
-                },
-            },
-            conversion: 114,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_format.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_format.snap
deleted file mode 100644
index c7f6288327..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_parse_self_documenting_format.snap
+++ /dev/null
@@ -1,115 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "user=",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 14,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "user",
-                    ctx: Load,
-                },
-            },
-            conversion: 0,
-            format_spec: Some(
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 14,
-                        },
-                    ),
-                    custom: (),
-                    node: JoinedStr {
-                        values: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 14,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Str(
-                                        ">10",
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        ],
-                    },
-                },
-            ),
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_unescaped_newline.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_unescaped_newline.snap
deleted file mode 100644
index b44c329960..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__fstring_unescaped_newline.snap
+++ /dev/null
@@ -1,91 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 2,
-                column: 6,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 2,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 6,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "\n",
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 2,
-                                    column: 6,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 2,
-                                        column: 1,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 2,
-                                            column: 2,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Load,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__hts_alias.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__hts_alias.snap
deleted file mode 100644
index 73f12074eb..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__hts_alias.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 9,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 9,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "\u{88}",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_empty_fstring.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_empty_fstring.snap
deleted file mode 100644
index 94515b9787..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_empty_fstring.snap
+++ /dev/null
@@ -1,5 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: "parse_fstring(\"\").unwrap()"
----
-[]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_1.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_1.snap
deleted file mode 100644
index bfe109e114..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_1.snap
+++ /dev/null
@@ -1,57 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_2.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_2.snap
deleted file mode 100644
index bfe109e114..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_2.snap
+++ /dev/null
@@ -1,57 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 17,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_3.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_3.snap
deleted file mode 100644
index 0fdc8e82ef..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_f_string_concat_3.snap
+++ /dev/null
@@ -1,93 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 22,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 22,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: None,
-                            },
-                        },
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 17,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 20,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Constant {
-                                        value: Str(
-                                            "!",
-                                        ),
-                                        kind: None,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring.snap
deleted file mode 100644
index 4355fd70fb..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring.snap
+++ /dev/null
@@ -1,93 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 4,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "a",
-                    ctx: Load,
-                },
-            },
-            conversion: 0,
-            format_spec: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 7,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 8,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "b",
-                    ctx: Load,
-                },
-            },
-            conversion: 0,
-            format_spec: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "{foo}",
-            ),
-            kind: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_equals.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_equals.snap
deleted file mode 100644
index c8c2052205..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_equals.snap
+++ /dev/null
@@ -1,81 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: Compare {
-                    left: Located {
-                        location: Location {
-                            row: 1,
-                            column: 3,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 5,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                42,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    ops: [
-                        Eq,
-                    ],
-                    comparators: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 9,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    42,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-            conversion: 0,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_nested_spec.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_nested_spec.snap
deleted file mode 100644
index 6154948933..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_nested_spec.snap
+++ /dev/null
@@ -1,92 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 15,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "foo",
-                    ctx: Load,
-                },
-            },
-            conversion: 0,
-            format_spec: Some(
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 15,
-                        },
-                    ),
-                    custom: (),
-                    node: JoinedStr {
-                        values: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 15,
-                                    },
-                                ),
-                                custom: (),
-                                node: FormattedValue {
-                                    value: Located {
-                                        location: Location {
-                                            row: 1,
-                                            column: 8,
-                                        },
-                                        end_location: Some(
-                                            Location {
-                                                row: 1,
-                                                column: 12,
-                                            },
-                                        ),
-                                        custom: (),
-                                        node: Name {
-                                            id: "spec",
-                                            ctx: Load,
-                                        },
-                                    },
-                                    conversion: 0,
-                                    format_spec: None,
-                                },
-                            },
-                        ],
-                    },
-                },
-            ),
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_not_equals.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_not_equals.snap
deleted file mode 100644
index 029b5ee10a..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_not_equals.snap
+++ /dev/null
@@ -1,81 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 11,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 9,
-                    },
-                ),
-                custom: (),
-                node: Compare {
-                    left: Located {
-                        location: Location {
-                            row: 1,
-                            column: 3,
-                        },
-                        end_location: Some(
-                            Location {
-                                row: 1,
-                                column: 4,
-                            },
-                        ),
-                        custom: (),
-                        node: Constant {
-                            value: Int(
-                                1,
-                            ),
-                            kind: None,
-                        },
-                    },
-                    ops: [
-                        NotEq,
-                    ],
-                    comparators: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 8,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 9,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Int(
-                                    2,
-                                ),
-                                kind: None,
-                            },
-                        },
-                    ],
-                },
-            },
-            conversion: 0,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_not_nested_spec.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_not_nested_spec.snap
deleted file mode 100644
index 8b26d29593..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_not_nested_spec.snap
+++ /dev/null
@@ -1,77 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 13,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "foo",
-                    ctx: Load,
-                },
-            },
-            conversion: 0,
-            format_spec: Some(
-                Located {
-                    location: Location {
-                        row: 1,
-                        column: 0,
-                    },
-                    end_location: Some(
-                        Location {
-                            row: 1,
-                            column: 13,
-                        },
-                    ),
-                    custom: (),
-                    node: JoinedStr {
-                        values: [
-                            Located {
-                                location: Location {
-                                    row: 1,
-                                    column: 0,
-                                },
-                                end_location: Some(
-                                    Location {
-                                        row: 1,
-                                        column: 13,
-                                    },
-                                ),
-                                custom: (),
-                                node: Constant {
-                                    value: Str(
-                                        "spec",
-                                    ),
-                                    kind: None,
-                                },
-                            },
-                        ],
-                    },
-                },
-            ),
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_self_doc_prec_space.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_self_doc_prec_space.snap
deleted file mode 100644
index f48f688ec7..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_self_doc_prec_space.snap
+++ /dev/null
@@ -1,78 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "x   =",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 4,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            conversion: 114,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_self_doc_trailing_space.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_self_doc_trailing_space.snap
deleted file mode 100644
index e1ced2147d..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_self_doc_trailing_space.snap
+++ /dev/null
@@ -1,78 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "x=",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: Constant {
-            value: Str(
-                "   ",
-            ),
-            kind: None,
-        },
-    },
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 4,
-                    },
-                ),
-                custom: (),
-                node: Name {
-                    id: "x",
-                    ctx: Load,
-                },
-            },
-            conversion: 114,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_yield_expr.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_yield_expr.snap
deleted file mode 100644
index 90223888be..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_fstring_yield_expr.snap
+++ /dev/null
@@ -1,39 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 10,
-            },
-        ),
-        custom: (),
-        node: FormattedValue {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 3,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 8,
-                    },
-                ),
-                custom: (),
-                node: Yield {
-                    value: None,
-                },
-            },
-            conversion: 0,
-            format_spec: None,
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_string_concat.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_string_concat.snap
deleted file mode 100644
index a8744263f5..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_string_concat.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 16,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 16,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "Hello world",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_string_triple_quotes_with_kind.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_string_triple_quotes_with_kind.snap
deleted file mode 100644
index 0616991c8f..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_string_triple_quotes_with_kind.snap
+++ /dev/null
@@ -1,42 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 20,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 20,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "Hello, world!",
-                    ),
-                    kind: Some(
-                        "u",
-                    ),
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_f_string_concat_1.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_f_string_concat_1.snap
deleted file mode 100644
index 76e6b1d220..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_f_string_concat_1.snap
+++ /dev/null
@@ -1,59 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 18,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 18,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 18,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world",
-                                ),
-                                kind: Some(
-                                    "u",
-                                ),
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_f_string_concat_2.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_f_string_concat_2.snap
deleted file mode 100644
index 8c073fd901..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_f_string_concat_2.snap
+++ /dev/null
@@ -1,59 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 22,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 22,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 22,
-                                },
-                            ),
-                            custom: (),
-                            node: Constant {
-                                value: Str(
-                                    "Hello world!",
-                                ),
-                                kind: Some(
-                                    "u",
-                                ),
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_string_concat_1.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_string_concat_1.snap
deleted file mode 100644
index 868ba813e8..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_string_concat_1.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "Hello world",
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_string_concat_2.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_string_concat_2.snap
deleted file mode 100644
index a24fc2b347..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__parse_u_string_concat_2.snap
+++ /dev/null
@@ -1,42 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 17,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 17,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Str(
-                        "Hello world",
-                    ),
-                    kind: Some(
-                        "u",
-                    ),
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_byte_literal_1.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_byte_literal_1.snap
deleted file mode 100644
index 14daedd976..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_byte_literal_1.snap
+++ /dev/null
@@ -1,45 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 8,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 8,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Bytes(
-                        [
-                            92,
-                            120,
-                            49,
-                            122,
-                        ],
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_byte_literal_2.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_byte_literal_2.snap
deleted file mode 100644
index d34d8c8807..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_byte_literal_2.snap
+++ /dev/null
@@ -1,43 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 6,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 6,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Bytes(
-                        [
-                            92,
-                            92,
-                        ],
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_fstring.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_fstring.snap
deleted file mode 100644
index e53b86104f..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__raw_fstring.snap
+++ /dev/null
@@ -1,72 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 7,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 7,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 7,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 4,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 5,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Load,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__single_quoted_byte.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__single_quoted_byte.snap
deleted file mode 100644
index 0d8c8c9ab1..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__single_quoted_byte.snap
+++ /dev/null
@@ -1,297 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 738,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 738,
-                    },
-                ),
-                custom: (),
-                node: Constant {
-                    value: Bytes(
-                        [
-                            0,
-                            1,
-                            2,
-                            3,
-                            4,
-                            5,
-                            6,
-                            7,
-                            8,
-                            9,
-                            10,
-                            11,
-                            12,
-                            13,
-                            14,
-                            15,
-                            16,
-                            17,
-                            18,
-                            19,
-                            20,
-                            21,
-                            22,
-                            23,
-                            24,
-                            25,
-                            26,
-                            27,
-                            28,
-                            29,
-                            30,
-                            31,
-                            32,
-                            33,
-                            34,
-                            35,
-                            36,
-                            37,
-                            38,
-                            39,
-                            40,
-                            41,
-                            42,
-                            43,
-                            44,
-                            45,
-                            46,
-                            47,
-                            48,
-                            49,
-                            50,
-                            51,
-                            52,
-                            53,
-                            54,
-                            55,
-                            56,
-                            57,
-                            58,
-                            59,
-                            60,
-                            61,
-                            62,
-                            63,
-                            64,
-                            65,
-                            66,
-                            67,
-                            68,
-                            69,
-                            70,
-                            71,
-                            72,
-                            73,
-                            74,
-                            75,
-                            76,
-                            77,
-                            78,
-                            79,
-                            80,
-                            81,
-                            82,
-                            83,
-                            84,
-                            85,
-                            86,
-                            87,
-                            88,
-                            89,
-                            90,
-                            91,
-                            92,
-                            93,
-                            94,
-                            95,
-                            96,
-                            97,
-                            98,
-                            99,
-                            100,
-                            101,
-                            102,
-                            103,
-                            104,
-                            105,
-                            106,
-                            107,
-                            108,
-                            109,
-                            110,
-                            111,
-                            112,
-                            113,
-                            114,
-                            115,
-                            116,
-                            117,
-                            118,
-                            119,
-                            120,
-                            121,
-                            122,
-                            123,
-                            124,
-                            125,
-                            126,
-                            127,
-                            128,
-                            129,
-                            130,
-                            131,
-                            132,
-                            133,
-                            134,
-                            135,
-                            136,
-                            137,
-                            138,
-                            139,
-                            140,
-                            141,
-                            142,
-                            143,
-                            144,
-                            145,
-                            146,
-                            147,
-                            148,
-                            149,
-                            150,
-                            151,
-                            152,
-                            153,
-                            154,
-                            155,
-                            156,
-                            157,
-                            158,
-                            159,
-                            160,
-                            161,
-                            162,
-                            163,
-                            164,
-                            165,
-                            166,
-                            167,
-                            168,
-                            169,
-                            170,
-                            171,
-                            172,
-                            173,
-                            174,
-                            175,
-                            176,
-                            177,
-                            178,
-                            179,
-                            180,
-                            181,
-                            182,
-                            183,
-                            184,
-                            185,
-                            186,
-                            187,
-                            188,
-                            189,
-                            190,
-                            191,
-                            192,
-                            193,
-                            194,
-                            195,
-                            196,
-                            197,
-                            198,
-                            199,
-                            200,
-                            201,
-                            202,
-                            203,
-                            204,
-                            205,
-                            206,
-                            207,
-                            208,
-                            209,
-                            210,
-                            211,
-                            212,
-                            213,
-                            214,
-                            215,
-                            216,
-                            217,
-                            218,
-                            219,
-                            220,
-                            221,
-                            222,
-                            223,
-                            224,
-                            225,
-                            226,
-                            227,
-                            228,
-                            229,
-                            230,
-                            231,
-                            232,
-                            233,
-                            234,
-                            235,
-                            236,
-                            237,
-                            238,
-                            239,
-                            240,
-                            241,
-                            242,
-                            243,
-                            244,
-                            245,
-                            246,
-                            247,
-                            248,
-                            249,
-                            250,
-                            251,
-                            252,
-                            253,
-                            254,
-                            255,
-                        ],
-                    ),
-                    kind: None,
-                },
-            },
-        },
-    },
-]
diff --git a/compiler/parser/src/snapshots/rustpython_parser__string__tests__triple_quoted_raw_fstring.snap b/compiler/parser/src/snapshots/rustpython_parser__string__tests__triple_quoted_raw_fstring.snap
deleted file mode 100644
index 19975d53b5..0000000000
--- a/compiler/parser/src/snapshots/rustpython_parser__string__tests__triple_quoted_raw_fstring.snap
+++ /dev/null
@@ -1,72 +0,0 @@
----
-source: compiler/parser/src/string.rs
-expression: parse_ast
----
-[
-    Located {
-        location: Location {
-            row: 1,
-            column: 0,
-        },
-        end_location: Some(
-            Location {
-                row: 1,
-                column: 11,
-            },
-        ),
-        custom: (),
-        node: Expr {
-            value: Located {
-                location: Location {
-                    row: 1,
-                    column: 0,
-                },
-                end_location: Some(
-                    Location {
-                        row: 1,
-                        column: 11,
-                    },
-                ),
-                custom: (),
-                node: JoinedStr {
-                    values: [
-                        Located {
-                            location: Location {
-                                row: 1,
-                                column: 0,
-                            },
-                            end_location: Some(
-                                Location {
-                                    row: 1,
-                                    column: 11,
-                                },
-                            ),
-                            custom: (),
-                            node: FormattedValue {
-                                value: Located {
-                                    location: Location {
-                                        row: 1,
-                                        column: 6,
-                                    },
-                                    end_location: Some(
-                                        Location {
-                                            row: 1,
-                                            column: 7,
-                                        },
-                                    ),
-                                    custom: (),
-                                    node: Name {
-                                        id: "x",
-                                        ctx: Load,
-                                    },
-                                },
-                                conversion: 0,
-                                format_spec: None,
-                            },
-                        },
-                    ],
-                },
-            },
-        },
-    },
-]