JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsBlockStatement { l_curly_token: L_CURLY@0..1 "{" [] [], statements: JsStatementList [], r_curly_token: R_CURLY@1..2 "}" [] [], }, JsBlockStatement { l_curly_token: L_CURLY@2..4 "{" [Newline("\n")] [], statements: JsStatementList [ JsBlockStatement { l_curly_token: L_CURLY@4..5 "{" [] [], statements: JsStatementList [ JsBlockStatement { l_curly_token: L_CURLY@5..6 "{" [] [], statements: JsStatementList [ JsBlockStatement { l_curly_token: L_CURLY@6..7 "{" [] [], statements: JsStatementList [], r_curly_token: R_CURLY@7..8 "}" [] [], }, ], r_curly_token: R_CURLY@8..9 "}" [] [], }, ], r_curly_token: R_CURLY@9..10 "}" [] [], }, ], r_curly_token: R_CURLY@10..11 "}" [] [], }, JsBlockStatement { l_curly_token: L_CURLY@11..14 "{" [Newline("\n")] [Whitespace(" ")], statements: JsStatementList [ JsExpressionStatement { expression: JsAssignmentExpression { left: JsIdentifierAssignment { name_token: IDENT@14..18 "foo" [] [Whitespace(" ")], }, operator_token: EQ@18..20 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@20..23 "bar" [] [], }, }, }, semicolon_token: SEMICOLON@23..25 ";" [] [Whitespace(" ")], }, ], r_curly_token: R_CURLY@25..26 "}" [] [], }, ], eof_token: EOF@26..27 "" [Newline("\n")] [], } 0: JS_MODULE@0..27 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..26 0: JS_BLOCK_STATEMENT@0..2 0: L_CURLY@0..1 "{" [] [] 1: JS_STATEMENT_LIST@1..1 2: R_CURLY@1..2 "}" [] [] 1: JS_BLOCK_STATEMENT@2..11 0: L_CURLY@2..4 "{" [Newline("\n")] [] 1: JS_STATEMENT_LIST@4..10 0: JS_BLOCK_STATEMENT@4..10 0: L_CURLY@4..5 "{" [] [] 1: JS_STATEMENT_LIST@5..9 0: JS_BLOCK_STATEMENT@5..9 0: L_CURLY@5..6 "{" [] [] 1: JS_STATEMENT_LIST@6..8 0: JS_BLOCK_STATEMENT@6..8 0: L_CURLY@6..7 "{" [] [] 1: JS_STATEMENT_LIST@7..7 2: R_CURLY@7..8 "}" [] [] 2: R_CURLY@8..9 "}" [] [] 2: R_CURLY@9..10 "}" [] [] 2: R_CURLY@10..11 "}" [] [] 2: JS_BLOCK_STATEMENT@11..26 0: L_CURLY@11..14 "{" [Newline("\n")] [Whitespace(" ")] 1: JS_STATEMENT_LIST@14..25 0: JS_EXPRESSION_STATEMENT@14..25 0: JS_ASSIGNMENT_EXPRESSION@14..23 0: JS_IDENTIFIER_ASSIGNMENT@14..18 0: IDENT@14..18 "foo" [] [Whitespace(" ")] 1: EQ@18..20 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@20..23 0: JS_REFERENCE_IDENTIFIER@20..23 0: IDENT@20..23 "bar" [] [] 1: SEMICOLON@23..25 ";" [] [Whitespace(" ")] 2: R_CURLY@25..26 "}" [] [] 4: EOF@26..27 "" [Newline("\n")] []