[INFO] fetching crate oak-idl 0.0.11... [INFO] testing oak-idl-0.0.11 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate oak-idl 0.0.11 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate oak-idl 0.0.11 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate oak-idl 0.0.11 [INFO] tweaked toml for crates.io crate oak-idl 0.0.11 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate oak-idl 0.0.11 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate oak-idl 0.0.11 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded notify-types v2.1.0 [INFO] [stderr] Downloaded oak-testing v0.0.11 [INFO] [stderr] Downloaded notify v8.2.0 [INFO] [stderr] Downloaded oak-vfs v0.0.11 [INFO] [stderr] Downloaded oak-mcp v0.0.11 [INFO] [stderr] Downloaded oak-macros v0.0.11 [INFO] [stderr] Downloaded oak-hover v0.0.11 [INFO] [stderr] Downloaded oak-folding v0.0.11 [INFO] [stderr] Downloaded oak-resolver v0.0.11 [INFO] [stderr] Downloaded oak-semantic-search v0.0.11 [INFO] [stderr] Downloaded oak-highlight v0.0.11 [INFO] [stderr] Downloaded oak-core v0.0.11 [INFO] [stderr] Downloaded oak-lsp v0.0.11 [INFO] [stderr] Downloaded oak-pretty-print v0.0.11 [INFO] [stderr] Downloaded inotify v0.11.0 [INFO] [stderr] Downloaded oak-navigation v0.0.11 [INFO] [stderr] Downloaded oak-symbols v0.0.11 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] fc579f25e44d1901c5635c5c62b46dd539bf9dd5f8ed6a266a13a7641b9760f2 [INFO] running `Command { std: "docker" "start" "-a" "fc579f25e44d1901c5635c5c62b46dd539bf9dd5f8ed6a266a13a7641b9760f2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fc579f25e44d1901c5635c5c62b46dd539bf9dd5f8ed6a266a13a7641b9760f2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fc579f25e44d1901c5635c5c62b46dd539bf9dd5f8ed6a266a13a7641b9760f2", kill_on_drop: false }` [INFO] [stdout] fc579f25e44d1901c5635c5c62b46dd539bf9dd5f8ed6a266a13a7641b9760f2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b5a3526a0bc4299c3f175c6140c83d895691145063d43a45d08eb190c7f1d670 [INFO] running `Command { std: "docker" "start" "-a" "b5a3526a0bc4299c3f175c6140c83d895691145063d43a45d08eb190c7f1d670", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling zerocopy v0.8.40 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling twox-hash v2.1.2 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling triomphe v0.1.15 [INFO] [stderr] Compiling oak-core v0.0.11 [INFO] [stderr] Compiling oak-idl v0.0.11 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `source::TextEdit` [INFO] [stdout] --> src/lexer/mod.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | source::TextEdit, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lexer::token_type::IdlTokenType` [INFO] [stdout] --> src/parser/mod.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | use crate::lexer::token_type::IdlTokenType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct IdlLexer<'config> { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 20 | config: &'config IdlLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IdlLexer` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.12s [INFO] running `Command { std: "docker" "inspect" "b5a3526a0bc4299c3f175c6140c83d895691145063d43a45d08eb190c7f1d670", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b5a3526a0bc4299c3f175c6140c83d895691145063d43a45d08eb190c7f1d670", kill_on_drop: false }` [INFO] [stdout] b5a3526a0bc4299c3f175c6140c83d895691145063d43a45d08eb190c7f1d670 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b50e2984f50b16ce4324772a76d4482e7d0a2e739ed0f02a9be17ddb74d47556 [INFO] running `Command { std: "docker" "start" "-a" "b50e2984f50b16ce4324772a76d4482e7d0a2e739ed0f02a9be17ddb74d47556", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stdout] warning: unused import: `source::TextEdit` [INFO] [stdout] --> src/lexer/mod.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | source::TextEdit, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lexer::token_type::IdlTokenType` [INFO] [stdout] --> src/parser/mod.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | use crate::lexer::token_type::IdlTokenType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct IdlLexer<'config> { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 20 | config: &'config IdlLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IdlLexer` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling oak-testing v0.0.11 [INFO] [stderr] Compiling oak-idl v0.0.11 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `source::TextEdit` [INFO] [stdout] --> src/lexer/mod.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | source::TextEdit, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lexer::token_type::IdlTokenType` [INFO] [stdout] --> src/parser/mod.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | use crate::lexer::token_type::IdlTokenType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct IdlLexer<'config> { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 20 | config: &'config IdlLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IdlLexer` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.91s [INFO] running `Command { std: "docker" "inspect" "b50e2984f50b16ce4324772a76d4482e7d0a2e739ed0f02a9be17ddb74d47556", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b50e2984f50b16ce4324772a76d4482e7d0a2e739ed0f02a9be17ddb74d47556", kill_on_drop: false }` [INFO] [stdout] b50e2984f50b16ce4324772a76d4482e7d0a2e739ed0f02a9be17ddb74d47556 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] a7992aebf19a5064472d3e14e198b890adbd8de56d0c7544ae2c8574a050a4e2 [INFO] running `Command { std: "docker" "start" "-a" "a7992aebf19a5064472d3e14e198b890adbd8de56d0c7544ae2c8574a050a4e2", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `source::TextEdit` [INFO] [stderr] --> src/lexer/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | source::TextEdit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lexer::token_type::IdlTokenType` [INFO] [stderr] --> src/parser/mod.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | use crate::lexer::token_type::IdlTokenType; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `config` is never read [INFO] [stderr] --> src/lexer/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 19 | pub struct IdlLexer<'config> { [INFO] [stderr] | -------- field in this struct [INFO] [stderr] 20 | config: &'config IdlLanguage, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `IdlLexer` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `oak-idl` (lib) generated 3 warnings (run `cargo fix --lib -p oak-idl` to apply 2 suggestions) [INFO] [stderr] warning: `oak-idl` (lib test) generated 3 warnings (3 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oak_idl-4d94065c66072f35) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/main.rs (/opt/rustwide/target/debug/deps/main-34ce5d9112c774f0) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test lexer::test_idl_lexer ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- lexer::test_idl_lexer stdout ---- [INFO] [stdout] Testing file: /opt/rustwide/workdir/tests/lexer/basic.idl [INFO] [stdout] Error: TestFailure { path: "/opt/rustwide/workdir/tests/lexer/basic.idl", expected: "LexerTestExpected {\n success: true,\n count: 100,\n tokens: [\n TokenData {\n kind: \"Module\",\n text: \"module\",\n start: 105,\n end: 111,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"BankingSystem\",\n start: 112,\n end: 125,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 126,\n end: 127,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 158,\n end: 165,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 166,\n end: 172,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 173,\n end: 186,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 186,\n end: 187,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 193,\n end: 200,\n },\n TokenData {\n kind: \"Float\",\n text: \"float\",\n start: 201,\n end: 206,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 207,\n end: 214,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 214,\n end: 215,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 221,\n end: 228,\n },\n TokenData {\n kind: \"Sequence\",\n text: \"sequence\",\n start: 229,\n end: 237,\n },\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 237,\n end: 238,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Transaction\",\n start: 238,\n end: 249,\n },\n TokenData {\n kind: \"Greater\",\n text: \">\",\n start: 249,\n end: 250,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"TransactionList\",\n start: 251,\n end: 266,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 266,\n end: 267,\n },\n TokenData {\n kind: \"Enum\",\n text: \"enum\",\n start: 299,\n end: 303,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountType\",\n start: 304,\n end: 315,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 316,\n end: 317,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SAVINGS\",\n start: 327,\n end: 334,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 334,\n end: 335,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CHECKING\",\n start: 345,\n end: 353,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 353,\n end: 354,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"BUSINESS\",\n start: 364,\n end: 372,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 372,\n end: 373,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"INVESTMENT\",\n start: 383,\n end: 393,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 399,\n end: 400,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 400,\n end: 401,\n },\n TokenData {\n kind: \"Struct\",\n text: \"struct\",\n start: 442,\n end: 448,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Transaction\",\n start: 449,\n end: 460,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 461,\n end: 462,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 472,\n end: 485,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fromAccount\",\n start: 486,\n end: 497,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 497,\n end: 498,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 508,\n end: 521,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toAccount\",\n start: 522,\n end: 531,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 531,\n end: 532,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 542,\n end: 549,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"amount\",\n start: 550,\n end: 556,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 556,\n end: 557,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 567,\n end: 573,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"description\",\n start: 574,\n end: 585,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 585,\n end: 586,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Time\",\n start: 596,\n end: 600,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"timestamp\",\n start: 601,\n end: 610,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 610,\n end: 611,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 617,\n end: 618,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 618,\n end: 619,\n },\n TokenData {\n kind: \"Exception\",\n text: \"exception\",\n start: 660,\n end: 669,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InsufficientFunds\",\n start: 670,\n end: 687,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 688,\n end: 689,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 699,\n end: 712,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"account\",\n start: 713,\n end: 720,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 720,\n end: 721,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 731,\n end: 738,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"requested\",\n start: 739,\n end: 748,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 748,\n end: 749,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 759,\n end: 766,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"available\",\n start: 767,\n end: 776,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 776,\n end: 777,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 783,\n end: 784,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 784,\n end: 785,\n },\n TokenData {\n kind: \"Exception\",\n text: \"exception\",\n start: 797,\n end: 806,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 807,\n end: 821,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 822,\n end: 823,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 833,\n end: 846,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"account\",\n start: 847,\n end: 854,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 854,\n end: 855,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 865,\n end: 871,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"reason\",\n start: 872,\n end: 878,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 878,\n end: 879,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 885,\n end: 886,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 886,\n end: 887,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 928,\n end: 937,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 938,\n end: 945,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 946,\n end: 947,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 957,\n end: 965,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 966,\n end: 975,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 976,\n end: 989,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"number\",\n start: 990,\n end: 996,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 996,\n end: 997,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 1007,\n end: 1015,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 1016,\n end: 1025,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1026,\n end: 1033,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"balance\",\n start: 1034,\n end: 1041,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1041,\n end: 1042,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 1052,\n end: 1061,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountType\",\n start: 1062,\n end: 1073,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"type\",\n start: 1074,\n end: 1078,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1078,\n end: 1079,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1128,\n end: 1135,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getBalance\",\n start: 1136,\n end: 1146,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1146,\n end: 1147,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1147,\n end: 1148,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1148,\n end: 1149,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 1169,\n end: 1173,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"deposit\",\n start: 1174,\n end: 1181,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1181,\n end: 1182,\n },\n ],\n errors: [],\n}", actual: "LexerTestExpected {\n success: true,\n count: 436,\n tokens: [\n TokenData {\n kind: \"Module\",\n text: \"module\",\n start: 105,\n end: 111,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"BankingSystem\",\n start: 112,\n end: 125,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 126,\n end: 127,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 158,\n end: 165,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 166,\n end: 172,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 173,\n end: 186,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 186,\n end: 187,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 193,\n end: 200,\n },\n TokenData {\n kind: \"Float\",\n text: \"float\",\n start: 201,\n end: 206,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 207,\n end: 214,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 214,\n end: 215,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 221,\n end: 228,\n },\n TokenData {\n kind: \"Sequence\",\n text: \"sequence\",\n start: 229,\n end: 237,\n },\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 237,\n end: 238,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Transaction\",\n start: 238,\n end: 249,\n },\n TokenData {\n kind: \"Greater\",\n text: \">\",\n start: 249,\n end: 250,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"TransactionList\",\n start: 251,\n end: 266,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 266,\n end: 267,\n },\n TokenData {\n kind: \"Enum\",\n text: \"enum\",\n start: 299,\n end: 303,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountType\",\n start: 304,\n end: 315,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 316,\n end: 317,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SAVINGS\",\n start: 327,\n end: 334,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 334,\n end: 335,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CHECKING\",\n start: 345,\n end: 353,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 353,\n end: 354,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"BUSINESS\",\n start: 364,\n end: 372,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 372,\n end: 373,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"INVESTMENT\",\n start: 383,\n end: 393,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 399,\n end: 400,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 400,\n end: 401,\n },\n TokenData {\n kind: \"Struct\",\n text: \"struct\",\n start: 442,\n end: 448,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Transaction\",\n start: 449,\n end: 460,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 461,\n end: 462,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 472,\n end: 485,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fromAccount\",\n start: 486,\n end: 497,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 497,\n end: 498,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 508,\n end: 521,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toAccount\",\n start: 522,\n end: 531,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 531,\n end: 532,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 542,\n end: 549,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"amount\",\n start: 550,\n end: 556,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 556,\n end: 557,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 567,\n end: 573,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"description\",\n start: 574,\n end: 585,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 585,\n end: 586,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Time\",\n start: 596,\n end: 600,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"timestamp\",\n start: 601,\n end: 610,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 610,\n end: 611,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 617,\n end: 618,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 618,\n end: 619,\n },\n TokenData {\n kind: \"Exception\",\n text: \"exception\",\n start: 660,\n end: 669,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InsufficientFunds\",\n start: 670,\n end: 687,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 688,\n end: 689,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 699,\n end: 712,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"account\",\n start: 713,\n end: 720,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 720,\n end: 721,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 731,\n end: 738,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"requested\",\n start: 739,\n end: 748,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 748,\n end: 749,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 759,\n end: 766,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"available\",\n start: 767,\n end: 776,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 776,\n end: 777,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 783,\n end: 784,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 784,\n end: 785,\n },\n TokenData {\n kind: \"Exception\",\n text: \"exception\",\n start: 797,\n end: 806,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 807,\n end: 821,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 822,\n end: 823,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 833,\n end: 846,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"account\",\n start: 847,\n end: 854,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 854,\n end: 855,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 865,\n end: 871,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"reason\",\n start: 872,\n end: 878,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 878,\n end: 879,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 885,\n end: 886,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 886,\n end: 887,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 928,\n end: 937,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 938,\n end: 945,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 946,\n end: 947,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 957,\n end: 965,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 966,\n end: 975,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 976,\n end: 989,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"number\",\n start: 990,\n end: 996,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 996,\n end: 997,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 1007,\n end: 1015,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 1016,\n end: 1025,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1026,\n end: 1033,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"balance\",\n start: 1034,\n end: 1041,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1041,\n end: 1042,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 1052,\n end: 1061,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountType\",\n start: 1062,\n end: 1073,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"type\",\n start: 1074,\n end: 1078,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1078,\n end: 1079,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1128,\n end: 1135,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getBalance\",\n start: 1136,\n end: 1146,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1146,\n end: 1147,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1147,\n end: 1148,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1148,\n end: 1149,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 1169,\n end: 1173,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"deposit\",\n start: 1174,\n end: 1181,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1181,\n end: 1182,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1182,\n end: 1184,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1185,\n end: 1192,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"amount\",\n start: 1193,\n end: 1199,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1199,\n end: 1200,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1201,\n end: 1203,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 1204,\n end: 1210,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"description\",\n start: 1211,\n end: 1222,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1222,\n end: 1223,\n },\n TokenData {\n kind: \"Raises\",\n text: \"raises\",\n start: 1237,\n end: 1243,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1244,\n end: 1245,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 1245,\n end: 1259,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1259,\n end: 1260,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1260,\n end: 1261,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 1285,\n end: 1289,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"withdraw\",\n start: 1290,\n end: 1298,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1298,\n end: 1299,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1299,\n end: 1301,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1302,\n end: 1309,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"amount\",\n start: 1310,\n end: 1316,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1316,\n end: 1317,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1318,\n end: 1320,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 1321,\n end: 1327,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"description\",\n start: 1328,\n end: 1339,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1339,\n end: 1340,\n },\n TokenData {\n kind: \"Raises\",\n text: \"raises\",\n start: 1354,\n end: 1360,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1361,\n end: 1362,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InsufficientFunds\",\n start: 1362,\n end: 1379,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1379,\n end: 1380,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 1381,\n end: 1395,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1395,\n end: 1396,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1396,\n end: 1397,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"TransactionList\",\n start: 1421,\n end: 1436,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getTransactions\",\n start: 1437,\n end: 1452,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1452,\n end: 1453,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1453,\n end: 1455,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Time\",\n start: 1456,\n end: 1460,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"from\",\n start: 1461,\n end: 1465,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1465,\n end: 1466,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1467,\n end: 1469,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Time\",\n start: 1470,\n end: 1474,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"to\",\n start: 1475,\n end: 1477,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1477,\n end: 1478,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1478,\n end: 1479,\n },\n TokenData {\n kind: \"Oneway\",\n text: \"oneway\",\n start: 1552,\n end: 1558,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 1559,\n end: 1563,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"notify\",\n start: 1564,\n end: 1570,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1570,\n end: 1571,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1571,\n end: 1573,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 1574,\n end: 1580,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"message\",\n start: 1581,\n end: 1588,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1588,\n end: 1589,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1589,\n end: 1590,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1596,\n end: 1597,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1597,\n end: 1598,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 1640,\n end: 1649,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SavingsAccount\",\n start: 1650,\n end: 1664,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1665,\n end: 1666,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 1667,\n end: 1674,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1675,\n end: 1676,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 1686,\n end: 1694,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 1695,\n end: 1704,\n },\n TokenData {\n kind: \"Float\",\n text: \"float\",\n start: 1705,\n end: 1710,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"interestRate\",\n start: 1711,\n end: 1723,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1723,\n end: 1724,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 1744,\n end: 1748,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"applyInterest\",\n start: 1749,\n end: 1762,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1762,\n end: 1763,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1763,\n end: 1764,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1764,\n end: 1765,\n },\n TokenData {\n kind: \"Float\",\n text: \"float\",\n start: 1775,\n end: 1780,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"calculateInterest\",\n start: 1781,\n end: 1798,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1798,\n end: 1799,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1799,\n end: 1801,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 1802,\n end: 1805,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"days\",\n start: 1806,\n end: 1810,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1810,\n end: 1811,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1811,\n end: 1812,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1818,\n end: 1819,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1819,\n end: 1820,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 1832,\n end: 1841,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CheckingAccount\",\n start: 1842,\n end: 1857,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1858,\n end: 1859,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 1860,\n end: 1867,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1868,\n end: 1869,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 1879,\n end: 1887,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 1888,\n end: 1897,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 1898,\n end: 1901,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"checkNumber\",\n start: 1902,\n end: 1913,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1913,\n end: 1914,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 1934,\n end: 1938,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"writeCheck\",\n start: 1939,\n end: 1949,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1949,\n end: 1950,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1950,\n end: 1952,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 1953,\n end: 1956,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"checkNumber\",\n start: 1957,\n end: 1968,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1968,\n end: 1969,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1970,\n end: 1972,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Balance\",\n start: 1973,\n end: 1980,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"amount\",\n start: 1981,\n end: 1987,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1987,\n end: 1988,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 1989,\n end: 1991,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 1992,\n end: 1998,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"payee\",\n start: 1999,\n end: 2004,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2004,\n end: 2005,\n },\n TokenData {\n kind: \"Raises\",\n text: \"raises\",\n start: 2019,\n end: 2025,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2026,\n end: 2027,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InsufficientFunds\",\n start: 2027,\n end: 2044,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2044,\n end: 2045,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2045,\n end: 2046,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2052,\n end: 2053,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2053,\n end: 2054,\n },\n TokenData {\n kind: \"Abstract\",\n text: \"abstract\",\n start: 2093,\n end: 2101,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 2102,\n end: 2111,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"BankService\",\n start: 2112,\n end: 2123,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2124,\n end: 2125,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 2135,\n end: 2142,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createAccount\",\n start: 2143,\n end: 2156,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2156,\n end: 2157,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 2157,\n end: 2159,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountType\",\n start: 2160,\n end: 2171,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"type\",\n start: 2172,\n end: 2176,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2176,\n end: 2177,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 2178,\n end: 2180,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2181,\n end: 2187,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"owner\",\n start: 2188,\n end: 2193,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2193,\n end: 2194,\n },\n TokenData {\n kind: \"Raises\",\n text: \"raises\",\n start: 2208,\n end: 2214,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2215,\n end: 2216,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 2216,\n end: 2230,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2230,\n end: 2231,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2231,\n end: 2232,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 2256,\n end: 2260,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"closeAccount\",\n start: 2261,\n end: 2273,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2273,\n end: 2274,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 2274,\n end: 2276,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 2277,\n end: 2290,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"account\",\n start: 2291,\n end: 2298,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2298,\n end: 2299,\n },\n TokenData {\n kind: \"Raises\",\n text: \"raises\",\n start: 2313,\n end: 2319,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2320,\n end: 2321,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 2321,\n end: 2335,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2335,\n end: 2336,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2336,\n end: 2337,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 2361,\n end: 2368,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"findAccount\",\n start: 2369,\n end: 2380,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2380,\n end: 2381,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 2381,\n end: 2383,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountNumber\",\n start: 2384,\n end: 2397,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"account\",\n start: 2398,\n end: 2405,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2405,\n end: 2406,\n },\n TokenData {\n kind: \"Raises\",\n text: \"raises\",\n start: 2420,\n end: 2426,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2427,\n end: 2428,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InvalidAccount\",\n start: 2428,\n end: 2442,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2442,\n end: 2443,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2443,\n end: 2444,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2450,\n end: 2451,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2451,\n end: 2452,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 2503,\n end: 2512,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PremiumAccount\",\n start: 2513,\n end: 2527,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2528,\n end: 2529,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SavingsAccount\",\n start: 2530,\n end: 2544,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2544,\n end: 2545,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CheckingAccount\",\n start: 2546,\n end: 2561,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2562,\n end: 2563,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 2573,\n end: 2581,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 2582,\n end: 2591,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2592,\n end: 2598,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"premiumLevel\",\n start: 2599,\n end: 2611,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2611,\n end: 2612,\n },\n TokenData {\n kind: \"Void\",\n text: \"void\",\n start: 2632,\n end: 2636,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"upgradeAccount\",\n start: 2637,\n end: 2651,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2651,\n end: 2652,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 2652,\n end: 2654,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2655,\n end: 2661,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"newLevel\",\n start: 2662,\n end: 2670,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2670,\n end: 2671,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2671,\n end: 2672,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2678,\n end: 2679,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2679,\n end: 2680,\n },\n TokenData {\n kind: \"ValueType\",\n text: \"valuetype\",\n start: 2736,\n end: 2745,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Address\",\n start: 2746,\n end: 2753,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2754,\n end: 2755,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2765,\n end: 2771,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2772,\n end: 2778,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"street\",\n start: 2779,\n end: 2785,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2785,\n end: 2786,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2796,\n end: 2802,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2803,\n end: 2809,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"city\",\n start: 2810,\n end: 2814,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2814,\n end: 2815,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2825,\n end: 2831,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2832,\n end: 2838,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"state\",\n start: 2839,\n end: 2844,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2844,\n end: 2845,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2855,\n end: 2861,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2862,\n end: 2868,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"zipCode\",\n start: 2869,\n end: 2876,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2876,\n end: 2877,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2897,\n end: 2903,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 2904,\n end: 2910,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getFullAddress\",\n start: 2911,\n end: 2925,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2925,\n end: 2926,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2926,\n end: 2927,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2927,\n end: 2928,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2934,\n end: 2935,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2935,\n end: 2936,\n },\n TokenData {\n kind: \"Union\",\n text: \"union\",\n start: 2967,\n end: 2972,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CustomerID\",\n start: 2973,\n end: 2983,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"switch\",\n start: 2984,\n end: 2990,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2991,\n end: 2992,\n },\n TokenData {\n kind: \"Short\",\n text: \"short\",\n start: 2992,\n end: 2997,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2997,\n end: 2998,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2999,\n end: 3000,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"case\",\n start: 3010,\n end: 3014,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"1\",\n start: 3015,\n end: 3016,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3016,\n end: 3017,\n },\n TokenData {\n kind: \"Long\",\n text: \"long\",\n start: 3031,\n end: 3035,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"socialSecurityNumber\",\n start: 3036,\n end: 3056,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3056,\n end: 3057,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"case\",\n start: 3067,\n end: 3071,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"2\",\n start: 3072,\n end: 3073,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3073,\n end: 3074,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 3088,\n end: 3094,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"passportNumber\",\n start: 3095,\n end: 3109,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3109,\n end: 3110,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"default\",\n start: 3120,\n end: 3127,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3127,\n end: 3128,\n },\n TokenData {\n kind: \"Sequence\",\n text: \"sequence\",\n start: 3142,\n end: 3150,\n },\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 3150,\n end: 3151,\n },\n TokenData {\n kind: \"Octet\",\n text: \"octet\",\n start: 3151,\n end: 3156,\n },\n TokenData {\n kind: \"Greater\",\n text: \">\",\n start: 3156,\n end: 3157,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"otherID\",\n start: 3158,\n end: 3165,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3165,\n end: 3166,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3172,\n end: 3173,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3173,\n end: 3174,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 3214,\n end: 3223,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"LoanAccount\",\n start: 3224,\n end: 3235,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3235,\n end: 3236,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 3282,\n end: 3291,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Customer\",\n start: 3292,\n end: 3300,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3301,\n end: 3302,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 3312,\n end: 3321,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 3322,\n end: 3328,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"name\",\n start: 3329,\n end: 3333,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3333,\n end: 3334,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 3344,\n end: 3353,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Address\",\n start: 3354,\n end: 3361,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"address\",\n start: 3362,\n end: 3369,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3369,\n end: 3370,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 3380,\n end: 3389,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CustomerID\",\n start: 3390,\n end: 3400,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 3401,\n end: 3403,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3403,\n end: 3404,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountList\",\n start: 3424,\n end: 3435,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getAccounts\",\n start: 3436,\n end: 3447,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3447,\n end: 3448,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3448,\n end: 3449,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3449,\n end: 3450,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"LoanAccount\",\n start: 3460,\n end: 3471,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getLoanAccount\",\n start: 3472,\n end: 3486,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3486,\n end: 3487,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3487,\n end: 3488,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3488,\n end: 3489,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3495,\n end: 3496,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3496,\n end: 3497,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 3509,\n end: 3516,\n },\n TokenData {\n kind: \"Sequence\",\n text: \"sequence\",\n start: 3517,\n end: 3525,\n },\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 3525,\n end: 3526,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Account\",\n start: 3526,\n end: 3533,\n },\n TokenData {\n kind: \"Greater\",\n text: \">\",\n start: 3533,\n end: 3534,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"AccountList\",\n start: 3535,\n end: 3546,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3546,\n end: 3547,\n },\n TokenData {\n kind: \"Typedef\",\n text: \"typedef\",\n start: 3553,\n end: 3560,\n },\n TokenData {\n kind: \"Sequence\",\n text: \"sequence\",\n start: 3561,\n end: 3569,\n },\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 3569,\n end: 3570,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Customer\",\n start: 3570,\n end: 3578,\n },\n TokenData {\n kind: \"Greater\",\n text: \">\",\n start: 3578,\n end: 3579,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CustomerList\",\n start: 3580,\n end: 3592,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3592,\n end: 3593,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 3633,\n end: 3642,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Bank\",\n start: 3643,\n end: 3647,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3648,\n end: 3649,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"BankService\",\n start: 3650,\n end: 3661,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3662,\n end: 3663,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 3673,\n end: 3681,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 3682,\n end: 3691,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 3692,\n end: 3698,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"name\",\n start: 3699,\n end: 3703,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3703,\n end: 3704,\n },\n TokenData {\n kind: \"Readonly\",\n text: \"readonly\",\n start: 3714,\n end: 3722,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 3723,\n end: 3732,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Address\",\n start: 3733,\n end: 3740,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"headquarters\",\n start: 3741,\n end: 3753,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3753,\n end: 3754,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Customer\",\n start: 3774,\n end: 3782,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createCustomer\",\n start: 3783,\n end: 3797,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3797,\n end: 3798,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 3798,\n end: 3800,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 3801,\n end: 3807,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"name\",\n start: 3808,\n end: 3812,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3812,\n end: 3813,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 3814,\n end: 3816,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Address\",\n start: 3817,\n end: 3824,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"address\",\n start: 3825,\n end: 3832,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3832,\n end: 3833,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 3834,\n end: 3836,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CustomerID\",\n start: 3837,\n end: 3847,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 3848,\n end: 3850,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3850,\n end: 3851,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3851,\n end: 3852,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"CustomerList\",\n start: 3872,\n end: 3884,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCustomers\",\n start: 3885,\n end: 3897,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3897,\n end: 3898,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3898,\n end: 3899,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3899,\n end: 3900,\n },\n TokenData {\n kind: \"Float\",\n text: \"float\",\n start: 3920,\n end: 3925,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getExchangeRate\",\n start: 3926,\n end: 3941,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3941,\n end: 3942,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 3942,\n end: 3944,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 3945,\n end: 3951,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fromCurrency\",\n start: 3952,\n end: 3964,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3964,\n end: 3965,\n },\n TokenData {\n kind: \"In\",\n text: \"in\",\n start: 3966,\n end: 3968,\n },\n TokenData {\n kind: \"String\",\n text: \"string\",\n start: 3969,\n end: 3975,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toCurrency\",\n start: 3976,\n end: 3986,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3986,\n end: 3987,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3987,\n end: 3988,\n },\n TokenData {\n kind: \"Attribute\",\n text: \"attribute\",\n start: 4047,\n end: 4056,\n },\n TokenData {\n kind: \"Float\",\n text: \"float\",\n start: 4057,\n end: 4062,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"primeRate\",\n start: 4063,\n end: 4072,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4072,\n end: 4073,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4079,\n end: 4080,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4080,\n end: 4081,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4083,\n end: 4084,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4084,\n end: 4085,\n },\n TokenData {\n kind: \"Eof\",\n text: \"\",\n start: 4085,\n end: 4085,\n },\n ],\n errors: [],\n}" } [INFO] [stderr] error: test failed, to rerun pass `--test main` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] lexer::test_idl_lexer [INFO] [stdout] [INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "a7992aebf19a5064472d3e14e198b890adbd8de56d0c7544ae2c8574a050a4e2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a7992aebf19a5064472d3e14e198b890adbd8de56d0c7544ae2c8574a050a4e2", kill_on_drop: false }` [INFO] [stdout] a7992aebf19a5064472d3e14e198b890adbd8de56d0c7544ae2c8574a050a4e2