diff --git a/crates/biome_css_syntax/src/generated/nodes.rs b/crates/biome_css_syntax/src/generated/nodes.rs index 8053b472311b..c91f00b68569 100644 --- a/crates/biome_css_syntax/src/generated/nodes.rs +++ b/crates/biome_css_syntax/src/generated/nodes.rs @@ -8928,10 +8928,19 @@ impl AstNode for CssAtRule { } impl std::fmt::Debug for CssAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssAtRule") - .field("at_token", &support::DebugSyntaxResult(self.at_token())) - .field("rule", &support::DebugSyntaxResult(self.rule())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssAtRule") + .field("at_token", &support::DebugSyntaxResult(self.at_token())) + .field("rule", &support::DebugSyntaxResult(self.rule())) + .finish() + } else { + f.debug_struct("CssAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8967,11 +8976,20 @@ impl AstNode for CssAttributeMatcher { } impl std::fmt::Debug for CssAttributeMatcher { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssAttributeMatcher") - .field("operator", &support::DebugSyntaxResult(self.operator())) - .field("value", &support::DebugSyntaxResult(self.value())) - .field("modifier", &support::DebugOptionalElement(self.modifier())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssAttributeMatcher") + .field("operator", &support::DebugSyntaxResult(self.operator())) + .field("value", &support::DebugSyntaxResult(self.value())) + .field("modifier", &support::DebugOptionalElement(self.modifier())) + .finish() + } else { + f.debug_struct("CssAttributeMatcher").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9007,9 +9025,18 @@ impl AstNode for CssAttributeMatcherValue { } impl std::fmt::Debug for CssAttributeMatcherValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssAttributeMatcherValue") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssAttributeMatcherValue") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssAttributeMatcherValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9045,13 +9072,22 @@ impl AstNode for CssAttributeName { } impl std::fmt::Debug for CssAttributeName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssAttributeName") - .field( - "namespace", - &support::DebugOptionalElement(self.namespace()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssAttributeName") + .field( + "namespace", + &support::DebugOptionalElement(self.namespace()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssAttributeName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9087,18 +9123,27 @@ impl AstNode for CssAttributeSelector { } impl std::fmt::Debug for CssAttributeSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssAttributeSelector") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("matcher", &support::DebugOptionalElement(self.matcher())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssAttributeSelector") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("matcher", &support::DebugOptionalElement(self.matcher())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("CssAttributeSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9134,14 +9179,23 @@ impl AstNode for CssBinaryExpression { } impl std::fmt::Debug for CssBinaryExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssBinaryExpression") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssBinaryExpression") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssBinaryExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9177,17 +9231,26 @@ impl AstNode for CssBracketedValue { } impl std::fmt::Debug for CssBracketedValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssBracketedValue") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("items", &self.items()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssBracketedValue") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("items", &self.items()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("CssBracketedValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9223,17 +9286,26 @@ impl AstNode for CssCharsetAtRule { } impl std::fmt::Debug for CssCharsetAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssCharsetAtRule") - .field( - "charset_token", - &support::DebugSyntaxResult(self.charset_token()), - ) - .field("encoding", &support::DebugSyntaxResult(self.encoding())) - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssCharsetAtRule") + .field( + "charset_token", + &support::DebugSyntaxResult(self.charset_token()), + ) + .field("encoding", &support::DebugSyntaxResult(self.encoding())) + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssCharsetAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9269,10 +9341,19 @@ impl AstNode for CssClassSelector { } impl std::fmt::Debug for CssClassSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssClassSelector") - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssClassSelector") + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssClassSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9308,13 +9389,22 @@ impl AstNode for CssColor { } impl std::fmt::Debug for CssColor { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssColor") - .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssColor") + .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssColor").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9350,14 +9440,23 @@ impl AstNode for CssColorProfileAtRule { } impl std::fmt::Debug for CssColorProfileAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssColorProfileAtRule") - .field( - "color_profile_token", - &support::DebugSyntaxResult(self.color_profile_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssColorProfileAtRule") + .field( + "color_profile_token", + &support::DebugSyntaxResult(self.color_profile_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssColorProfileAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9393,11 +9492,20 @@ impl AstNode for CssComplexSelector { } impl std::fmt::Debug for CssComplexSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssComplexSelector") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("combinator", &support::DebugSyntaxResult(self.combinator())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssComplexSelector") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("combinator", &support::DebugSyntaxResult(self.combinator())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssComplexSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9433,10 +9541,19 @@ impl AstNode for CssComposesImportSpecifier { } impl std::fmt::Debug for CssComposesImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssComposesImportSpecifier") - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssComposesImportSpecifier") + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .finish() + } else { + f.debug_struct("CssComposesImportSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9472,14 +9589,23 @@ impl AstNode for CssComposesProperty { } impl std::fmt::Debug for CssComposesProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssComposesProperty") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssComposesProperty") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssComposesProperty").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9515,13 +9641,22 @@ impl AstNode for CssComposesPropertyValue { } impl std::fmt::Debug for CssComposesPropertyValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssComposesPropertyValue") - .field("classes", &self.classes()) - .field( - "specifier", - &support::DebugOptionalElement(self.specifier()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssComposesPropertyValue") + .field("classes", &self.classes()) + .field( + "specifier", + &support::DebugOptionalElement(self.specifier()), + ) + .finish() + } else { + f.debug_struct("CssComposesPropertyValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9557,14 +9692,23 @@ impl AstNode for CssCompoundSelector { } impl std::fmt::Debug for CssCompoundSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssCompoundSelector") - .field("nesting_selectors", &self.nesting_selectors()) - .field( - "simple_selector", - &support::DebugOptionalElement(self.simple_selector()), - ) - .field("sub_selectors", &self.sub_selectors()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssCompoundSelector") + .field("nesting_selectors", &self.nesting_selectors()) + .field( + "simple_selector", + &support::DebugOptionalElement(self.simple_selector()), + ) + .field("sub_selectors", &self.sub_selectors()) + .finish() + } else { + f.debug_struct("CssCompoundSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9600,11 +9744,20 @@ impl AstNode for CssContainerAndQuery { } impl std::fmt::Debug for CssContainerAndQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerAndQuery") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("and_token", &support::DebugSyntaxResult(self.and_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerAndQuery") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("and_token", &support::DebugSyntaxResult(self.and_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssContainerAndQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9640,15 +9793,24 @@ impl AstNode for CssContainerAtRule { } impl std::fmt::Debug for CssContainerAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerAtRule") - .field( - "container_token", - &support::DebugSyntaxResult(self.container_token()), - ) - .field("name", &support::DebugOptionalElement(self.name())) - .field("query", &support::DebugSyntaxResult(self.query())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerAtRule") + .field( + "container_token", + &support::DebugSyntaxResult(self.container_token()), + ) + .field("name", &support::DebugOptionalElement(self.name())) + .field("query", &support::DebugSyntaxResult(self.query())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssContainerAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9684,10 +9846,19 @@ impl AstNode for CssContainerNotQuery { } impl std::fmt::Debug for CssContainerNotQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerNotQuery") - .field("not_token", &support::DebugSyntaxResult(self.not_token())) - .field("query", &support::DebugSyntaxResult(self.query())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerNotQuery") + .field("not_token", &support::DebugSyntaxResult(self.not_token())) + .field("query", &support::DebugSyntaxResult(self.query())) + .finish() + } else { + f.debug_struct("CssContainerNotQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9723,11 +9894,20 @@ impl AstNode for CssContainerOrQuery { } impl std::fmt::Debug for CssContainerOrQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerOrQuery") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("or_token", &support::DebugSyntaxResult(self.or_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerOrQuery") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("or_token", &support::DebugSyntaxResult(self.or_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssContainerOrQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9763,17 +9943,26 @@ impl AstNode for CssContainerQueryInParens { } impl std::fmt::Debug for CssContainerQueryInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerQueryInParens") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("query", &support::DebugSyntaxResult(self.query())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerQueryInParens") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("query", &support::DebugSyntaxResult(self.query())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssContainerQueryInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9809,17 +9998,26 @@ impl AstNode for CssContainerSizeFeatureInParens { } impl std::fmt::Debug for CssContainerSizeFeatureInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerSizeFeatureInParens") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("feature", &support::DebugSyntaxResult(self.feature())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerSizeFeatureInParens") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("feature", &support::DebugSyntaxResult(self.feature())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssContainerSizeFeatureInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9855,11 +10053,20 @@ impl AstNode for CssContainerStyleAndQuery { } impl std::fmt::Debug for CssContainerStyleAndQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerStyleAndQuery") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("and_token", &support::DebugSyntaxResult(self.and_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerStyleAndQuery") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("and_token", &support::DebugSyntaxResult(self.and_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssContainerStyleAndQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9895,17 +10102,26 @@ impl AstNode for CssContainerStyleInParens { } impl std::fmt::Debug for CssContainerStyleInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerStyleInParens") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("query", &support::DebugSyntaxResult(self.query())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerStyleInParens") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("query", &support::DebugSyntaxResult(self.query())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssContainerStyleInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9941,10 +10157,19 @@ impl AstNode for CssContainerStyleNotQuery { } impl std::fmt::Debug for CssContainerStyleNotQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerStyleNotQuery") - .field("not_token", &support::DebugSyntaxResult(self.not_token())) - .field("query", &support::DebugSyntaxResult(self.query())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerStyleNotQuery") + .field("not_token", &support::DebugSyntaxResult(self.not_token())) + .field("query", &support::DebugSyntaxResult(self.query())) + .finish() + } else { + f.debug_struct("CssContainerStyleNotQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9980,11 +10205,20 @@ impl AstNode for CssContainerStyleOrQuery { } impl std::fmt::Debug for CssContainerStyleOrQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerStyleOrQuery") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("or_token", &support::DebugSyntaxResult(self.or_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerStyleOrQuery") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("or_token", &support::DebugSyntaxResult(self.or_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssContainerStyleOrQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10020,21 +10254,30 @@ impl AstNode for CssContainerStyleQueryInParens { } impl std::fmt::Debug for CssContainerStyleQueryInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssContainerStyleQueryInParens") - .field( - "style_token", - &support::DebugSyntaxResult(self.style_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("query", &support::DebugSyntaxResult(self.query())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssContainerStyleQueryInParens") + .field( + "style_token", + &support::DebugSyntaxResult(self.style_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("query", &support::DebugSyntaxResult(self.query())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssContainerStyleQueryInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10070,14 +10313,23 @@ impl AstNode for CssCounterStyleAtRule { } impl std::fmt::Debug for CssCounterStyleAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssCounterStyleAtRule") - .field( - "counter_style_token", - &support::DebugSyntaxResult(self.counter_style_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssCounterStyleAtRule") + .field( + "counter_style_token", + &support::DebugSyntaxResult(self.counter_style_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssCounterStyleAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10113,12 +10365,21 @@ impl AstNode for CssCustomIdentifier { } impl std::fmt::Debug for CssCustomIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssCustomIdentifier") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssCustomIdentifier") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssCustomIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10154,12 +10415,21 @@ impl AstNode for CssDashedIdentifier { } impl std::fmt::Debug for CssDashedIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDashedIdentifier") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDashedIdentifier") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssDashedIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10195,13 +10465,22 @@ impl AstNode for CssDeclaration { } impl std::fmt::Debug for CssDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDeclaration") - .field("property", &support::DebugSyntaxResult(self.property())) - .field( - "important", - &support::DebugOptionalElement(self.important()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDeclaration") + .field("property", &support::DebugSyntaxResult(self.property())) + .field( + "important", + &support::DebugOptionalElement(self.important()), + ) + .finish() + } else { + f.debug_struct("CssDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10237,17 +10516,26 @@ impl AstNode for CssDeclarationBlock { } impl std::fmt::Debug for CssDeclarationBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDeclarationBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("declarations", &self.declarations()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDeclarationBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("declarations", &self.declarations()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssDeclarationBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10283,13 +10571,22 @@ impl AstNode for CssDeclarationImportant { } impl std::fmt::Debug for CssDeclarationImportant { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDeclarationImportant") - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .field( - "important_token", - &support::DebugSyntaxResult(self.important_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDeclarationImportant") + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .field( + "important_token", + &support::DebugSyntaxResult(self.important_token()), + ) + .finish() + } else { + f.debug_struct("CssDeclarationImportant").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10325,17 +10622,26 @@ impl AstNode for CssDeclarationOrAtRuleBlock { } impl std::fmt::Debug for CssDeclarationOrAtRuleBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDeclarationOrAtRuleBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("items", &self.items()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDeclarationOrAtRuleBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("items", &self.items()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssDeclarationOrAtRuleBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10371,17 +10677,26 @@ impl AstNode for CssDeclarationOrRuleBlock { } impl std::fmt::Debug for CssDeclarationOrRuleBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDeclarationOrRuleBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("items", &self.items()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDeclarationOrRuleBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("items", &self.items()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssDeclarationOrRuleBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10417,16 +10732,25 @@ impl AstNode for CssDeclarationWithSemicolon { } impl std::fmt::Debug for CssDeclarationWithSemicolon { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDeclarationWithSemicolon") - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDeclarationWithSemicolon") + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssDeclarationWithSemicolon").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10462,14 +10786,23 @@ impl AstNode for CssDocumentAtRule { } impl std::fmt::Debug for CssDocumentAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDocumentAtRule") - .field( - "document_token", - &support::DebugSyntaxResult(self.document_token()), - ) - .field("matchers", &self.matchers()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDocumentAtRule") + .field( + "document_token", + &support::DebugSyntaxResult(self.document_token()), + ) + .field("matchers", &self.matchers()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssDocumentAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10505,18 +10838,27 @@ impl AstNode for CssDocumentCustomMatcher { } impl std::fmt::Debug for CssDocumentCustomMatcher { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssDocumentCustomMatcher") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("value", &support::DebugOptionalElement(self.value())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssDocumentCustomMatcher") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("value", &support::DebugOptionalElement(self.value())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssDocumentCustomMatcher").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10552,12 +10894,21 @@ impl AstNode for CssEmptyDeclaration { } impl std::fmt::Debug for CssEmptyDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssEmptyDeclaration") - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssEmptyDeclaration") + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssEmptyDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10593,13 +10944,22 @@ impl AstNode for CssFontFaceAtRule { } impl std::fmt::Debug for CssFontFaceAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFontFaceAtRule") - .field( - "font_face_token", - &support::DebugSyntaxResult(self.font_face_token()), - ) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFontFaceAtRule") + .field( + "font_face_token", + &support::DebugSyntaxResult(self.font_face_token()), + ) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssFontFaceAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10635,9 +10995,18 @@ impl AstNode for CssFontFamilyName { } impl std::fmt::Debug for CssFontFamilyName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFontFamilyName") - .field("names", &self.names()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFontFamilyName") + .field("names", &self.names()) + .finish() + } else { + f.debug_struct("CssFontFamilyName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10673,14 +11042,23 @@ impl AstNode for CssFontFeatureValuesAtRule { } impl std::fmt::Debug for CssFontFeatureValuesAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFontFeatureValuesAtRule") - .field( - "font_feature_values_token", - &support::DebugSyntaxResult(self.font_feature_values_token()), - ) - .field("names", &self.names()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFontFeatureValuesAtRule") + .field( + "font_feature_values_token", + &support::DebugSyntaxResult(self.font_feature_values_token()), + ) + .field("names", &self.names()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssFontFeatureValuesAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10716,17 +11094,26 @@ impl AstNode for CssFontFeatureValuesBlock { } impl std::fmt::Debug for CssFontFeatureValuesBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFontFeatureValuesBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("items", &self.items()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFontFeatureValuesBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("items", &self.items()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssFontFeatureValuesBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10762,11 +11149,20 @@ impl AstNode for CssFontFeatureValuesItem { } impl std::fmt::Debug for CssFontFeatureValuesItem { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFontFeatureValuesItem") - .field("at_token", &support::DebugSyntaxResult(self.at_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFontFeatureValuesItem") + .field("at_token", &support::DebugSyntaxResult(self.at_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssFontFeatureValuesItem").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10802,14 +11198,23 @@ impl AstNode for CssFontPaletteValuesAtRule { } impl std::fmt::Debug for CssFontPaletteValuesAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFontPaletteValuesAtRule") - .field( - "font_palette_values_token", - &support::DebugSyntaxResult(self.font_palette_values_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFontPaletteValuesAtRule") + .field( + "font_palette_values_token", + &support::DebugSyntaxResult(self.font_palette_values_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssFontPaletteValuesAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10845,18 +11250,27 @@ impl AstNode for CssFunction { } impl std::fmt::Debug for CssFunction { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssFunction") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("items", &self.items()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssFunction") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("items", &self.items()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssFunction").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10892,9 +11306,18 @@ impl AstNode for CssGenericDelimiter { } impl std::fmt::Debug for CssGenericDelimiter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssGenericDelimiter") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssGenericDelimiter") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssGenericDelimiter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10930,14 +11353,23 @@ impl AstNode for CssGenericProperty { } impl std::fmt::Debug for CssGenericProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssGenericProperty") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &self.value()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssGenericProperty") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &self.value()) + .finish() + } else { + f.debug_struct("CssGenericProperty").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -10973,10 +11405,19 @@ impl AstNode for CssIdSelector { } impl std::fmt::Debug for CssIdSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssIdSelector") - .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssIdSelector") + .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssIdSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11012,12 +11453,21 @@ impl AstNode for CssIdentifier { } impl std::fmt::Debug for CssIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssIdentifier") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssIdentifier") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11053,12 +11503,21 @@ impl AstNode for CssImportAnonymousLayer { } impl std::fmt::Debug for CssImportAnonymousLayer { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssImportAnonymousLayer") - .field( - "layer_token", - &support::DebugSyntaxResult(self.layer_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssImportAnonymousLayer") + .field( + "layer_token", + &support::DebugSyntaxResult(self.layer_token()), + ) + .finish() + } else { + f.debug_struct("CssImportAnonymousLayer").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11094,20 +11553,29 @@ impl AstNode for CssImportAtRule { } impl std::fmt::Debug for CssImportAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssImportAtRule") - .field( - "import_token", - &support::DebugSyntaxResult(self.import_token()), - ) - .field("url", &support::DebugSyntaxResult(self.url())) - .field("layer", &support::DebugOptionalElement(self.layer())) - .field("supports", &support::DebugOptionalElement(self.supports())) - .field("media", &self.media()) - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssImportAtRule") + .field( + "import_token", + &support::DebugSyntaxResult(self.import_token()), + ) + .field("url", &support::DebugSyntaxResult(self.url())) + .field("layer", &support::DebugOptionalElement(self.layer())) + .field("supports", &support::DebugOptionalElement(self.supports())) + .field("media", &self.media()) + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssImportAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11143,21 +11611,30 @@ impl AstNode for CssImportNamedLayer { } impl std::fmt::Debug for CssImportNamedLayer { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssImportNamedLayer") - .field( - "layer_token", - &support::DebugSyntaxResult(self.layer_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("name", &self.name()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssImportNamedLayer") + .field( + "layer_token", + &support::DebugSyntaxResult(self.layer_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("name", &self.name()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssImportNamedLayer").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11193,21 +11670,30 @@ impl AstNode for CssImportSupports { } impl std::fmt::Debug for CssImportSupports { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssImportSupports") - .field( - "supports_token", - &support::DebugSyntaxResult(self.supports_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("condition", &support::DebugSyntaxResult(self.condition())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssImportSupports") + .field( + "supports_token", + &support::DebugSyntaxResult(self.supports_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("condition", &support::DebugSyntaxResult(self.condition())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssImportSupports").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11243,14 +11729,23 @@ impl AstNode for CssKeyframesAtRule { } impl std::fmt::Debug for CssKeyframesAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesAtRule") - .field( - "keyframes_token", - &support::DebugSyntaxResult(self.keyframes_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesAtRule") + .field( + "keyframes_token", + &support::DebugSyntaxResult(self.keyframes_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssKeyframesAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11286,17 +11781,26 @@ impl AstNode for CssKeyframesBlock { } impl std::fmt::Debug for CssKeyframesBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("items", &self.items()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("items", &self.items()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssKeyframesBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11332,9 +11836,18 @@ impl AstNode for CssKeyframesIdentSelector { } impl std::fmt::Debug for CssKeyframesIdentSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesIdentSelector") - .field("selector", &support::DebugSyntaxResult(self.selector())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesIdentSelector") + .field("selector", &support::DebugSyntaxResult(self.selector())) + .finish() + } else { + f.debug_struct("CssKeyframesIdentSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11370,10 +11883,19 @@ impl AstNode for CssKeyframesItem { } impl std::fmt::Debug for CssKeyframesItem { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesItem") - .field("selectors", &self.selectors()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesItem") + .field("selectors", &self.selectors()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssKeyframesItem").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11409,9 +11931,18 @@ impl AstNode for CssKeyframesPercentageSelector { } impl std::fmt::Debug for CssKeyframesPercentageSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesPercentageSelector") - .field("selector", &support::DebugSyntaxResult(self.selector())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesPercentageSelector") + .field("selector", &support::DebugSyntaxResult(self.selector())) + .finish() + } else { + f.debug_struct("CssKeyframesPercentageSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11447,18 +11978,27 @@ impl AstNode for CssKeyframesScopeFunction { } impl std::fmt::Debug for CssKeyframesScopeFunction { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesScopeFunction") - .field("scope", &support::DebugSyntaxResult(self.scope())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesScopeFunction") + .field("scope", &support::DebugSyntaxResult(self.scope())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssKeyframesScopeFunction").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11494,10 +12034,19 @@ impl AstNode for CssKeyframesScopePrefix { } impl std::fmt::Debug for CssKeyframesScopePrefix { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesScopePrefix") - .field("scope", &support::DebugSyntaxResult(self.scope())) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesScopePrefix") + .field("scope", &support::DebugSyntaxResult(self.scope())) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssKeyframesScopePrefix").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11533,13 +12082,22 @@ impl AstNode for CssKeyframesScopedName { } impl std::fmt::Debug for CssKeyframesScopedName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssKeyframesScopedName") - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("scope", &support::DebugSyntaxResult(self.scope())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssKeyframesScopedName") + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("scope", &support::DebugSyntaxResult(self.scope())) + .finish() + } else { + f.debug_struct("CssKeyframesScopedName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11575,13 +12133,22 @@ impl AstNode for CssLayerAtRule { } impl std::fmt::Debug for CssLayerAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssLayerAtRule") - .field( - "layer_token", - &support::DebugSyntaxResult(self.layer_token()), - ) - .field("layer", &support::DebugSyntaxResult(self.layer())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssLayerAtRule") + .field( + "layer_token", + &support::DebugSyntaxResult(self.layer_token()), + ) + .field("layer", &support::DebugSyntaxResult(self.layer())) + .finish() + } else { + f.debug_struct("CssLayerAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11617,10 +12184,19 @@ impl AstNode for CssLayerDeclaration { } impl std::fmt::Debug for CssLayerDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssLayerDeclaration") - .field("references", &self.references()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssLayerDeclaration") + .field("references", &self.references()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssLayerDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11656,13 +12232,22 @@ impl AstNode for CssLayerReference { } impl std::fmt::Debug for CssLayerReference { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssLayerReference") - .field("references", &self.references()) - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssLayerReference") + .field("references", &self.references()) + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssLayerReference").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11699,9 +12284,19 @@ impl AstNode for CssListOfComponentValuesExpression { } impl std::fmt::Debug for CssListOfComponentValuesExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssListOfComponentValuesExpression") - .field("css_component_value_list", &self.css_component_value_list()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssListOfComponentValuesExpression") + .field("css_component_value_list", &self.css_component_value_list()) + .finish() + } else { + f.debug_struct("CssListOfComponentValuesExpression") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11737,11 +12332,20 @@ impl AstNode for CssMarginAtRule { } impl std::fmt::Debug for CssMarginAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMarginAtRule") - .field("at_token", &support::DebugSyntaxResult(self.at_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMarginAtRule") + .field("at_token", &support::DebugSyntaxResult(self.at_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssMarginAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11777,11 +12381,20 @@ impl AstNode for CssMediaAndCondition { } impl std::fmt::Debug for CssMediaAndCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaAndCondition") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("and_token", &support::DebugSyntaxResult(self.and_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaAndCondition") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("and_token", &support::DebugSyntaxResult(self.and_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssMediaAndCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11817,11 +12430,20 @@ impl AstNode for CssMediaAndTypeQuery { } impl std::fmt::Debug for CssMediaAndTypeQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaAndTypeQuery") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("and_token", &support::DebugSyntaxResult(self.and_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaAndTypeQuery") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("and_token", &support::DebugSyntaxResult(self.and_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssMediaAndTypeQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11857,14 +12479,23 @@ impl AstNode for CssMediaAtRule { } impl std::fmt::Debug for CssMediaAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaAtRule") - .field( - "media_token", - &support::DebugSyntaxResult(self.media_token()), - ) - .field("queries", &self.queries()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaAtRule") + .field( + "media_token", + &support::DebugSyntaxResult(self.media_token()), + ) + .field("queries", &self.queries()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssMediaAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11900,17 +12531,26 @@ impl AstNode for CssMediaConditionInParens { } impl std::fmt::Debug for CssMediaConditionInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaConditionInParens") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("condition", &support::DebugSyntaxResult(self.condition())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaConditionInParens") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("condition", &support::DebugSyntaxResult(self.condition())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssMediaConditionInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11946,9 +12586,18 @@ impl AstNode for CssMediaConditionQuery { } impl std::fmt::Debug for CssMediaConditionQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaConditionQuery") - .field("condition", &support::DebugSyntaxResult(self.condition())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaConditionQuery") + .field("condition", &support::DebugSyntaxResult(self.condition())) + .finish() + } else { + f.debug_struct("CssMediaConditionQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -11984,17 +12633,26 @@ impl AstNode for CssMediaFeatureInParens { } impl std::fmt::Debug for CssMediaFeatureInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaFeatureInParens") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("feature", &support::DebugSyntaxResult(self.feature())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaFeatureInParens") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("feature", &support::DebugSyntaxResult(self.feature())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssMediaFeatureInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12030,10 +12688,19 @@ impl AstNode for CssMediaNotCondition { } impl std::fmt::Debug for CssMediaNotCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaNotCondition") - .field("not_token", &support::DebugSyntaxResult(self.not_token())) - .field("condition", &support::DebugSyntaxResult(self.condition())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaNotCondition") + .field("not_token", &support::DebugSyntaxResult(self.not_token())) + .field("condition", &support::DebugSyntaxResult(self.condition())) + .finish() + } else { + f.debug_struct("CssMediaNotCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12069,11 +12736,20 @@ impl AstNode for CssMediaOrCondition { } impl std::fmt::Debug for CssMediaOrCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaOrCondition") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("or_token", &support::DebugSyntaxResult(self.or_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaOrCondition") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("or_token", &support::DebugSyntaxResult(self.or_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssMediaOrCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12109,9 +12785,18 @@ impl AstNode for CssMediaType { } impl std::fmt::Debug for CssMediaType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaType") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaType") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssMediaType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12147,10 +12832,19 @@ impl AstNode for CssMediaTypeQuery { } impl std::fmt::Debug for CssMediaTypeQuery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMediaTypeQuery") - .field("modifier", &support::DebugOptionalElement(self.modifier())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMediaTypeQuery") + .field("modifier", &support::DebugOptionalElement(self.modifier())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("CssMediaTypeQuery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12186,12 +12880,21 @@ impl AstNode for CssMetavariable { } impl std::fmt::Debug for CssMetavariable { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssMetavariable") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssMetavariable") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssMetavariable").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12227,9 +12930,18 @@ impl AstNode for CssNamedNamespacePrefix { } impl std::fmt::Debug for CssNamedNamespacePrefix { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNamedNamespacePrefix") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNamedNamespacePrefix") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssNamedNamespacePrefix").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12265,13 +12977,22 @@ impl AstNode for CssNamespace { } impl std::fmt::Debug for CssNamespace { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNamespace") - .field("prefix", &support::DebugOptionalElement(self.prefix())) - .field( - "bitwise_or_token", - &support::DebugSyntaxResult(self.bitwise_or_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNamespace") + .field("prefix", &support::DebugOptionalElement(self.prefix())) + .field( + "bitwise_or_token", + &support::DebugSyntaxResult(self.bitwise_or_token()), + ) + .finish() + } else { + f.debug_struct("CssNamespace").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12307,18 +13028,27 @@ impl AstNode for CssNamespaceAtRule { } impl std::fmt::Debug for CssNamespaceAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNamespaceAtRule") - .field( - "namespace_token", - &support::DebugSyntaxResult(self.namespace_token()), - ) - .field("prefix", &support::DebugOptionalElement(self.prefix())) - .field("url", &support::DebugSyntaxResult(self.url())) - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNamespaceAtRule") + .field( + "namespace_token", + &support::DebugSyntaxResult(self.namespace_token()), + ) + .field("prefix", &support::DebugOptionalElement(self.prefix())) + .field("url", &support::DebugSyntaxResult(self.url())) + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssNamespaceAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12354,10 +13084,19 @@ impl AstNode for CssNestedQualifiedRule { } impl std::fmt::Debug for CssNestedQualifiedRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNestedQualifiedRule") - .field("prelude", &self.prelude()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNestedQualifiedRule") + .field("prelude", &self.prelude()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssNestedQualifiedRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12393,9 +13132,18 @@ impl AstNode for CssNestedSelector { } impl std::fmt::Debug for CssNestedSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNestedSelector") - .field("amp_token", &support::DebugSyntaxResult(self.amp_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNestedSelector") + .field("amp_token", &support::DebugSyntaxResult(self.amp_token())) + .finish() + } else { + f.debug_struct("CssNestedSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12431,10 +13179,19 @@ impl AstNode for CssNthOffset { } impl std::fmt::Debug for CssNthOffset { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNthOffset") - .field("sign", &support::DebugSyntaxResult(self.sign())) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNthOffset") + .field("sign", &support::DebugSyntaxResult(self.sign())) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssNthOffset").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12470,12 +13227,21 @@ impl AstNode for CssNumber { } impl std::fmt::Debug for CssNumber { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssNumber") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssNumber") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssNumber").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12511,11 +13277,20 @@ impl AstNode for CssPageAtRule { } impl std::fmt::Debug for CssPageAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPageAtRule") - .field("page_token", &support::DebugSyntaxResult(self.page_token())) - .field("selectors", &self.selectors()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPageAtRule") + .field("page_token", &support::DebugSyntaxResult(self.page_token())) + .field("selectors", &self.selectors()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssPageAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12551,17 +13326,26 @@ impl AstNode for CssPageAtRuleBlock { } impl std::fmt::Debug for CssPageAtRuleBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPageAtRuleBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("items", &self.items()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPageAtRuleBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("items", &self.items()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssPageAtRuleBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12597,10 +13381,19 @@ impl AstNode for CssPageSelector { } impl std::fmt::Debug for CssPageSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPageSelector") - .field("ty", &support::DebugOptionalElement(self.ty())) - .field("pseudos", &self.pseudos()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPageSelector") + .field("ty", &support::DebugOptionalElement(self.ty())) + .field("pseudos", &self.pseudos()) + .finish() + } else { + f.debug_struct("CssPageSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12636,13 +13429,22 @@ impl AstNode for CssPageSelectorPseudo { } impl std::fmt::Debug for CssPageSelectorPseudo { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPageSelectorPseudo") - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPageSelectorPseudo") + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .finish() + } else { + f.debug_struct("CssPageSelectorPseudo").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12678,12 +13480,21 @@ impl AstNode for CssParameter { } impl std::fmt::Debug for CssParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssParameter") - .field( - "any_css_expression", - &support::DebugSyntaxResult(self.any_css_expression()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssParameter") + .field( + "any_css_expression", + &support::DebugSyntaxResult(self.any_css_expression()), + ) + .finish() + } else { + f.debug_struct("CssParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12719,20 +13530,29 @@ impl AstNode for CssParenthesizedExpression { } impl std::fmt::Debug for CssParenthesizedExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssParenthesizedExpression") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "expression", - &support::DebugOptionalElement(self.expression()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssParenthesizedExpression") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "expression", + &support::DebugOptionalElement(self.expression()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssParenthesizedExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12768,16 +13588,25 @@ impl AstNode for CssPercentage { } impl std::fmt::Debug for CssPercentage { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPercentage") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .field( - "percent_token", - &support::DebugSyntaxResult(self.percent_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPercentage") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .field( + "percent_token", + &support::DebugSyntaxResult(self.percent_token()), + ) + .finish() + } else { + f.debug_struct("CssPercentage").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12813,14 +13642,23 @@ impl AstNode for CssPositionTryAtRule { } impl std::fmt::Debug for CssPositionTryAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPositionTryAtRule") - .field( - "position_try_token", - &support::DebugSyntaxResult(self.position_try_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPositionTryAtRule") + .field( + "position_try_token", + &support::DebugSyntaxResult(self.position_try_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssPositionTryAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12856,14 +13694,23 @@ impl AstNode for CssPropertyAtRule { } impl std::fmt::Debug for CssPropertyAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPropertyAtRule") - .field( - "property_token", - &support::DebugSyntaxResult(self.property_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPropertyAtRule") + .field( + "property_token", + &support::DebugSyntaxResult(self.property_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssPropertyAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12900,18 +13747,28 @@ impl AstNode for CssPseudoClassFunctionCompoundSelector { } impl std::fmt::Debug for CssPseudoClassFunctionCompoundSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionCompoundSelector") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionCompoundSelector") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionCompoundSelector") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12948,18 +13805,28 @@ impl AstNode for CssPseudoClassFunctionCompoundSelectorList { } impl std::fmt::Debug for CssPseudoClassFunctionCompoundSelectorList { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionCompoundSelectorList") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("compound_selectors", &self.compound_selectors()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionCompoundSelectorList") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("compound_selectors", &self.compound_selectors()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionCompoundSelectorList") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -12995,18 +13862,27 @@ impl AstNode for CssPseudoClassFunctionIdentifier { } impl std::fmt::Debug for CssPseudoClassFunctionIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionIdentifier") - .field("name_token", &support::DebugSyntaxResult(self.name_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("ident", &support::DebugSyntaxResult(self.ident())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionIdentifier") + .field("name_token", &support::DebugSyntaxResult(self.name_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("ident", &support::DebugSyntaxResult(self.ident())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13042,18 +13918,27 @@ impl AstNode for CssPseudoClassFunctionNth { } impl std::fmt::Debug for CssPseudoClassFunctionNth { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionNth") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionNth") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionNth").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13090,18 +13975,28 @@ impl AstNode for CssPseudoClassFunctionRelativeSelectorList { } impl std::fmt::Debug for CssPseudoClassFunctionRelativeSelectorList { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionRelativeSelectorList") - .field("name_token", &support::DebugSyntaxResult(self.name_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("relative_selectors", &self.relative_selectors()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionRelativeSelectorList") + .field("name_token", &support::DebugSyntaxResult(self.name_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("relative_selectors", &self.relative_selectors()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionRelativeSelectorList") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13137,18 +14032,27 @@ impl AstNode for CssPseudoClassFunctionSelector { } impl std::fmt::Debug for CssPseudoClassFunctionSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionSelector") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionSelector") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13185,18 +14089,28 @@ impl AstNode for CssPseudoClassFunctionSelectorList { } impl std::fmt::Debug for CssPseudoClassFunctionSelectorList { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionSelectorList") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selectors", &self.selectors()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionSelectorList") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selectors", &self.selectors()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionSelectorList") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13232,18 +14146,27 @@ impl AstNode for CssPseudoClassFunctionValueList { } impl std::fmt::Debug for CssPseudoClassFunctionValueList { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassFunctionValueList") - .field("name_token", &support::DebugSyntaxResult(self.name_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("values", &self.values()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassFunctionValueList") + .field("name_token", &support::DebugSyntaxResult(self.name_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("values", &self.values()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassFunctionValueList").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13279,9 +14202,18 @@ impl AstNode for CssPseudoClassIdentifier { } impl std::fmt::Debug for CssPseudoClassIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassIdentifier") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassIdentifier") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssPseudoClassIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13317,15 +14249,24 @@ impl AstNode for CssPseudoClassNth { } impl std::fmt::Debug for CssPseudoClassNth { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassNth") - .field("sign", &support::DebugOptionalElement(self.sign())) - .field("value", &support::DebugOptionalElement(self.value())) - .field( - "symbol_token", - &support::DebugSyntaxResult(self.symbol_token()), - ) - .field("offset", &support::DebugOptionalElement(self.offset())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassNth") + .field("sign", &support::DebugOptionalElement(self.sign())) + .field("value", &support::DebugOptionalElement(self.value())) + .field( + "symbol_token", + &support::DebugSyntaxResult(self.symbol_token()), + ) + .field("offset", &support::DebugOptionalElement(self.offset())) + .finish() + } else { + f.debug_struct("CssPseudoClassNth").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13361,9 +14302,18 @@ impl AstNode for CssPseudoClassNthIdentifier { } impl std::fmt::Debug for CssPseudoClassNthIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassNthIdentifier") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassNthIdentifier") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssPseudoClassNthIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13399,10 +14349,19 @@ impl AstNode for CssPseudoClassNthNumber { } impl std::fmt::Debug for CssPseudoClassNthNumber { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassNthNumber") - .field("sign", &support::DebugOptionalElement(self.sign())) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassNthNumber") + .field("sign", &support::DebugOptionalElement(self.sign())) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssPseudoClassNthNumber").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13438,13 +14397,22 @@ impl AstNode for CssPseudoClassNthSelector { } impl std::fmt::Debug for CssPseudoClassNthSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassNthSelector") - .field("nth", &support::DebugSyntaxResult(self.nth())) - .field( - "of_selector", - &support::DebugOptionalElement(self.of_selector()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassNthSelector") + .field("nth", &support::DebugSyntaxResult(self.nth())) + .field( + "of_selector", + &support::DebugOptionalElement(self.of_selector()), + ) + .finish() + } else { + f.debug_struct("CssPseudoClassNthSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13480,10 +14448,19 @@ impl AstNode for CssPseudoClassOfNthSelector { } impl std::fmt::Debug for CssPseudoClassOfNthSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassOfNthSelector") - .field("of_token", &support::DebugSyntaxResult(self.of_token())) - .field("selectors", &self.selectors()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassOfNthSelector") + .field("of_token", &support::DebugSyntaxResult(self.of_token())) + .field("selectors", &self.selectors()) + .finish() + } else { + f.debug_struct("CssPseudoClassOfNthSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13519,13 +14496,22 @@ impl AstNode for CssPseudoClassSelector { } impl std::fmt::Debug for CssPseudoClassSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoClassSelector") - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("class", &support::DebugSyntaxResult(self.class())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoClassSelector") + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("class", &support::DebugSyntaxResult(self.class())) + .finish() + } else { + f.debug_struct("CssPseudoClassSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13561,18 +14547,28 @@ impl AstNode for CssPseudoElementFunctionIdentifier { } impl std::fmt::Debug for CssPseudoElementFunctionIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoElementFunctionIdentifier") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("ident", &support::DebugSyntaxResult(self.ident())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoElementFunctionIdentifier") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("ident", &support::DebugSyntaxResult(self.ident())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoElementFunctionIdentifier") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13608,18 +14604,27 @@ impl AstNode for CssPseudoElementFunctionSelector { } impl std::fmt::Debug for CssPseudoElementFunctionSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoElementFunctionSelector") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoElementFunctionSelector") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssPseudoElementFunctionSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13655,9 +14660,18 @@ impl AstNode for CssPseudoElementIdentifier { } impl std::fmt::Debug for CssPseudoElementIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoElementIdentifier") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoElementIdentifier") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssPseudoElementIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13693,13 +14707,22 @@ impl AstNode for CssPseudoElementSelector { } impl std::fmt::Debug for CssPseudoElementSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssPseudoElementSelector") - .field( - "double_colon_token", - &support::DebugSyntaxResult(self.double_colon_token()), - ) - .field("element", &support::DebugSyntaxResult(self.element())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssPseudoElementSelector") + .field( + "double_colon_token", + &support::DebugSyntaxResult(self.double_colon_token()), + ) + .field("element", &support::DebugSyntaxResult(self.element())) + .finish() + } else { + f.debug_struct("CssPseudoElementSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13735,10 +14758,19 @@ impl AstNode for CssQualifiedRule { } impl std::fmt::Debug for CssQualifiedRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQualifiedRule") - .field("prelude", &self.prelude()) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQualifiedRule") + .field("prelude", &self.prelude()) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssQualifiedRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13774,9 +14806,18 @@ impl AstNode for CssQueryFeatureBoolean { } impl std::fmt::Debug for CssQueryFeatureBoolean { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQueryFeatureBoolean") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQueryFeatureBoolean") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssQueryFeatureBoolean").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13812,14 +14853,23 @@ impl AstNode for CssQueryFeaturePlain { } impl std::fmt::Debug for CssQueryFeaturePlain { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQueryFeaturePlain") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQueryFeaturePlain") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssQueryFeaturePlain").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13855,11 +14905,20 @@ impl AstNode for CssQueryFeatureRange { } impl std::fmt::Debug for CssQueryFeatureRange { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQueryFeatureRange") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("comparison", &support::DebugSyntaxResult(self.comparison())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQueryFeatureRange") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("comparison", &support::DebugSyntaxResult(self.comparison())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssQueryFeatureRange").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13895,9 +14954,18 @@ impl AstNode for CssQueryFeatureRangeComparison { } impl std::fmt::Debug for CssQueryFeatureRangeComparison { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQueryFeatureRangeComparison") - .field("operator", &support::DebugSyntaxResult(self.operator())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQueryFeatureRangeComparison") + .field("operator", &support::DebugSyntaxResult(self.operator())) + .finish() + } else { + f.debug_struct("CssQueryFeatureRangeComparison").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13933,19 +15001,28 @@ impl AstNode for CssQueryFeatureRangeInterval { } impl std::fmt::Debug for CssQueryFeatureRangeInterval { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQueryFeatureRangeInterval") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "left_comparison", - &support::DebugSyntaxResult(self.left_comparison()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "right_comparison", - &support::DebugSyntaxResult(self.right_comparison()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQueryFeatureRangeInterval") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "left_comparison", + &support::DebugSyntaxResult(self.left_comparison()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "right_comparison", + &support::DebugSyntaxResult(self.right_comparison()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssQueryFeatureRangeInterval").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -13981,11 +15058,20 @@ impl AstNode for CssQueryFeatureReverseRange { } impl std::fmt::Debug for CssQueryFeatureReverseRange { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssQueryFeatureReverseRange") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("comparison", &support::DebugSyntaxResult(self.comparison())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssQueryFeatureReverseRange") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("comparison", &support::DebugSyntaxResult(self.comparison())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssQueryFeatureReverseRange").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14021,17 +15107,26 @@ impl AstNode for CssRatio { } impl std::fmt::Debug for CssRatio { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssRatio") - .field("numerator", &support::DebugSyntaxResult(self.numerator())) - .field( - "slash_token", - &support::DebugSyntaxResult(self.slash_token()), - ) - .field( - "denominator", - &support::DebugSyntaxResult(self.denominator()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssRatio") + .field("numerator", &support::DebugSyntaxResult(self.numerator())) + .field( + "slash_token", + &support::DebugSyntaxResult(self.slash_token()), + ) + .field( + "denominator", + &support::DebugSyntaxResult(self.denominator()), + ) + .finish() + } else { + f.debug_struct("CssRatio").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14067,13 +15162,22 @@ impl AstNode for CssRegularDimension { } impl std::fmt::Debug for CssRegularDimension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssRegularDimension") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .field("unit_token", &support::DebugSyntaxResult(self.unit_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssRegularDimension") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .field("unit_token", &support::DebugSyntaxResult(self.unit_token())) + .finish() + } else { + f.debug_struct("CssRegularDimension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14109,13 +15213,22 @@ impl AstNode for CssRelativeSelector { } impl std::fmt::Debug for CssRelativeSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssRelativeSelector") - .field( - "combinator", - &support::DebugOptionalElement(self.combinator()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssRelativeSelector") + .field( + "combinator", + &support::DebugOptionalElement(self.combinator()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .finish() + } else { + f.debug_struct("CssRelativeSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14151,14 +15264,23 @@ impl AstNode for CssRoot { } impl std::fmt::Debug for CssRoot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssRoot") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field("rules", &self.rules()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssRoot") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field("rules", &self.rules()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("CssRoot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14194,17 +15316,26 @@ impl AstNode for CssRuleBlock { } impl std::fmt::Debug for CssRuleBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssRuleBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("rules", &self.rules()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssRuleBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("rules", &self.rules()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("CssRuleBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14240,14 +15371,23 @@ impl AstNode for CssScopeAtRule { } impl std::fmt::Debug for CssScopeAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssScopeAtRule") - .field( - "scope_token", - &support::DebugSyntaxResult(self.scope_token()), - ) - .field("range", &support::DebugOptionalElement(self.range())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssScopeAtRule") + .field( + "scope_token", + &support::DebugSyntaxResult(self.scope_token()), + ) + .field("range", &support::DebugOptionalElement(self.range())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssScopeAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14283,17 +15423,26 @@ impl AstNode for CssScopeEdge { } impl std::fmt::Debug for CssScopeEdge { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssScopeEdge") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selectors", &self.selectors()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssScopeEdge") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selectors", &self.selectors()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssScopeEdge").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14329,10 +15478,19 @@ impl AstNode for CssScopeRangeEnd { } impl std::fmt::Debug for CssScopeRangeEnd { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssScopeRangeEnd") - .field("to_token", &support::DebugSyntaxResult(self.to_token())) - .field("end", &support::DebugSyntaxResult(self.end())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssScopeRangeEnd") + .field("to_token", &support::DebugSyntaxResult(self.to_token())) + .field("end", &support::DebugSyntaxResult(self.end())) + .finish() + } else { + f.debug_struct("CssScopeRangeEnd").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14368,11 +15526,20 @@ impl AstNode for CssScopeRangeInterval { } impl std::fmt::Debug for CssScopeRangeInterval { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssScopeRangeInterval") - .field("start", &support::DebugSyntaxResult(self.start())) - .field("to_token", &support::DebugSyntaxResult(self.to_token())) - .field("end", &support::DebugSyntaxResult(self.end())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssScopeRangeInterval") + .field("start", &support::DebugSyntaxResult(self.start())) + .field("to_token", &support::DebugSyntaxResult(self.to_token())) + .field("end", &support::DebugSyntaxResult(self.end())) + .finish() + } else { + f.debug_struct("CssScopeRangeInterval").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14408,9 +15575,18 @@ impl AstNode for CssScopeRangeStart { } impl std::fmt::Debug for CssScopeRangeStart { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssScopeRangeStart") - .field("start", &support::DebugSyntaxResult(self.start())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssScopeRangeStart") + .field("start", &support::DebugSyntaxResult(self.start())) + .finish() + } else { + f.debug_struct("CssScopeRangeStart").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14446,13 +15622,22 @@ impl AstNode for CssStartingStyleAtRule { } impl std::fmt::Debug for CssStartingStyleAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssStartingStyleAtRule") - .field( - "starting_style_token", - &support::DebugSyntaxResult(self.starting_style_token()), - ) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssStartingStyleAtRule") + .field( + "starting_style_token", + &support::DebugSyntaxResult(self.starting_style_token()), + ) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssStartingStyleAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14488,12 +15673,21 @@ impl AstNode for CssString { } impl std::fmt::Debug for CssString { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssString") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssString") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssString").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14529,11 +15723,20 @@ impl AstNode for CssSupportsAndCondition { } impl std::fmt::Debug for CssSupportsAndCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsAndCondition") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("and_token", &support::DebugSyntaxResult(self.and_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsAndCondition") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("and_token", &support::DebugSyntaxResult(self.and_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssSupportsAndCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14569,14 +15772,23 @@ impl AstNode for CssSupportsAtRule { } impl std::fmt::Debug for CssSupportsAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsAtRule") - .field( - "supports_token", - &support::DebugSyntaxResult(self.supports_token()), - ) - .field("condition", &support::DebugSyntaxResult(self.condition())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsAtRule") + .field( + "supports_token", + &support::DebugSyntaxResult(self.supports_token()), + ) + .field("condition", &support::DebugSyntaxResult(self.condition())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssSupportsAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14612,17 +15824,26 @@ impl AstNode for CssSupportsConditionInParens { } impl std::fmt::Debug for CssSupportsConditionInParens { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsConditionInParens") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("condition", &support::DebugSyntaxResult(self.condition())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsConditionInParens") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("condition", &support::DebugSyntaxResult(self.condition())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssSupportsConditionInParens").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14658,20 +15879,29 @@ impl AstNode for CssSupportsFeatureDeclaration { } impl std::fmt::Debug for CssSupportsFeatureDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsFeatureDeclaration") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsFeatureDeclaration") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssSupportsFeatureDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14707,21 +15937,30 @@ impl AstNode for CssSupportsFeatureSelector { } impl std::fmt::Debug for CssSupportsFeatureSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsFeatureSelector") - .field( - "selector_token", - &support::DebugSyntaxResult(self.selector_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("selector", &support::DebugSyntaxResult(self.selector())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsFeatureSelector") + .field( + "selector_token", + &support::DebugSyntaxResult(self.selector_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("selector", &support::DebugSyntaxResult(self.selector())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssSupportsFeatureSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14757,10 +15996,19 @@ impl AstNode for CssSupportsNotCondition { } impl std::fmt::Debug for CssSupportsNotCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsNotCondition") - .field("not_token", &support::DebugSyntaxResult(self.not_token())) - .field("query", &support::DebugSyntaxResult(self.query())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsNotCondition") + .field("not_token", &support::DebugSyntaxResult(self.not_token())) + .field("query", &support::DebugSyntaxResult(self.query())) + .finish() + } else { + f.debug_struct("CssSupportsNotCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14796,11 +16044,20 @@ impl AstNode for CssSupportsOrCondition { } impl std::fmt::Debug for CssSupportsOrCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssSupportsOrCondition") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("or_token", &support::DebugSyntaxResult(self.or_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssSupportsOrCondition") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("or_token", &support::DebugSyntaxResult(self.or_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("CssSupportsOrCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14836,13 +16093,22 @@ impl AstNode for CssTypeSelector { } impl std::fmt::Debug for CssTypeSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssTypeSelector") - .field( - "namespace", - &support::DebugOptionalElement(self.namespace()), - ) - .field("ident", &support::DebugSyntaxResult(self.ident())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssTypeSelector") + .field( + "namespace", + &support::DebugOptionalElement(self.namespace()), + ) + .field("ident", &support::DebugSyntaxResult(self.ident())) + .finish() + } else { + f.debug_struct("CssTypeSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14878,12 +16144,21 @@ impl AstNode for CssUnicodeCodepoint { } impl std::fmt::Debug for CssUnicodeCodepoint { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnicodeCodepoint") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnicodeCodepoint") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssUnicodeCodepoint").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14919,13 +16194,22 @@ impl AstNode for CssUnicodeRange { } impl std::fmt::Debug for CssUnicodeRange { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnicodeRange") - .field( - "prefix_token", - &support::DebugSyntaxResult(self.prefix_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnicodeRange") + .field( + "prefix_token", + &support::DebugSyntaxResult(self.prefix_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssUnicodeRange").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -14961,14 +16245,23 @@ impl AstNode for CssUnicodeRangeInterval { } impl std::fmt::Debug for CssUnicodeRangeInterval { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnicodeRangeInterval") - .field("start", &support::DebugSyntaxResult(self.start())) - .field( - "minus_token", - &support::DebugSyntaxResult(self.minus_token()), - ) - .field("end", &support::DebugSyntaxResult(self.end())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnicodeRangeInterval") + .field("start", &support::DebugSyntaxResult(self.start())) + .field( + "minus_token", + &support::DebugSyntaxResult(self.minus_token()), + ) + .field("end", &support::DebugSyntaxResult(self.end())) + .finish() + } else { + f.debug_struct("CssUnicodeRangeInterval").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15004,12 +16297,21 @@ impl AstNode for CssUnicodeRangeWildcard { } impl std::fmt::Debug for CssUnicodeRangeWildcard { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnicodeRangeWildcard") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnicodeRangeWildcard") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssUnicodeRangeWildcard").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15045,9 +16347,18 @@ impl AstNode for CssUniversalNamespacePrefix { } impl std::fmt::Debug for CssUniversalNamespacePrefix { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUniversalNamespacePrefix") - .field("star_token", &support::DebugSyntaxResult(self.star_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUniversalNamespacePrefix") + .field("star_token", &support::DebugSyntaxResult(self.star_token())) + .finish() + } else { + f.debug_struct("CssUniversalNamespacePrefix").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15083,13 +16394,22 @@ impl AstNode for CssUniversalSelector { } impl std::fmt::Debug for CssUniversalSelector { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUniversalSelector") - .field( - "namespace", - &support::DebugOptionalElement(self.namespace()), - ) - .field("star_token", &support::DebugSyntaxResult(self.star_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUniversalSelector") + .field( + "namespace", + &support::DebugOptionalElement(self.namespace()), + ) + .field("star_token", &support::DebugSyntaxResult(self.star_token())) + .finish() + } else { + f.debug_struct("CssUniversalSelector").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15125,11 +16445,20 @@ impl AstNode for CssUnknownBlockAtRule { } impl std::fmt::Debug for CssUnknownBlockAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnknownBlockAtRule") - .field("name", &support::DebugSyntaxResult(self.name())) - .field("components", &support::DebugSyntaxResult(self.components())) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnknownBlockAtRule") + .field("name", &support::DebugSyntaxResult(self.name())) + .field("components", &support::DebugSyntaxResult(self.components())) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssUnknownBlockAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15165,13 +16494,22 @@ impl AstNode for CssUnknownDimension { } impl std::fmt::Debug for CssUnknownDimension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnknownDimension") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .field("unit_token", &support::DebugSyntaxResult(self.unit_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnknownDimension") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .field("unit_token", &support::DebugSyntaxResult(self.unit_token())) + .finish() + } else { + f.debug_struct("CssUnknownDimension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15207,14 +16545,23 @@ impl AstNode for CssUnknownValueAtRule { } impl std::fmt::Debug for CssUnknownValueAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUnknownValueAtRule") - .field("name", &support::DebugSyntaxResult(self.name())) - .field("components", &support::DebugSyntaxResult(self.components())) - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUnknownValueAtRule") + .field("name", &support::DebugSyntaxResult(self.name())) + .field("components", &support::DebugSyntaxResult(self.components())) + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssUnknownValueAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15250,19 +16597,28 @@ impl AstNode for CssUrlFunction { } impl std::fmt::Debug for CssUrlFunction { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUrlFunction") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("value", &support::DebugOptionalElement(self.value())) - .field("modifiers", &self.modifiers()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUrlFunction") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("value", &support::DebugOptionalElement(self.value())) + .field("modifiers", &self.modifiers()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("CssUrlFunction").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15298,12 +16654,21 @@ impl AstNode for CssUrlValueRaw { } impl std::fmt::Debug for CssUrlValueRaw { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssUrlValueRaw") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssUrlValueRaw") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("CssUrlValueRaw").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15339,17 +16704,26 @@ impl AstNode for CssValueAtRule { } impl std::fmt::Debug for CssValueAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssValueAtRule") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .field("clause", &support::DebugSyntaxResult(self.clause())) - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssValueAtRule") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .field("clause", &support::DebugSyntaxResult(self.clause())) + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("CssValueAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15385,9 +16759,18 @@ impl AstNode for CssValueAtRuleDeclarationClause { } impl std::fmt::Debug for CssValueAtRuleDeclarationClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssValueAtRuleDeclarationClause") - .field("properties", &self.properties()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssValueAtRuleDeclarationClause") + .field("properties", &self.properties()) + .finish() + } else { + f.debug_struct("CssValueAtRuleDeclarationClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15423,14 +16806,23 @@ impl AstNode for CssValueAtRuleGenericProperty { } impl std::fmt::Debug for CssValueAtRuleGenericProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssValueAtRuleGenericProperty") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssValueAtRuleGenericProperty") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("CssValueAtRuleGenericProperty").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15466,11 +16858,20 @@ impl AstNode for CssValueAtRuleImportClause { } impl std::fmt::Debug for CssValueAtRuleImportClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssValueAtRuleImportClause") - .field("specifiers", &self.specifiers()) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssValueAtRuleImportClause") + .field("specifiers", &self.specifiers()) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .finish() + } else { + f.debug_struct("CssValueAtRuleImportClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15506,9 +16907,18 @@ impl AstNode for CssValueAtRuleImportSpecifier { } impl std::fmt::Debug for CssValueAtRuleImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssValueAtRuleImportSpecifier") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssValueAtRuleImportSpecifier") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("CssValueAtRuleImportSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15545,11 +16955,21 @@ impl AstNode for CssValueAtRuleNamedImportSpecifier { } impl std::fmt::Debug for CssValueAtRuleNamedImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssValueAtRuleNamedImportSpecifier") - .field("name", &support::DebugSyntaxResult(self.name())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("local_name", &support::DebugSyntaxResult(self.local_name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssValueAtRuleNamedImportSpecifier") + .field("name", &support::DebugSyntaxResult(self.name())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("local_name", &support::DebugSyntaxResult(self.local_name())) + .finish() + } else { + f.debug_struct("CssValueAtRuleNamedImportSpecifier") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -15585,13 +17005,22 @@ impl AstNode for CssViewTransitionAtRule { } impl std::fmt::Debug for CssViewTransitionAtRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CssViewTransitionAtRule") - .field( - "view_transition_token", - &support::DebugSyntaxResult(self.view_transition_token()), - ) - .field("block", &support::DebugSyntaxResult(self.block())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("CssViewTransitionAtRule") + .field( + "view_transition_token", + &support::DebugSyntaxResult(self.view_transition_token()), + ) + .field("block", &support::DebugSyntaxResult(self.block())) + .finish() + } else { + f.debug_struct("CssViewTransitionAtRule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_graphql_syntax/src/generated/nodes.rs b/crates/biome_graphql_syntax/src/generated/nodes.rs index 9917f92803de..125a70b67878 100644 --- a/crates/biome_graphql_syntax/src/generated/nodes.rs +++ b/crates/biome_graphql_syntax/src/generated/nodes.rs @@ -3176,13 +3176,22 @@ impl AstNode for GraphqlAlias { } impl std::fmt::Debug for GraphqlAlias { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlAlias") - .field("value", &support::DebugSyntaxResult(self.value())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlAlias") + .field("value", &support::DebugSyntaxResult(self.value())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlAlias").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3218,14 +3227,23 @@ impl AstNode for GraphqlArgument { } impl std::fmt::Debug for GraphqlArgument { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlArgument") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlArgument") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("GraphqlArgument").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3261,17 +3279,26 @@ impl AstNode for GraphqlArguments { } impl std::fmt::Debug for GraphqlArguments { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlArguments") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("arguments", &self.arguments()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlArguments") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("arguments", &self.arguments()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlArguments").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3307,17 +3334,26 @@ impl AstNode for GraphqlArgumentsDefinition { } impl std::fmt::Debug for GraphqlArgumentsDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlArgumentsDefinition") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("arguments", &self.arguments()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlArgumentsDefinition") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("arguments", &self.arguments()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlArgumentsDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3353,12 +3389,21 @@ impl AstNode for GraphqlBooleanValue { } impl std::fmt::Debug for GraphqlBooleanValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlBooleanValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlBooleanValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlBooleanValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3394,10 +3439,19 @@ impl AstNode for GraphqlDefaultValue { } impl std::fmt::Debug for GraphqlDefaultValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlDefaultValue") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlDefaultValue") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("GraphqlDefaultValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3433,12 +3487,21 @@ impl AstNode for GraphqlDescription { } impl std::fmt::Debug for GraphqlDescription { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlDescription") - .field( - "graphql_string_value", - &support::DebugSyntaxResult(self.graphql_string_value()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlDescription") + .field( + "graphql_string_value", + &support::DebugSyntaxResult(self.graphql_string_value()), + ) + .finish() + } else { + f.debug_struct("GraphqlDescription").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3474,14 +3537,23 @@ impl AstNode for GraphqlDirective { } impl std::fmt::Debug for GraphqlDirective { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlDirective") - .field("at_token", &support::DebugSyntaxResult(self.at_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "arguments", - &support::DebugOptionalElement(self.arguments()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlDirective") + .field("at_token", &support::DebugSyntaxResult(self.at_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "arguments", + &support::DebugOptionalElement(self.arguments()), + ) + .finish() + } else { + f.debug_struct("GraphqlDirective").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3517,32 +3589,41 @@ impl AstNode for GraphqlDirectiveDefinition { } impl std::fmt::Debug for GraphqlDirectiveDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlDirectiveDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field( - "directive_token", - &support::DebugSyntaxResult(self.directive_token()), - ) - .field("at_token", &support::DebugSyntaxResult(self.at_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "arguments", - &support::DebugOptionalElement(self.arguments()), - ) - .field( - "repeatable_token", - &support::DebugOptionalElement(self.repeatable_token()), - ) - .field("on_token", &support::DebugSyntaxResult(self.on_token())) - .field( - "bitwise_or_token", - &support::DebugOptionalElement(self.bitwise_or_token()), - ) - .field("locations", &self.locations()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlDirectiveDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field( + "directive_token", + &support::DebugSyntaxResult(self.directive_token()), + ) + .field("at_token", &support::DebugSyntaxResult(self.at_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "arguments", + &support::DebugOptionalElement(self.arguments()), + ) + .field( + "repeatable_token", + &support::DebugOptionalElement(self.repeatable_token()), + ) + .field("on_token", &support::DebugSyntaxResult(self.on_token())) + .field( + "bitwise_or_token", + &support::DebugOptionalElement(self.bitwise_or_token()), + ) + .field("locations", &self.locations()) + .finish() + } else { + f.debug_struct("GraphqlDirectiveDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3578,12 +3659,21 @@ impl AstNode for GraphqlDirectiveLocation { } impl std::fmt::Debug for GraphqlDirectiveLocation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlDirectiveLocation") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlDirectiveLocation") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlDirectiveLocation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3619,19 +3709,28 @@ impl AstNode for GraphqlEnumTypeDefinition { } impl std::fmt::Debug for GraphqlEnumTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlEnumTypeDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field("enum_token", &support::DebugSyntaxResult(self.enum_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .field( - "enum_values", - &support::DebugOptionalElement(self.enum_values()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlEnumTypeDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field("enum_token", &support::DebugSyntaxResult(self.enum_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .field( + "enum_values", + &support::DebugOptionalElement(self.enum_values()), + ) + .finish() + } else { + f.debug_struct("GraphqlEnumTypeDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3667,19 +3766,28 @@ impl AstNode for GraphqlEnumTypeExtension { } impl std::fmt::Debug for GraphqlEnumTypeExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlEnumTypeExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field("enum_token", &support::DebugSyntaxResult(self.enum_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .field( - "enum_values", - &support::DebugOptionalElement(self.enum_values()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlEnumTypeExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field("enum_token", &support::DebugSyntaxResult(self.enum_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .field( + "enum_values", + &support::DebugOptionalElement(self.enum_values()), + ) + .finish() + } else { + f.debug_struct("GraphqlEnumTypeExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3715,9 +3823,18 @@ impl AstNode for GraphqlEnumValue { } impl std::fmt::Debug for GraphqlEnumValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlEnumValue") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlEnumValue") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("GraphqlEnumValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3753,14 +3870,23 @@ impl AstNode for GraphqlEnumValueDefinition { } impl std::fmt::Debug for GraphqlEnumValueDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlEnumValueDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlEnumValueDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlEnumValueDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3796,17 +3922,26 @@ impl AstNode for GraphqlEnumValuesDefinition { } impl std::fmt::Debug for GraphqlEnumValuesDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlEnumValuesDefinition") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("values", &self.values()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlEnumValuesDefinition") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("values", &self.values()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlEnumValuesDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3842,19 +3977,28 @@ impl AstNode for GraphqlField { } impl std::fmt::Debug for GraphqlField { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlField") - .field("alias", &support::DebugOptionalElement(self.alias())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "arguments", - &support::DebugOptionalElement(self.arguments()), - ) - .field("directives", &self.directives()) - .field( - "selection_set", - &support::DebugOptionalElement(self.selection_set()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlField") + .field("alias", &support::DebugOptionalElement(self.alias())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "arguments", + &support::DebugOptionalElement(self.arguments()), + ) + .field("directives", &self.directives()) + .field( + "selection_set", + &support::DebugOptionalElement(self.selection_set()), + ) + .finish() + } else { + f.debug_struct("GraphqlField").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3890,23 +4034,32 @@ impl AstNode for GraphqlFieldDefinition { } impl std::fmt::Debug for GraphqlFieldDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlFieldDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "arguments", - &support::DebugOptionalElement(self.arguments()), - ) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlFieldDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "arguments", + &support::DebugOptionalElement(self.arguments()), + ) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlFieldDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3942,17 +4095,26 @@ impl AstNode for GraphqlFieldsDefinition { } impl std::fmt::Debug for GraphqlFieldsDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlFieldsDefinition") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("fields", &self.fields()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlFieldsDefinition") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("fields", &self.fields()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlFieldsDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -3988,12 +4150,21 @@ impl AstNode for GraphqlFloatValue { } impl std::fmt::Debug for GraphqlFloatValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlFloatValue") - .field( - "graphql_float_literal_token", - &support::DebugSyntaxResult(self.graphql_float_literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlFloatValue") + .field( + "graphql_float_literal_token", + &support::DebugSyntaxResult(self.graphql_float_literal_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlFloatValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4029,22 +4200,31 @@ impl AstNode for GraphqlFragmentDefinition { } impl std::fmt::Debug for GraphqlFragmentDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlFragmentDefinition") - .field( - "fragment_token", - &support::DebugSyntaxResult(self.fragment_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "type_condition", - &support::DebugSyntaxResult(self.type_condition()), - ) - .field("directives", &self.directives()) - .field( - "selection_set", - &support::DebugSyntaxResult(self.selection_set()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlFragmentDefinition") + .field( + "fragment_token", + &support::DebugSyntaxResult(self.fragment_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "type_condition", + &support::DebugSyntaxResult(self.type_condition()), + ) + .field("directives", &self.directives()) + .field( + "selection_set", + &support::DebugSyntaxResult(self.selection_set()), + ) + .finish() + } else { + f.debug_struct("GraphqlFragmentDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4080,14 +4260,23 @@ impl AstNode for GraphqlFragmentSpread { } impl std::fmt::Debug for GraphqlFragmentSpread { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlFragmentSpread") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlFragmentSpread") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlFragmentSpread").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4123,17 +4312,26 @@ impl AstNode for GraphqlImplementsInterfaces { } impl std::fmt::Debug for GraphqlImplementsInterfaces { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlImplementsInterfaces") - .field( - "implements_token", - &support::DebugSyntaxResult(self.implements_token()), - ) - .field( - "amp_token", - &support::DebugOptionalElement(self.amp_token()), - ) - .field("interfaces", &self.interfaces()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlImplementsInterfaces") + .field( + "implements_token", + &support::DebugSyntaxResult(self.implements_token()), + ) + .field( + "amp_token", + &support::DebugOptionalElement(self.amp_token()), + ) + .field("interfaces", &self.interfaces()) + .finish() + } else { + f.debug_struct("GraphqlImplementsInterfaces").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4169,21 +4367,30 @@ impl AstNode for GraphqlInlineFragment { } impl std::fmt::Debug for GraphqlInlineFragment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInlineFragment") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field( - "type_condition", - &support::DebugOptionalElement(self.type_condition()), - ) - .field("directives", &self.directives()) - .field( - "selection_set", - &support::DebugSyntaxResult(self.selection_set()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInlineFragment") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field( + "type_condition", + &support::DebugOptionalElement(self.type_condition()), + ) + .field("directives", &self.directives()) + .field( + "selection_set", + &support::DebugSyntaxResult(self.selection_set()), + ) + .finish() + } else { + f.debug_struct("GraphqlInlineFragment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4219,17 +4426,26 @@ impl AstNode for GraphqlInputFieldsDefinition { } impl std::fmt::Debug for GraphqlInputFieldsDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInputFieldsDefinition") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("fields", &self.fields()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInputFieldsDefinition") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("fields", &self.fields()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlInputFieldsDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4265,22 +4481,31 @@ impl AstNode for GraphqlInputObjectTypeDefinition { } impl std::fmt::Debug for GraphqlInputObjectTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInputObjectTypeDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field( - "input_token", - &support::DebugSyntaxResult(self.input_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .field( - "input_fields", - &support::DebugOptionalElement(self.input_fields()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInputObjectTypeDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field( + "input_token", + &support::DebugSyntaxResult(self.input_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .field( + "input_fields", + &support::DebugOptionalElement(self.input_fields()), + ) + .finish() + } else { + f.debug_struct("GraphqlInputObjectTypeDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4316,22 +4541,31 @@ impl AstNode for GraphqlInputObjectTypeExtension { } impl std::fmt::Debug for GraphqlInputObjectTypeExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInputObjectTypeExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field( - "input_token", - &support::DebugSyntaxResult(self.input_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .field( - "input_fields", - &support::DebugOptionalElement(self.input_fields()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInputObjectTypeExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field( + "input_token", + &support::DebugSyntaxResult(self.input_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .field( + "input_fields", + &support::DebugOptionalElement(self.input_fields()), + ) + .finish() + } else { + f.debug_struct("GraphqlInputObjectTypeExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4367,20 +4601,29 @@ impl AstNode for GraphqlInputValueDefinition { } impl std::fmt::Debug for GraphqlInputValueDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInputValueDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field("default", &support::DebugOptionalElement(self.default())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInputValueDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field("default", &support::DebugOptionalElement(self.default())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlInputValueDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4416,12 +4659,21 @@ impl AstNode for GraphqlIntValue { } impl std::fmt::Debug for GraphqlIntValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlIntValue") - .field( - "graphql_int_literal_token", - &support::DebugSyntaxResult(self.graphql_int_literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlIntValue") + .field( + "graphql_int_literal_token", + &support::DebugSyntaxResult(self.graphql_int_literal_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlIntValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4457,23 +4709,32 @@ impl AstNode for GraphqlInterfaceTypeDefinition { } impl std::fmt::Debug for GraphqlInterfaceTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInterfaceTypeDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field( - "interface_token", - &support::DebugSyntaxResult(self.interface_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "implements", - &support::DebugOptionalElement(self.implements()), - ) - .field("directives", &self.directives()) - .field("fields", &support::DebugOptionalElement(self.fields())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInterfaceTypeDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field( + "interface_token", + &support::DebugSyntaxResult(self.interface_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "implements", + &support::DebugOptionalElement(self.implements()), + ) + .field("directives", &self.directives()) + .field("fields", &support::DebugOptionalElement(self.fields())) + .finish() + } else { + f.debug_struct("GraphqlInterfaceTypeDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4509,23 +4770,32 @@ impl AstNode for GraphqlInterfaceTypeExtension { } impl std::fmt::Debug for GraphqlInterfaceTypeExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlInterfaceTypeExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field( - "interface_token", - &support::DebugSyntaxResult(self.interface_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "implements", - &support::DebugOptionalElement(self.implements()), - ) - .field("directives", &self.directives()) - .field("fields", &support::DebugOptionalElement(self.fields())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlInterfaceTypeExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field( + "interface_token", + &support::DebugSyntaxResult(self.interface_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "implements", + &support::DebugOptionalElement(self.implements()), + ) + .field("directives", &self.directives()) + .field("fields", &support::DebugOptionalElement(self.fields())) + .finish() + } else { + f.debug_struct("GraphqlInterfaceTypeExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4561,17 +4831,26 @@ impl AstNode for GraphqlListType { } impl std::fmt::Debug for GraphqlListType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlListType") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("element", &support::DebugSyntaxResult(self.element())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlListType") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("element", &support::DebugSyntaxResult(self.element())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlListType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4607,17 +4886,26 @@ impl AstNode for GraphqlListValue { } impl std::fmt::Debug for GraphqlListValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlListValue") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("elements", &self.elements()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlListValue") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("elements", &self.elements()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlListValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4653,12 +4941,21 @@ impl AstNode for GraphqlLiteralName { } impl std::fmt::Debug for GraphqlLiteralName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlLiteralName") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlLiteralName") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlLiteralName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4694,12 +4991,21 @@ impl AstNode for GraphqlNameBinding { } impl std::fmt::Debug for GraphqlNameBinding { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlNameBinding") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlNameBinding") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlNameBinding").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4735,12 +5041,21 @@ impl AstNode for GraphqlNameReference { } impl std::fmt::Debug for GraphqlNameReference { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlNameReference") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlNameReference") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlNameReference").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4776,10 +5091,19 @@ impl AstNode for GraphqlNonNullType { } impl std::fmt::Debug for GraphqlNonNullType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlNonNullType") - .field("base", &support::DebugSyntaxResult(self.base())) - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlNonNullType") + .field("base", &support::DebugSyntaxResult(self.base())) + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .finish() + } else { + f.debug_struct("GraphqlNonNullType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4815,9 +5139,18 @@ impl AstNode for GraphqlNullValue { } impl std::fmt::Debug for GraphqlNullValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlNullValue") - .field("null_token", &support::DebugSyntaxResult(self.null_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlNullValue") + .field("null_token", &support::DebugSyntaxResult(self.null_token())) + .finish() + } else { + f.debug_struct("GraphqlNullValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4853,14 +5186,23 @@ impl AstNode for GraphqlObjectField { } impl std::fmt::Debug for GraphqlObjectField { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlObjectField") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlObjectField") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("GraphqlObjectField").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4896,20 +5238,29 @@ impl AstNode for GraphqlObjectTypeDefinition { } impl std::fmt::Debug for GraphqlObjectTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlObjectTypeDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field("type_token", &support::DebugSyntaxResult(self.type_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "implements", - &support::DebugOptionalElement(self.implements()), - ) - .field("directives", &self.directives()) - .field("fields", &support::DebugOptionalElement(self.fields())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlObjectTypeDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field("type_token", &support::DebugSyntaxResult(self.type_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "implements", + &support::DebugOptionalElement(self.implements()), + ) + .field("directives", &self.directives()) + .field("fields", &support::DebugOptionalElement(self.fields())) + .finish() + } else { + f.debug_struct("GraphqlObjectTypeDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4945,20 +5296,29 @@ impl AstNode for GraphqlObjectTypeExtension { } impl std::fmt::Debug for GraphqlObjectTypeExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlObjectTypeExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field("type_token", &support::DebugSyntaxResult(self.type_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "implements", - &support::DebugOptionalElement(self.implements()), - ) - .field("directives", &self.directives()) - .field("fields", &support::DebugOptionalElement(self.fields())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlObjectTypeExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field("type_token", &support::DebugSyntaxResult(self.type_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "implements", + &support::DebugOptionalElement(self.implements()), + ) + .field("directives", &self.directives()) + .field("fields", &support::DebugOptionalElement(self.fields())) + .finish() + } else { + f.debug_struct("GraphqlObjectTypeExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -4994,17 +5354,26 @@ impl AstNode for GraphqlObjectValue { } impl std::fmt::Debug for GraphqlObjectValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlObjectValue") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlObjectValue") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlObjectValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5040,19 +5409,28 @@ impl AstNode for GraphqlOperationDefinition { } impl std::fmt::Debug for GraphqlOperationDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlOperationDefinition") - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field("name", &support::DebugOptionalElement(self.name())) - .field( - "variables", - &support::DebugOptionalElement(self.variables()), - ) - .field("directives", &self.directives()) - .field( - "selection_set", - &support::DebugSyntaxResult(self.selection_set()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlOperationDefinition") + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field("name", &support::DebugOptionalElement(self.name())) + .field( + "variables", + &support::DebugOptionalElement(self.variables()), + ) + .field("directives", &self.directives()) + .field( + "selection_set", + &support::DebugSyntaxResult(self.selection_set()), + ) + .finish() + } else { + f.debug_struct("GraphqlOperationDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5088,12 +5466,21 @@ impl AstNode for GraphqlOperationType { } impl std::fmt::Debug for GraphqlOperationType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlOperationType") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlOperationType") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlOperationType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5129,14 +5516,23 @@ impl AstNode for GraphqlRoot { } impl std::fmt::Debug for GraphqlRoot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlRoot") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field("definitions", &self.definitions()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlRoot") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field("definitions", &self.definitions()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("GraphqlRoot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5172,17 +5568,27 @@ impl AstNode for GraphqlRootOperationTypeDefinition { } impl std::fmt::Debug for GraphqlRootOperationTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlRootOperationTypeDefinition") - .field( - "operation_type", - &support::DebugSyntaxResult(self.operation_type()), - ) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("named_type", &support::DebugSyntaxResult(self.named_type())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlRootOperationTypeDefinition") + .field( + "operation_type", + &support::DebugSyntaxResult(self.operation_type()), + ) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("named_type", &support::DebugSyntaxResult(self.named_type())) + .finish() + } else { + f.debug_struct("GraphqlRootOperationTypeDefinition") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5218,17 +5624,26 @@ impl AstNode for GraphqlRootOperationTypes { } impl std::fmt::Debug for GraphqlRootOperationTypes { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlRootOperationTypes") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("root_operation_type", &self.root_operation_type()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlRootOperationTypes") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("root_operation_type", &self.root_operation_type()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlRootOperationTypes").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5264,18 +5679,27 @@ impl AstNode for GraphqlScalarTypeDefinition { } impl std::fmt::Debug for GraphqlScalarTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlScalarTypeDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field( - "scalar_token", - &support::DebugSyntaxResult(self.scalar_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlScalarTypeDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field( + "scalar_token", + &support::DebugSyntaxResult(self.scalar_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlScalarTypeDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5311,18 +5735,27 @@ impl AstNode for GraphqlScalarTypeExtension { } impl std::fmt::Debug for GraphqlScalarTypeExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlScalarTypeExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field( - "scalar_token", - &support::DebugSyntaxResult(self.scalar_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlScalarTypeExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field( + "scalar_token", + &support::DebugSyntaxResult(self.scalar_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlScalarTypeExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5358,21 +5791,30 @@ impl AstNode for GraphqlSchemaDefinition { } impl std::fmt::Debug for GraphqlSchemaDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlSchemaDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field( - "schema_token", - &support::DebugSyntaxResult(self.schema_token()), - ) - .field("directives", &self.directives()) - .field( - "root_operation_types", - &support::DebugSyntaxResult(self.root_operation_types()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlSchemaDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field( + "schema_token", + &support::DebugSyntaxResult(self.schema_token()), + ) + .field("directives", &self.directives()) + .field( + "root_operation_types", + &support::DebugSyntaxResult(self.root_operation_types()), + ) + .finish() + } else { + f.debug_struct("GraphqlSchemaDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5408,21 +5850,30 @@ impl AstNode for GraphqlSchemaExtension { } impl std::fmt::Debug for GraphqlSchemaExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlSchemaExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field( - "schema_token", - &support::DebugSyntaxResult(self.schema_token()), - ) - .field("directives", &self.directives()) - .field( - "root_operation_types", - &support::DebugOptionalElement(self.root_operation_types()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlSchemaExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field( + "schema_token", + &support::DebugSyntaxResult(self.schema_token()), + ) + .field("directives", &self.directives()) + .field( + "root_operation_types", + &support::DebugOptionalElement(self.root_operation_types()), + ) + .finish() + } else { + f.debug_struct("GraphqlSchemaExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5458,17 +5909,26 @@ impl AstNode for GraphqlSelectionSet { } impl std::fmt::Debug for GraphqlSelectionSet { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlSelectionSet") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("selections", &self.selections()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlSelectionSet") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("selections", &self.selections()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlSelectionSet").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5504,12 +5964,21 @@ impl AstNode for GraphqlStringValue { } impl std::fmt::Debug for GraphqlStringValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlStringValue") - .field( - "graphql_string_literal_token", - &support::DebugSyntaxResult(self.graphql_string_literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlStringValue") + .field( + "graphql_string_literal_token", + &support::DebugSyntaxResult(self.graphql_string_literal_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlStringValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5545,10 +6014,19 @@ impl AstNode for GraphqlTypeCondition { } impl std::fmt::Debug for GraphqlTypeCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlTypeCondition") - .field("on_token", &support::DebugSyntaxResult(self.on_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlTypeCondition") + .field("on_token", &support::DebugSyntaxResult(self.on_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("GraphqlTypeCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5584,14 +6062,23 @@ impl AstNode for GraphqlUnionMemberTypes { } impl std::fmt::Debug for GraphqlUnionMemberTypes { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlUnionMemberTypes") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field( - "bitwise_or_token", - &support::DebugOptionalElement(self.bitwise_or_token()), - ) - .field("members", &self.members()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlUnionMemberTypes") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field( + "bitwise_or_token", + &support::DebugOptionalElement(self.bitwise_or_token()), + ) + .field("members", &self.members()) + .finish() + } else { + f.debug_struct("GraphqlUnionMemberTypes").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5627,22 +6114,31 @@ impl AstNode for GraphqlUnionTypeDefinition { } impl std::fmt::Debug for GraphqlUnionTypeDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlUnionTypeDefinition") - .field( - "description", - &support::DebugOptionalElement(self.description()), - ) - .field( - "union_token", - &support::DebugSyntaxResult(self.union_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .field( - "union_members", - &support::DebugOptionalElement(self.union_members()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlUnionTypeDefinition") + .field( + "description", + &support::DebugOptionalElement(self.description()), + ) + .field( + "union_token", + &support::DebugSyntaxResult(self.union_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .field( + "union_members", + &support::DebugOptionalElement(self.union_members()), + ) + .finish() + } else { + f.debug_struct("GraphqlUnionTypeDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5678,22 +6174,31 @@ impl AstNode for GraphqlUnionTypeExtension { } impl std::fmt::Debug for GraphqlUnionTypeExtension { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlUnionTypeExtension") - .field( - "extend_token", - &support::DebugSyntaxResult(self.extend_token()), - ) - .field( - "union_token", - &support::DebugSyntaxResult(self.union_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("directives", &self.directives()) - .field( - "union_members", - &support::DebugOptionalElement(self.union_members()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlUnionTypeExtension") + .field( + "extend_token", + &support::DebugSyntaxResult(self.extend_token()), + ) + .field( + "union_token", + &support::DebugSyntaxResult(self.union_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("directives", &self.directives()) + .field( + "union_members", + &support::DebugOptionalElement(self.union_members()), + ) + .finish() + } else { + f.debug_struct("GraphqlUnionTypeExtension").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5729,13 +6234,22 @@ impl AstNode for GraphqlVariableBinding { } impl std::fmt::Debug for GraphqlVariableBinding { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlVariableBinding") - .field( - "dollar_token", - &support::DebugSyntaxResult(self.dollar_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlVariableBinding") + .field( + "dollar_token", + &support::DebugSyntaxResult(self.dollar_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("GraphqlVariableBinding").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5771,16 +6285,25 @@ impl AstNode for GraphqlVariableDefinition { } impl std::fmt::Debug for GraphqlVariableDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlVariableDefinition") - .field("variable", &support::DebugSyntaxResult(self.variable())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field("default", &support::DebugOptionalElement(self.default())) - .field("directives", &self.directives()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlVariableDefinition") + .field("variable", &support::DebugSyntaxResult(self.variable())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field("default", &support::DebugOptionalElement(self.default())) + .field("directives", &self.directives()) + .finish() + } else { + f.debug_struct("GraphqlVariableDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5816,17 +6339,26 @@ impl AstNode for GraphqlVariableDefinitions { } impl std::fmt::Debug for GraphqlVariableDefinitions { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlVariableDefinitions") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("elements", &self.elements()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlVariableDefinitions") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("elements", &self.elements()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GraphqlVariableDefinitions").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5862,13 +6394,22 @@ impl AstNode for GraphqlVariableReference { } impl std::fmt::Debug for GraphqlVariableReference { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GraphqlVariableReference") - .field( - "dollar_token", - &support::DebugSyntaxResult(self.dollar_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GraphqlVariableReference") + .field( + "dollar_token", + &support::DebugSyntaxResult(self.dollar_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("GraphqlVariableReference").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_grit_syntax/src/generated/nodes.rs b/crates/biome_grit_syntax/src/generated/nodes.rs index 67c57743e674..2d2069ab4009 100644 --- a/crates/biome_grit_syntax/src/generated/nodes.rs +++ b/crates/biome_grit_syntax/src/generated/nodes.rs @@ -5055,11 +5055,20 @@ impl AstNode for GritAddOperation { } impl std::fmt::Debug for GritAddOperation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritAddOperation") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("plus_token", &support::DebugSyntaxResult(self.plus_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritAddOperation") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("plus_token", &support::DebugSyntaxResult(self.plus_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritAddOperation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5095,12 +5104,21 @@ impl AstNode for GritAnnotation { } impl std::fmt::Debug for GritAnnotation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritAnnotation") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritAnnotation") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritAnnotation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5136,11 +5154,20 @@ impl AstNode for GritAssignmentAsPattern { } impl std::fmt::Debug for GritAssignmentAsPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritAssignmentAsPattern") - .field("container", &support::DebugSyntaxResult(self.container())) - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritAssignmentAsPattern") + .field("container", &support::DebugSyntaxResult(self.container())) + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritAssignmentAsPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5176,12 +5203,21 @@ impl AstNode for GritBacktickSnippetLiteral { } impl std::fmt::Debug for GritBacktickSnippetLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritBacktickSnippetLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritBacktickSnippetLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritBacktickSnippetLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5217,9 +5253,18 @@ impl AstNode for GritBooleanLiteral { } impl std::fmt::Debug for GritBooleanLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritBooleanLiteral") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritBooleanLiteral") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("GritBooleanLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5255,17 +5300,26 @@ impl AstNode for GritBracketedPattern { } impl std::fmt::Debug for GritBracketedPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritBracketedPattern") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritBracketedPattern") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritBracketedPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5301,17 +5355,26 @@ impl AstNode for GritBracketedPredicate { } impl std::fmt::Debug for GritBracketedPredicate { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritBracketedPredicate") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("predicate", &support::DebugSyntaxResult(self.predicate())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritBracketedPredicate") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("predicate", &support::DebugSyntaxResult(self.predicate())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritBracketedPredicate").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5347,14 +5410,23 @@ impl AstNode for GritBubble { } impl std::fmt::Debug for GritBubble { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritBubble") - .field( - "bubble_token", - &support::DebugSyntaxResult(self.bubble_token()), - ) - .field("scope", &support::DebugOptionalElement(self.scope())) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritBubble") + .field( + "bubble_token", + &support::DebugSyntaxResult(self.bubble_token()), + ) + .field("scope", &support::DebugOptionalElement(self.scope())) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritBubble").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5390,17 +5462,26 @@ impl AstNode for GritBubbleScope { } impl std::fmt::Debug for GritBubbleScope { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritBubbleScope") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("variables", &self.variables()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritBubbleScope") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("variables", &self.variables()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritBubbleScope").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5436,9 +5517,18 @@ impl AstNode for GritCodeSnippet { } impl std::fmt::Debug for GritCodeSnippet { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritCodeSnippet") - .field("source", &support::DebugSyntaxResult(self.source())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritCodeSnippet") + .field("source", &support::DebugSyntaxResult(self.source())) + .finish() + } else { + f.debug_struct("GritCodeSnippet").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5474,17 +5564,26 @@ impl AstNode for GritCurlyPattern { } impl std::fmt::Debug for GritCurlyPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritCurlyPattern") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritCurlyPattern") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritCurlyPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5520,14 +5619,23 @@ impl AstNode for GritDivOperation { } impl std::fmt::Debug for GritDivOperation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritDivOperation") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "slash_token", - &support::DebugSyntaxResult(self.slash_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritDivOperation") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "slash_token", + &support::DebugSyntaxResult(self.slash_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritDivOperation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5563,9 +5671,18 @@ impl AstNode for GritDot { } impl std::fmt::Debug for GritDot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritDot") - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritDot") + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .finish() + } else { + f.debug_struct("GritDot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5601,13 +5718,22 @@ impl AstNode for GritDotdotdot { } impl std::fmt::Debug for GritDotdotdot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritDotdotdot") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("pattern", &support::DebugOptionalElement(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritDotdotdot") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("pattern", &support::DebugOptionalElement(self.pattern())) + .finish() + } else { + f.debug_struct("GritDotdotdot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5643,12 +5769,21 @@ impl AstNode for GritDoubleLiteral { } impl std::fmt::Debug for GritDoubleLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritDoubleLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritDoubleLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritDoubleLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5684,13 +5819,22 @@ impl AstNode for GritEvery { } impl std::fmt::Debug for GritEvery { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritEvery") - .field( - "every_token", - &support::DebugSyntaxResult(self.every_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritEvery") + .field( + "every_token", + &support::DebugSyntaxResult(self.every_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritEvery").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5726,21 +5870,30 @@ impl AstNode for GritFiles { } impl std::fmt::Debug for GritFiles { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritFiles") - .field( - "multifile_token", - &support::DebugSyntaxResult(self.multifile_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("files", &self.files()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritFiles") + .field( + "multifile_token", + &support::DebugSyntaxResult(self.multifile_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("files", &self.files()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritFiles").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5776,23 +5929,32 @@ impl AstNode for GritFunctionDefinition { } impl std::fmt::Debug for GritFunctionDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritFunctionDefinition") - .field( - "function_token", - &support::DebugSyntaxResult(self.function_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("args", &self.args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritFunctionDefinition") + .field( + "function_token", + &support::DebugSyntaxResult(self.function_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("args", &self.args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("GritFunctionDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5828,12 +5990,21 @@ impl AstNode for GritIntLiteral { } impl std::fmt::Debug for GritIntLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritIntLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritIntLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritIntLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5869,18 +6040,27 @@ impl AstNode for GritLanguageDeclaration { } impl std::fmt::Debug for GritLanguageDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLanguageDeclaration") - .field( - "language_token", - &support::DebugSyntaxResult(self.language_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("flavor", &support::DebugOptionalElement(self.flavor())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLanguageDeclaration") + .field( + "language_token", + &support::DebugSyntaxResult(self.language_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("flavor", &support::DebugOptionalElement(self.flavor())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("GritLanguageDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5916,17 +6096,26 @@ impl AstNode for GritLanguageFlavor { } impl std::fmt::Debug for GritLanguageFlavor { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLanguageFlavor") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("flavors", &self.flavors()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLanguageFlavor") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("flavors", &self.flavors()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritLanguageFlavor").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -5962,12 +6151,21 @@ impl AstNode for GritLanguageFlavorKind { } impl std::fmt::Debug for GritLanguageFlavorKind { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLanguageFlavorKind") - .field( - "flavor_kind", - &support::DebugSyntaxResult(self.flavor_kind()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLanguageFlavorKind") + .field( + "flavor_kind", + &support::DebugSyntaxResult(self.flavor_kind()), + ) + .finish() + } else { + f.debug_struct("GritLanguageFlavorKind").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6003,12 +6201,21 @@ impl AstNode for GritLanguageName { } impl std::fmt::Debug for GritLanguageName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLanguageName") - .field( - "language_kind", - &support::DebugSyntaxResult(self.language_kind()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLanguageName") + .field( + "language_kind", + &support::DebugSyntaxResult(self.language_kind()), + ) + .finish() + } else { + f.debug_struct("GritLanguageName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6044,13 +6251,22 @@ impl AstNode for GritLanguageSpecificSnippet { } impl std::fmt::Debug for GritLanguageSpecificSnippet { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLanguageSpecificSnippet") - .field("language", &support::DebugSyntaxResult(self.language())) - .field( - "snippet_token", - &support::DebugSyntaxResult(self.snippet_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLanguageSpecificSnippet") + .field("language", &support::DebugSyntaxResult(self.language())) + .field( + "snippet_token", + &support::DebugSyntaxResult(self.snippet_token()), + ) + .finish() + } else { + f.debug_struct("GritLanguageSpecificSnippet").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6086,22 +6302,31 @@ impl AstNode for GritLike { } impl std::fmt::Debug for GritLike { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLike") - .field("like_token", &support::DebugSyntaxResult(self.like_token())) - .field( - "threshold", - &support::DebugOptionalElement(self.threshold()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("example", &support::DebugSyntaxResult(self.example())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLike") + .field("like_token", &support::DebugSyntaxResult(self.like_token())) + .field( + "threshold", + &support::DebugOptionalElement(self.threshold()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("example", &support::DebugSyntaxResult(self.example())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritLike").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6137,17 +6362,26 @@ impl AstNode for GritLikeThreshold { } impl std::fmt::Debug for GritLikeThreshold { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritLikeThreshold") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("threshold", &support::DebugSyntaxResult(self.threshold())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritLikeThreshold") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("threshold", &support::DebugSyntaxResult(self.threshold())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritLikeThreshold").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6183,18 +6417,27 @@ impl AstNode for GritList { } impl std::fmt::Debug for GritList { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritList") - .field("name", &support::DebugOptionalElement(self.name())) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("patterns", &self.patterns()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritList") + .field("name", &support::DebugOptionalElement(self.name())) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("patterns", &self.patterns()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("GritList").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6230,18 +6473,27 @@ impl AstNode for GritListAccessor { } impl std::fmt::Debug for GritListAccessor { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritListAccessor") - .field("list", &support::DebugSyntaxResult(self.list())) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("index", &support::DebugSyntaxResult(self.index())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritListAccessor") + .field("list", &support::DebugSyntaxResult(self.list())) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("index", &support::DebugSyntaxResult(self.index())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("GritListAccessor").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6277,17 +6529,26 @@ impl AstNode for GritMap { } impl std::fmt::Debug for GritMap { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritMap") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("elements", &self.elements()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritMap") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("elements", &self.elements()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritMap").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6323,11 +6584,20 @@ impl AstNode for GritMapAccessor { } impl std::fmt::Debug for GritMapAccessor { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritMapAccessor") - .field("map", &support::DebugSyntaxResult(self.map())) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("key", &support::DebugSyntaxResult(self.key())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritMapAccessor") + .field("map", &support::DebugSyntaxResult(self.map())) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("key", &support::DebugSyntaxResult(self.key())) + .finish() + } else { + f.debug_struct("GritMapAccessor").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6363,14 +6633,23 @@ impl AstNode for GritMapElement { } impl std::fmt::Debug for GritMapElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritMapElement") - .field("key", &support::DebugSyntaxResult(self.key())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritMapElement") + .field("key", &support::DebugSyntaxResult(self.key())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("GritMapElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6406,14 +6685,23 @@ impl AstNode for GritModOperation { } impl std::fmt::Debug for GritModOperation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritModOperation") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "remainder_token", - &support::DebugSyntaxResult(self.remainder_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritModOperation") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "remainder_token", + &support::DebugSyntaxResult(self.remainder_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritModOperation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6449,11 +6737,20 @@ impl AstNode for GritMulOperation { } impl std::fmt::Debug for GritMulOperation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritMulOperation") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("star_token", &support::DebugSyntaxResult(self.star_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritMulOperation") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("star_token", &support::DebugSyntaxResult(self.star_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritMulOperation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6489,12 +6786,21 @@ impl AstNode for GritName { } impl std::fmt::Debug for GritName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritName") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritName") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6530,11 +6836,20 @@ impl AstNode for GritNamedArg { } impl std::fmt::Debug for GritNamedArg { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritNamedArg") - .field("name", &support::DebugSyntaxResult(self.name())) - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritNamedArg") + .field("name", &support::DebugSyntaxResult(self.name())) + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritNamedArg").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6570,12 +6885,21 @@ impl AstNode for GritNegativeIntLiteral { } impl std::fmt::Debug for GritNegativeIntLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritNegativeIntLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritNegativeIntLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritNegativeIntLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6611,18 +6935,27 @@ impl AstNode for GritNodeLike { } impl std::fmt::Debug for GritNodeLike { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritNodeLike") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("named_args", &self.named_args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritNodeLike") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("named_args", &self.named_args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritNodeLike").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6658,9 +6991,18 @@ impl AstNode for GritNot { } impl std::fmt::Debug for GritNot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritNot") - .field("token", &support::DebugSyntaxResult(self.token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritNot") + .field("token", &support::DebugSyntaxResult(self.token())) + .finish() + } else { + f.debug_struct("GritNot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6696,14 +7038,23 @@ impl AstNode for GritPatternAccumulate { } impl std::fmt::Debug for GritPatternAccumulate { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternAccumulate") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "add_assign_token", - &support::DebugSyntaxResult(self.add_assign_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternAccumulate") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "add_assign_token", + &support::DebugSyntaxResult(self.add_assign_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPatternAccumulate").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6739,13 +7090,22 @@ impl AstNode for GritPatternAfter { } impl std::fmt::Debug for GritPatternAfter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternAfter") - .field( - "after_token", - &support::DebugSyntaxResult(self.after_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternAfter") + .field( + "after_token", + &support::DebugSyntaxResult(self.after_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritPatternAfter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6781,18 +7141,27 @@ impl AstNode for GritPatternAnd { } impl std::fmt::Debug for GritPatternAnd { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternAnd") - .field("and_token", &support::DebugSyntaxResult(self.and_token())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("patterns", &self.patterns()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternAnd") + .field("and_token", &support::DebugSyntaxResult(self.and_token())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("patterns", &self.patterns()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPatternAnd").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6828,18 +7197,27 @@ impl AstNode for GritPatternAny { } impl std::fmt::Debug for GritPatternAny { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternAny") - .field("any_token", &support::DebugSyntaxResult(self.any_token())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("patterns", &self.patterns()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternAny") + .field("any_token", &support::DebugSyntaxResult(self.any_token())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("patterns", &self.patterns()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPatternAny").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6875,11 +7253,20 @@ impl AstNode for GritPatternAs { } impl std::fmt::Debug for GritPatternAs { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternAs") - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("variable", &support::DebugSyntaxResult(self.variable())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternAs") + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("variable", &support::DebugSyntaxResult(self.variable())) + .finish() + } else { + f.debug_struct("GritPatternAs").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6915,13 +7302,22 @@ impl AstNode for GritPatternBefore { } impl std::fmt::Debug for GritPatternBefore { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternBefore") - .field( - "before_token", - &support::DebugSyntaxResult(self.before_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternBefore") + .field( + "before_token", + &support::DebugSyntaxResult(self.before_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritPatternBefore").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -6957,17 +7353,26 @@ impl AstNode for GritPatternContains { } impl std::fmt::Debug for GritPatternContains { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternContains") - .field( - "contains_token", - &support::DebugSyntaxResult(self.contains_token()), - ) - .field("contains", &support::DebugSyntaxResult(self.contains())) - .field( - "until_clause", - &support::DebugOptionalElement(self.until_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternContains") + .field( + "contains_token", + &support::DebugSyntaxResult(self.contains_token()), + ) + .field("contains", &support::DebugSyntaxResult(self.contains())) + .field( + "until_clause", + &support::DebugOptionalElement(self.until_clause()), + ) + .finish() + } else { + f.debug_struct("GritPatternContains").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7003,28 +7408,37 @@ impl AstNode for GritPatternDefinition { } impl std::fmt::Debug for GritPatternDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternDefinition") - .field( - "visibility_token", - &support::DebugOptionalElement(self.visibility_token()), - ) - .field( - "pattern_token", - &support::DebugSyntaxResult(self.pattern_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("args", &self.args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("language", &support::DebugOptionalElement(self.language())) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternDefinition") + .field( + "visibility_token", + &support::DebugOptionalElement(self.visibility_token()), + ) + .field( + "pattern_token", + &support::DebugSyntaxResult(self.pattern_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("args", &self.args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("language", &support::DebugOptionalElement(self.language())) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("GritPatternDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7060,17 +7474,26 @@ impl AstNode for GritPatternDefinitionBody { } impl std::fmt::Debug for GritPatternDefinitionBody { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternDefinitionBody") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("patterns", &self.patterns()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternDefinitionBody") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("patterns", &self.patterns()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPatternDefinitionBody").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7106,13 +7529,22 @@ impl AstNode for GritPatternElseClause { } impl std::fmt::Debug for GritPatternElseClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternElseClause") - .field("else_token", &support::DebugSyntaxResult(self.else_token())) - .field( - "else_pattern", - &support::DebugSyntaxResult(self.else_pattern()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternElseClause") + .field("else_token", &support::DebugSyntaxResult(self.else_token())) + .field( + "else_pattern", + &support::DebugSyntaxResult(self.else_pattern()), + ) + .finish() + } else { + f.debug_struct("GritPatternElseClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7148,29 +7580,38 @@ impl AstNode for GritPatternIfElse { } impl std::fmt::Debug for GritPatternIfElse { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternIfElse") - .field("if_token", &support::DebugSyntaxResult(self.if_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "if_predicate", - &support::DebugSyntaxResult(self.if_predicate()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "then_pattern", - &support::DebugSyntaxResult(self.then_pattern()), - ) - .field( - "else_clause", - &support::DebugOptionalElement(self.else_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternIfElse") + .field("if_token", &support::DebugSyntaxResult(self.if_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "if_predicate", + &support::DebugSyntaxResult(self.if_predicate()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "then_pattern", + &support::DebugSyntaxResult(self.then_pattern()), + ) + .field( + "else_clause", + &support::DebugOptionalElement(self.else_clause()), + ) + .finish() + } else { + f.debug_struct("GritPatternIfElse").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7206,13 +7647,22 @@ impl AstNode for GritPatternIncludes { } impl std::fmt::Debug for GritPatternIncludes { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternIncludes") - .field( - "includes_token", - &support::DebugSyntaxResult(self.includes_token()), - ) - .field("includes", &support::DebugSyntaxResult(self.includes())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternIncludes") + .field( + "includes_token", + &support::DebugSyntaxResult(self.includes_token()), + ) + .field("includes", &support::DebugSyntaxResult(self.includes())) + .finish() + } else { + f.debug_struct("GritPatternIncludes").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7248,14 +7698,23 @@ impl AstNode for GritPatternLimit { } impl std::fmt::Debug for GritPatternLimit { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternLimit") - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field( - "limit_token", - &support::DebugSyntaxResult(self.limit_token()), - ) - .field("limit", &support::DebugSyntaxResult(self.limit())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternLimit") + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field( + "limit_token", + &support::DebugSyntaxResult(self.limit_token()), + ) + .field("limit", &support::DebugSyntaxResult(self.limit())) + .finish() + } else { + f.debug_struct("GritPatternLimit").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7291,13 +7750,22 @@ impl AstNode for GritPatternMaybe { } impl std::fmt::Debug for GritPatternMaybe { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternMaybe") - .field( - "maybe_token", - &support::DebugSyntaxResult(self.maybe_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternMaybe") + .field( + "maybe_token", + &support::DebugSyntaxResult(self.maybe_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritPatternMaybe").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7333,10 +7801,19 @@ impl AstNode for GritPatternNot { } impl std::fmt::Debug for GritPatternNot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternNot") - .field("not", &support::DebugSyntaxResult(self.not())) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternNot") + .field("not", &support::DebugSyntaxResult(self.not())) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritPatternNot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7372,18 +7849,27 @@ impl AstNode for GritPatternOr { } impl std::fmt::Debug for GritPatternOr { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternOr") - .field("or_token", &support::DebugSyntaxResult(self.or_token())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("patterns", &self.patterns()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternOr") + .field("or_token", &support::DebugSyntaxResult(self.or_token())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("patterns", &self.patterns()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPatternOr").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7419,21 +7905,30 @@ impl AstNode for GritPatternOrElse { } impl std::fmt::Debug for GritPatternOrElse { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternOrElse") - .field( - "orelse_token", - &support::DebugSyntaxResult(self.orelse_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("patterns", &self.patterns()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternOrElse") + .field( + "orelse_token", + &support::DebugSyntaxResult(self.orelse_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("patterns", &self.patterns()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPatternOrElse").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7469,13 +7964,22 @@ impl AstNode for GritPatternUntilClause { } impl std::fmt::Debug for GritPatternUntilClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternUntilClause") - .field( - "until_token", - &support::DebugSyntaxResult(self.until_token()), - ) - .field("until", &support::DebugSyntaxResult(self.until())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternUntilClause") + .field( + "until_token", + &support::DebugSyntaxResult(self.until_token()), + ) + .field("until", &support::DebugSyntaxResult(self.until())) + .finish() + } else { + f.debug_struct("GritPatternUntilClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7511,17 +8015,26 @@ impl AstNode for GritPatternWhere { } impl std::fmt::Debug for GritPatternWhere { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPatternWhere") - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field( - "where_token", - &support::DebugSyntaxResult(self.where_token()), - ) - .field( - "side_condition", - &support::DebugSyntaxResult(self.side_condition()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPatternWhere") + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field( + "where_token", + &support::DebugSyntaxResult(self.where_token()), + ) + .field( + "side_condition", + &support::DebugSyntaxResult(self.side_condition()), + ) + .finish() + } else { + f.debug_struct("GritPatternWhere").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7557,14 +8070,23 @@ impl AstNode for GritPredicateAccumulate { } impl std::fmt::Debug for GritPredicateAccumulate { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateAccumulate") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "add_assign_token", - &support::DebugSyntaxResult(self.add_assign_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateAccumulate") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "add_assign_token", + &support::DebugSyntaxResult(self.add_assign_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateAccumulate").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7600,21 +8122,30 @@ impl AstNode for GritPredicateAnd { } impl std::fmt::Debug for GritPredicateAnd { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateAnd") - .field( - "and_token", - &support::DebugOptionalElement(self.and_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("predicates", &self.predicates()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateAnd") + .field( + "and_token", + &support::DebugOptionalElement(self.and_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("predicates", &self.predicates()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPredicateAnd").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7650,18 +8181,27 @@ impl AstNode for GritPredicateAny { } impl std::fmt::Debug for GritPredicateAny { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateAny") - .field("any_token", &support::DebugSyntaxResult(self.any_token())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("predicates", &self.predicates()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateAny") + .field("any_token", &support::DebugSyntaxResult(self.any_token())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("predicates", &self.predicates()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPredicateAny").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7697,11 +8237,20 @@ impl AstNode for GritPredicateAssignment { } impl std::fmt::Debug for GritPredicateAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateAssignment") - .field("container", &support::DebugSyntaxResult(self.container())) - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateAssignment") + .field("container", &support::DebugSyntaxResult(self.container())) + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritPredicateAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7737,18 +8286,27 @@ impl AstNode for GritPredicateCall { } impl std::fmt::Debug for GritPredicateCall { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateCall") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("named_args", &self.named_args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateCall") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("named_args", &self.named_args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritPredicateCall").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7784,17 +8342,26 @@ impl AstNode for GritPredicateCurly { } impl std::fmt::Debug for GritPredicateCurly { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateCurly") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("predicates", &self.predicates()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateCurly") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("predicates", &self.predicates()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPredicateCurly").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7830,23 +8397,32 @@ impl AstNode for GritPredicateDefinition { } impl std::fmt::Debug for GritPredicateDefinition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateDefinition") - .field( - "predicate_token", - &support::DebugSyntaxResult(self.predicate_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("args", &self.args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateDefinition") + .field( + "predicate_token", + &support::DebugSyntaxResult(self.predicate_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("args", &self.args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("GritPredicateDefinition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7882,13 +8458,22 @@ impl AstNode for GritPredicateElseClause { } impl std::fmt::Debug for GritPredicateElseClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateElseClause") - .field("else_token", &support::DebugSyntaxResult(self.else_token())) - .field( - "else_predicate", - &support::DebugSyntaxResult(self.else_predicate()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateElseClause") + .field("else_token", &support::DebugSyntaxResult(self.else_token())) + .field( + "else_predicate", + &support::DebugSyntaxResult(self.else_predicate()), + ) + .finish() + } else { + f.debug_struct("GritPredicateElseClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7924,14 +8509,23 @@ impl AstNode for GritPredicateEqual { } impl std::fmt::Debug for GritPredicateEqual { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateEqual") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "equality_token", - &support::DebugSyntaxResult(self.equality_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateEqual") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "equality_token", + &support::DebugSyntaxResult(self.equality_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateEqual").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -7967,14 +8561,23 @@ impl AstNode for GritPredicateGreater { } impl std::fmt::Debug for GritPredicateGreater { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateGreater") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateGreater") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateGreater").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8010,14 +8613,23 @@ impl AstNode for GritPredicateGreaterEqual { } impl std::fmt::Debug for GritPredicateGreaterEqual { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateGreaterEqual") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "greater_than_equal_token", - &support::DebugSyntaxResult(self.greater_than_equal_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateGreaterEqual") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "greater_than_equal_token", + &support::DebugSyntaxResult(self.greater_than_equal_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateGreaterEqual").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8053,29 +8665,38 @@ impl AstNode for GritPredicateIfElse { } impl std::fmt::Debug for GritPredicateIfElse { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateIfElse") - .field("if_token", &support::DebugSyntaxResult(self.if_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "if_predicate", - &support::DebugSyntaxResult(self.if_predicate()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "then_predicate", - &support::DebugSyntaxResult(self.then_predicate()), - ) - .field( - "else_clause", - &support::DebugOptionalElement(self.else_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateIfElse") + .field("if_token", &support::DebugSyntaxResult(self.if_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "if_predicate", + &support::DebugSyntaxResult(self.if_predicate()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "then_predicate", + &support::DebugSyntaxResult(self.then_predicate()), + ) + .field( + "else_clause", + &support::DebugOptionalElement(self.else_clause()), + ) + .finish() + } else { + f.debug_struct("GritPredicateIfElse").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8111,14 +8732,23 @@ impl AstNode for GritPredicateLess { } impl std::fmt::Debug for GritPredicateLess { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateLess") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateLess") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateLess").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8154,14 +8784,23 @@ impl AstNode for GritPredicateLessEqual { } impl std::fmt::Debug for GritPredicateLessEqual { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateLessEqual") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "less_than_equal_token", - &support::DebugSyntaxResult(self.less_than_equal_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateLessEqual") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "less_than_equal_token", + &support::DebugSyntaxResult(self.less_than_equal_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateLessEqual").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8197,14 +8836,23 @@ impl AstNode for GritPredicateMatch { } impl std::fmt::Debug for GritPredicateMatch { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateMatch") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "match_token", - &support::DebugSyntaxResult(self.match_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateMatch") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "match_token", + &support::DebugSyntaxResult(self.match_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateMatch").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8240,13 +8888,22 @@ impl AstNode for GritPredicateMaybe { } impl std::fmt::Debug for GritPredicateMaybe { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateMaybe") - .field( - "maybe_token", - &support::DebugSyntaxResult(self.maybe_token()), - ) - .field("predicate", &support::DebugSyntaxResult(self.predicate())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateMaybe") + .field( + "maybe_token", + &support::DebugSyntaxResult(self.maybe_token()), + ) + .field("predicate", &support::DebugSyntaxResult(self.predicate())) + .finish() + } else { + f.debug_struct("GritPredicateMaybe").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8282,10 +8939,19 @@ impl AstNode for GritPredicateNot { } impl std::fmt::Debug for GritPredicateNot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateNot") - .field("not", &support::DebugSyntaxResult(self.not())) - .field("predicate", &support::DebugSyntaxResult(self.predicate())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateNot") + .field("not", &support::DebugSyntaxResult(self.not())) + .field("predicate", &support::DebugSyntaxResult(self.predicate())) + .finish() + } else { + f.debug_struct("GritPredicateNot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8321,14 +8987,23 @@ impl AstNode for GritPredicateNotEqual { } impl std::fmt::Debug for GritPredicateNotEqual { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateNotEqual") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "inequality_token", - &support::DebugSyntaxResult(self.inequality_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateNotEqual") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "inequality_token", + &support::DebugSyntaxResult(self.inequality_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateNotEqual").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8364,18 +9039,27 @@ impl AstNode for GritPredicateOr { } impl std::fmt::Debug for GritPredicateOr { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateOr") - .field("or_token", &support::DebugSyntaxResult(self.or_token())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("predicates", &self.predicates()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateOr") + .field("or_token", &support::DebugSyntaxResult(self.or_token())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("predicates", &self.predicates()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritPredicateOr").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8411,13 +9095,22 @@ impl AstNode for GritPredicateReturn { } impl std::fmt::Debug for GritPredicateReturn { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateReturn") - .field( - "return_token", - &support::DebugSyntaxResult(self.return_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateReturn") + .field( + "return_token", + &support::DebugSyntaxResult(self.return_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritPredicateReturn").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8453,18 +9146,27 @@ impl AstNode for GritPredicateRewrite { } impl std::fmt::Debug for GritPredicateRewrite { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritPredicateRewrite") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "annotation", - &support::DebugOptionalElement(self.annotation()), - ) - .field( - "fat_arrow_token", - &support::DebugSyntaxResult(self.fat_arrow_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritPredicateRewrite") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "annotation", + &support::DebugOptionalElement(self.annotation()), + ) + .field( + "fat_arrow_token", + &support::DebugSyntaxResult(self.fat_arrow_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritPredicateRewrite").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8500,12 +9202,21 @@ impl AstNode for GritRawBacktickSnippetLiteral { } impl std::fmt::Debug for GritRawBacktickSnippetLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritRawBacktickSnippetLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritRawBacktickSnippetLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritRawBacktickSnippetLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8541,12 +9252,21 @@ impl AstNode for GritRegexLiteral { } impl std::fmt::Debug for GritRegexLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritRegexLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritRegexLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritRegexLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8582,13 +9302,22 @@ impl AstNode for GritRegexPattern { } impl std::fmt::Debug for GritRegexPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritRegexPattern") - .field("regex", &support::DebugSyntaxResult(self.regex())) - .field( - "variables", - &support::DebugOptionalElement(self.variables()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritRegexPattern") + .field("regex", &support::DebugSyntaxResult(self.regex())) + .field( + "variables", + &support::DebugOptionalElement(self.variables()), + ) + .finish() + } else { + f.debug_struct("GritRegexPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8624,17 +9353,26 @@ impl AstNode for GritRegexPatternVariables { } impl std::fmt::Debug for GritRegexPatternVariables { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritRegexPatternVariables") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("args", &self.args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritRegexPatternVariables") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("args", &self.args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritRegexPatternVariables").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8670,18 +9408,27 @@ impl AstNode for GritRewrite { } impl std::fmt::Debug for GritRewrite { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritRewrite") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "annotation", - &support::DebugOptionalElement(self.annotation()), - ) - .field( - "fat_arrow_token", - &support::DebugSyntaxResult(self.fat_arrow_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritRewrite") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "annotation", + &support::DebugOptionalElement(self.annotation()), + ) + .field( + "fat_arrow_token", + &support::DebugSyntaxResult(self.fat_arrow_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritRewrite").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8717,16 +9464,25 @@ impl AstNode for GritRoot { } impl std::fmt::Debug for GritRoot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritRoot") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field("version", &support::DebugOptionalElement(self.version())) - .field("language", &support::DebugOptionalElement(self.language())) - .field("definitions", &self.definitions()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritRoot") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field("version", &support::DebugOptionalElement(self.version())) + .field("language", &support::DebugOptionalElement(self.language())) + .field("definitions", &self.definitions()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("GritRoot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8762,21 +9518,30 @@ impl AstNode for GritSequential { } impl std::fmt::Debug for GritSequential { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritSequential") - .field( - "sequential_token", - &support::DebugSyntaxResult(self.sequential_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("sequential", &self.sequential()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritSequential") + .field( + "sequential_token", + &support::DebugSyntaxResult(self.sequential_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("sequential", &self.sequential()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("GritSequential").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8812,12 +9577,21 @@ impl AstNode for GritSnippetRegexLiteral { } impl std::fmt::Debug for GritSnippetRegexLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritSnippetRegexLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritSnippetRegexLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritSnippetRegexLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8853,10 +9627,19 @@ impl AstNode for GritSome { } impl std::fmt::Debug for GritSome { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritSome") - .field("some_token", &support::DebugSyntaxResult(self.some_token())) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritSome") + .field("some_token", &support::DebugSyntaxResult(self.some_token())) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("GritSome").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8892,12 +9675,21 @@ impl AstNode for GritStringLiteral { } impl std::fmt::Debug for GritStringLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritStringLiteral") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritStringLiteral") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritStringLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8933,14 +9725,23 @@ impl AstNode for GritSubOperation { } impl std::fmt::Debug for GritSubOperation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritSubOperation") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "minus_token", - &support::DebugSyntaxResult(self.minus_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritSubOperation") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "minus_token", + &support::DebugSyntaxResult(self.minus_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("GritSubOperation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -8976,12 +9777,21 @@ impl AstNode for GritUndefinedLiteral { } impl std::fmt::Debug for GritUndefinedLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritUndefinedLiteral") - .field( - "token_token", - &support::DebugSyntaxResult(self.token_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritUndefinedLiteral") + .field( + "token_token", + &support::DebugSyntaxResult(self.token_token()), + ) + .finish() + } else { + f.debug_struct("GritUndefinedLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9017,12 +9827,21 @@ impl AstNode for GritUnderscore { } impl std::fmt::Debug for GritUnderscore { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritUnderscore") - .field( - "token_token", - &support::DebugSyntaxResult(self.token_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritUnderscore") + .field( + "token_token", + &support::DebugSyntaxResult(self.token_token()), + ) + .finish() + } else { + f.debug_struct("GritUnderscore").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9058,12 +9877,21 @@ impl AstNode for GritVariable { } impl std::fmt::Debug for GritVariable { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritVariable") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritVariable") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("GritVariable").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9099,25 +9927,34 @@ impl AstNode for GritVersion { } impl std::fmt::Debug for GritVersion { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritVersion") - .field( - "engine_token", - &support::DebugSyntaxResult(self.engine_token()), - ) - .field( - "biome_token", - &support::DebugSyntaxResult(self.biome_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("version", &support::DebugSyntaxResult(self.version())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritVersion") + .field( + "engine_token", + &support::DebugSyntaxResult(self.engine_token()), + ) + .field( + "biome_token", + &support::DebugSyntaxResult(self.biome_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("version", &support::DebugSyntaxResult(self.version())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("GritVersion").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -9153,17 +9990,26 @@ impl AstNode for GritWithin { } impl std::fmt::Debug for GritWithin { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("GritWithin") - .field( - "within_token", - &support::DebugSyntaxResult(self.within_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field( - "until_clause", - &support::DebugOptionalElement(self.until_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("GritWithin") + .field( + "within_token", + &support::DebugSyntaxResult(self.within_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field( + "until_clause", + &support::DebugOptionalElement(self.until_clause()), + ) + .finish() + } else { + f.debug_struct("GritWithin").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_html_syntax/src/generated/nodes.rs b/crates/biome_html_syntax/src/generated/nodes.rs index 0d8e14a5e5ac..20551851fab5 100644 --- a/crates/biome_html_syntax/src/generated/nodes.rs +++ b/crates/biome_html_syntax/src/generated/nodes.rs @@ -651,13 +651,22 @@ impl AstNode for HtmlAttribute { } impl std::fmt::Debug for HtmlAttribute { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlAttribute") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "initializer", - &support::DebugOptionalElement(self.initializer()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlAttribute") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "initializer", + &support::DebugOptionalElement(self.initializer()), + ) + .finish() + } else { + f.debug_struct("HtmlAttribute").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -693,10 +702,19 @@ impl AstNode for HtmlAttributeInitializerClause { } impl std::fmt::Debug for HtmlAttributeInitializerClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlAttributeInitializerClause") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlAttributeInitializerClause") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("HtmlAttributeInitializerClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -732,21 +750,30 @@ impl AstNode for HtmlClosingElement { } impl std::fmt::Debug for HtmlClosingElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlClosingElement") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field( - "slash_token", - &support::DebugSyntaxResult(self.slash_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlClosingElement") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field( + "slash_token", + &support::DebugSyntaxResult(self.slash_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("HtmlClosingElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -782,20 +809,29 @@ impl AstNode for HtmlComment { } impl std::fmt::Debug for HtmlComment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlComment") - .field( - "comment_start_token", - &support::DebugSyntaxResult(self.comment_start_token()), - ) - .field( - "content_token", - &support::DebugSyntaxResult(self.content_token()), - ) - .field( - "comment_end_token", - &support::DebugSyntaxResult(self.comment_end_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlComment") + .field( + "comment_start_token", + &support::DebugSyntaxResult(self.comment_start_token()), + ) + .field( + "content_token", + &support::DebugSyntaxResult(self.content_token()), + ) + .field( + "comment_end_token", + &support::DebugSyntaxResult(self.comment_end_token()), + ) + .finish() + } else { + f.debug_struct("HtmlComment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -831,12 +867,21 @@ impl AstNode for HtmlContent { } impl std::fmt::Debug for HtmlContent { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlContent") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlContent") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("HtmlContent").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -872,37 +917,46 @@ impl AstNode for HtmlDirective { } impl std::fmt::Debug for HtmlDirective { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlDirective") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .field( - "doctype_token", - &support::DebugSyntaxResult(self.doctype_token()), - ) - .field( - "html_token", - &support::DebugOptionalElement(self.html_token()), - ) - .field( - "quirk_token", - &support::DebugOptionalElement(self.quirk_token()), - ) - .field( - "public_id_token", - &support::DebugOptionalElement(self.public_id_token()), - ) - .field( - "system_id_token", - &support::DebugOptionalElement(self.system_id_token()), - ) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlDirective") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .field( + "doctype_token", + &support::DebugSyntaxResult(self.doctype_token()), + ) + .field( + "html_token", + &support::DebugOptionalElement(self.html_token()), + ) + .field( + "quirk_token", + &support::DebugOptionalElement(self.quirk_token()), + ) + .field( + "public_id_token", + &support::DebugOptionalElement(self.public_id_token()), + ) + .field( + "system_id_token", + &support::DebugOptionalElement(self.system_id_token()), + ) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("HtmlDirective").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -938,17 +992,26 @@ impl AstNode for HtmlElement { } impl std::fmt::Debug for HtmlElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlElement") - .field( - "opening_element", - &support::DebugSyntaxResult(self.opening_element()), - ) - .field("children", &self.children()) - .field( - "closing_element", - &support::DebugSyntaxResult(self.closing_element()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlElement") + .field( + "opening_element", + &support::DebugSyntaxResult(self.opening_element()), + ) + .field("children", &self.children()) + .field( + "closing_element", + &support::DebugSyntaxResult(self.closing_element()), + ) + .finish() + } else { + f.debug_struct("HtmlElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -984,12 +1047,21 @@ impl AstNode for HtmlName { } impl std::fmt::Debug for HtmlName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlName") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlName") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("HtmlName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1025,18 +1097,27 @@ impl AstNode for HtmlOpeningElement { } impl std::fmt::Debug for HtmlOpeningElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlOpeningElement") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("attributes", &self.attributes()) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlOpeningElement") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("attributes", &self.attributes()) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("HtmlOpeningElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1072,18 +1153,27 @@ impl AstNode for HtmlRoot { } impl std::fmt::Debug for HtmlRoot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlRoot") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field( - "directive", - &support::DebugOptionalElement(self.directive()), - ) - .field("html", &self.html()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlRoot") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field( + "directive", + &support::DebugOptionalElement(self.directive()), + ) + .field("html", &self.html()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("HtmlRoot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1119,22 +1209,31 @@ impl AstNode for HtmlSelfClosingElement { } impl std::fmt::Debug for HtmlSelfClosingElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlSelfClosingElement") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("attributes", &self.attributes()) - .field( - "slash_token", - &support::DebugOptionalElement(self.slash_token()), - ) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlSelfClosingElement") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("attributes", &self.attributes()) + .field( + "slash_token", + &support::DebugOptionalElement(self.slash_token()), + ) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("HtmlSelfClosingElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1170,12 +1269,21 @@ impl AstNode for HtmlString { } impl std::fmt::Debug for HtmlString { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("HtmlString") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("HtmlString") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("HtmlString").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_js_parser/src/syntax/expr.rs b/crates/biome_js_parser/src/syntax/expr.rs index 0c534153f50b..29a1f7a7350c 100644 --- a/crates/biome_js_parser/src/syntax/expr.rs +++ b/crates/biome_js_parser/src/syntax/expr.rs @@ -513,116 +513,69 @@ fn parse_binary_or_logical_expression( left_precedence: OperatorPrecedence, context: ExpressionContext, ) -> ParsedSyntax { - // test js private_name_presence_check - // class A { - // #prop; - // test() { - // #prop in this - // } - // } - let left = parse_unary_expr(p, context).or_else(|| parse_private_name(p)); - - parse_binary_or_logical_expression_recursive(p, left, left_precedence, context) -} + let mut left = parse_unary_expr(p, context).or_else(|| parse_private_name(p)); -// test js binary_expressions -// 5 * 5 -// 6 ** 6 ** 7 -// 1 + 2 * 3 -// (1 + 2) * 3 -// 1 / 2 -// 74 in foo -// foo instanceof Array -// foo ?? bar -// a >> b -// a >>> b -// 1 + 1 + 1 + 1 -// 5 + 6 - 1 * 2 / 1 ** 6 -// class Test { #name; test() { true && #name in {} } } - -// test_err js binary_expressions_err -// foo(foo +); -// foo + * 2; -// !foo * bar; -fn parse_binary_or_logical_expression_recursive( - p: &mut JsParser, - mut left: ParsedSyntax, - left_precedence: OperatorPrecedence, - context: ExpressionContext, -) -> ParsedSyntax { - // Use a loop to eat all binary expressions with the same precedence. - // At first, the algorithm makes the impression that it recurse for every right-hand side expression. - // This is true, but `parse_binary_or_logical_expression` immediately returns if the - // current operator has the same or a lower precedence than the left-hand side expression. Thus, - // the algorithm goes at most `count(OperatorPrecedence)` levels deep. - loop { - // test_err js js_right_shift_comments - // 1 >> /* a comment */ > 2; - let op = p.re_lex(JsReLexContext::BinaryOperator); + let mut stack: Vec<(OperatorPrecedence, Option<(JsSyntaxKind, Marker)>)> = + vec![(left_precedence, None)]; - if (op == T![as] && p.has_preceding_line_break()) - || (op == T![satisfies] && p.has_preceding_line_break()) - || (op == T![in] && !context.is_in_included()) - { - break; - } + while let Some((mut left_precedence, previous_marker)) = stack.pop() { + if let Some((expression_kind, m)) = previous_marker { + left.or_add_diagnostic(p, expected_expression); - // This isn't spec compliant but improves error recovery in case the `}` is missing - // inside of a JSX attribute expression value or an expression child. - // Prevents that it parses `{ 4 + 3 - break; + left = Present(m.complete(p, expression_kind)); } - let new_precedence = match OperatorPrecedence::try_from_binary_operator(op) { - Some(precedence) => precedence, - // Not a binary operator - None => break, - }; + // Use a loop to eat all binary expressions with the same precedence. + // At first, the algorithm makes the impression that it recurse for every right-hand side expression. + // This is true, but `parse_binary_or_logical_expression` immediately returns if the + // current operator has the same or a lower precedence than the left-hand side expression. Thus, + // the algorithm goes at most `count(OperatorPrecedence)` levels deep. + loop { + let op = p.re_lex(JsReLexContext::BinaryOperator); + + if (op == T![as] && p.has_preceding_line_break()) + || (op == T![satisfies] && p.has_preceding_line_break()) + || (op == T![in] && !context.is_in_included()) + { + break; + } - let stop_at_current_operator = if new_precedence.is_right_to_left() { - new_precedence < left_precedence - } else { - new_precedence <= left_precedence - }; + // This isn't spec compliant but improves error recovery in case the `}` is missing + // inside of a JSX attribute expression value or an expression child. + // Prevents that it parses ` precedence, + // Not a binary operator + None => break, + }; - let op_range = p.cur_range(); + let stop_at_current_operator = if new_precedence.is_right_to_left() { + new_precedence < left_precedence + } else { + new_precedence <= left_precedence + }; - let mut is_bogus = false; - if let Present(left) = &mut left { - // test js exponent_unary_parenthesized - // (delete a.b) ** 2; - // (void ident) ** 2; - // (typeof ident) ** 2; - // (-3) ** 2; - // (+3) ** 2; - // (~3) ** 2; - // (!true) ** 2; - - // test_err js exponent_unary_unparenthesized - // delete a.b ** 2; - // void ident ** 2; - // typeof ident ** 2; - // -3 ** 2; - // +3 ** 2; - // ~3 ** 2; - // !true ** 2; - - if op == T![**] && left.kind(p) == JS_UNARY_EXPRESSION { - let err = p + if stop_at_current_operator { + break; + } + + let op_range = p.cur_range(); + + let mut is_bogus = false; + if let Present(left) = &mut left { + if op == T![**] && left.kind(p) == JS_UNARY_EXPRESSION { + let err = p .err_builder( "unparenthesized unary expression can't appear on the left-hand side of '**'", left.range(p) @@ -630,129 +583,91 @@ fn parse_binary_or_logical_expression_recursive( .with_detail(op_range, "The operation") .with_detail(left.range(p), "The left-hand side"); + p.error(err); + is_bogus = true; + } else if op != T![in] && left.kind(p) == JS_PRIVATE_NAME { + p.error(private_names_only_allowed_on_left_side_of_in_expression( + p, + left.range(p), + )); + left.change_kind(p, JS_BOGUS_EXPRESSION); + } + } else { + let err = p + .err_builder( + format!( + "Expected an expression for the left hand side of the `{}` operator.", + p.text(op_range), + ), + op_range, + ) + .with_hint("This operator requires a left hand side value"); p.error(err); - is_bogus = true; - } else if op != T![in] && left.kind(p) == JS_PRIVATE_NAME { - p.error(private_names_only_allowed_on_left_side_of_in_expression( - p, - left.range(p), - )); - left.change_kind(p, JS_BOGUS_EXPRESSION); } - } else { - let err = p - .err_builder( - format!( - "Expected an expression for the left hand side of the `{}` operator.", - p.text(op_range), - ), - op_range, - ) - .with_hint("This operator requires a left hand side value"); - p.error(err); - } - let m = left.precede(p); - p.bump(op); - - // test ts ts_as_expression - // let x: any = "string"; - // let y = x as string; - // let z = x as const; - // let not_an_as_expression = x - // as; - // let precedence = "hello" as const + 3 as number as number; - if op == T![as] { - parse_ts_type(p, TypeContext::default()).or_add_diagnostic(p, expected_ts_type); - let mut as_expression = m.complete(p, TS_AS_EXPRESSION); - - if TypeScript.is_unsupported(p) { - p.error(ts_only_syntax_error( - p, - "'as' expression", - as_expression.range(p), - )); - as_expression.change_to_bogus(p); - } - left = Present(as_expression); - continue; - } + let m = left.precede(p); + p.bump(op); - // test ts ts_satisfies_expression - // interface A { - // a: string - // }; - // let x = { a: 'test' } satisfies A; - // let y = { a: 'test', b: 'test' } satisfies A; - // const z = undefined satisfies 1; - // let not_a_satisfies_expression = undefined - // satisfies; - // let precedence = "hello" satisfies string + 3 satisfies number satisfies number; - - // test_err js ts_satisfies_expression - // let x = "hello" satisfies string; - if op == T![satisfies] { - parse_ts_type(p, TypeContext::default()).or_add_diagnostic(p, expected_ts_type); - let mut satisfies_expression = m.complete(p, TS_SATISFIES_EXPRESSION); - - if TypeScript.is_unsupported(p) { - p.error(ts_only_syntax_error( - p, - "'satisfies' expression", - satisfies_expression.range(p), - )); - satisfies_expression.change_to_bogus(p); + if op == T![as] { + parse_ts_type(p, TypeContext::default()).or_add_diagnostic(p, expected_ts_type); + let mut as_expression = m.complete(p, TS_AS_EXPRESSION); + + if TypeScript.is_unsupported(p) { + p.error(ts_only_syntax_error( + p, + "'as' expression", + as_expression.range(p), + )); + as_expression.change_to_bogus(p); + } + left = Present(as_expression); + continue; } - left = Present(satisfies_expression); - continue; - } - parse_binary_or_logical_expression(p, new_precedence, context) - .or_add_diagnostic(p, expected_expression); + if op == T![satisfies] { + parse_ts_type(p, TypeContext::default()).or_add_diagnostic(p, expected_ts_type); + let mut satisfies_expression = m.complete(p, TS_SATISFIES_EXPRESSION); - let expression_kind = if is_bogus { - JS_BOGUS_EXPRESSION - } else { - match op { - // test js logical_expressions - // foo ?? bar - // a || b - // a && b - // - // test_err js logical_expressions_err - // foo ?? * 2; - // !foo && bar; - // foo(foo ||) - T![??] | T![||] | T![&&] => JS_LOGICAL_EXPRESSION, - T![instanceof] => JS_INSTANCEOF_EXPRESSION, - T![in] => JS_IN_EXPRESSION, - _ => JS_BINARY_EXPRESSION, + if TypeScript.is_unsupported(p) { + p.error(ts_only_syntax_error( + p, + "'satisfies' expression", + satisfies_expression.range(p), + )); + satisfies_expression.change_to_bogus(p); + } + left = Present(satisfies_expression); + continue; } - }; - left = Present(m.complete(p, expression_kind)); - } - - if let Present(left) = &mut left { - // Left at this point becomes the right-hand side of a binary expression - // or is a standalone expression. Private names aren't allowed as standalone expressions - // nor on the right-hand side - if left.kind(p) == JS_PRIVATE_NAME { - // test_err js private_name_presence_check_recursive - // class A { - // #prop; - // test() { - // #prop in #prop in this; - // 5 + #prop; - // #prop - // #prop + 5; - // } - // } - left.change_kind(p, JS_BOGUS_EXPRESSION); - p.error(private_names_only_allowed_on_left_side_of_in_expression( - p, - left.range(p), - )); + let expression_kind = if is_bogus { + JS_BOGUS_EXPRESSION + } else { + match op { + T![??] | T![||] | T![&&] => JS_LOGICAL_EXPRESSION, + T![instanceof] => JS_INSTANCEOF_EXPRESSION, + T![in] => JS_IN_EXPRESSION, + _ => JS_BINARY_EXPRESSION, + } + }; + + stack.push((left_precedence, Some((expression_kind, m)))); + + left_precedence = new_precedence; + left = parse_unary_expr(p, context).or_else(|| parse_private_name(p)); + } + + if let Present(left) = &mut left { + // Left at this point becomes the right-hand side of a binary expression + // or is a standalone expression. Private names aren't allowed as standalone expressions + // nor on the right-hand side + if left.kind(p) == JS_PRIVATE_NAME { + left.change_kind(p, JS_BOGUS_EXPRESSION); + p.error(private_names_only_allowed_on_left_side_of_in_expression( + p, + left.range(p), + )); + } } } diff --git a/crates/biome_js_parser/tests/js_test_suite/ok/many_empty_strings.js b/crates/biome_js_parser/tests/js_test_suite/ok/many_empty_strings.js new file mode 100644 index 000000000000..86874f888246 --- /dev/null +++ b/crates/biome_js_parser/tests/js_test_suite/ok/many_empty_strings.js @@ -0,0 +1,2515 @@ +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' diff --git a/crates/biome_js_parser/tests/js_test_suite/ok/many_empty_strings.js.snap b/crates/biome_js_parser/tests/js_test_suite/ok/many_empty_strings.js.snap new file mode 100644 index 000000000000..4fef657ca43c --- /dev/null +++ b/crates/biome_js_parser/tests/js_test_suite/ok/many_empty_strings.js.snap @@ -0,0 +1,12710 @@ +--- +source: crates/biome_js_parser/tests/spec_test.rs +expression: snapshot +--- +## Input + +```js +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +``` + + +## AST + +``` +JsModule { + bom_token: missing (optional), + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression, + operator_token: PLUS@12493..12494 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12494..12498 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12498..12499 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12499..12503 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12503..12504 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12504..12508 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12508..12509 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12509..12513 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12513..12514 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12514..12518 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12518..12519 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12519..12523 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12523..12524 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12524..12528 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12528..12529 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12529..12533 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12533..12534 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12534..12538 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12538..12539 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12539..12543 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12543..12544 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12544..12548 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12548..12549 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12549..12553 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12553..12554 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12554..12558 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12558..12559 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12559..12563 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12563..12564 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12564..12568 "''" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: PLUS@12568..12569 "+" [] [], + right: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@12569..12572 "''" [Newline("\n")] [], + }, + }, + semicolon_token: missing (optional), + }, + ], + eof_token: EOF@12572..12573 "" [Newline("\n")] [], +} +``` + +## CST + +``` +0: JS_MODULE@0..12573 + 0: (empty) + 1: (empty) + 2: JS_DIRECTIVE_LIST@0..0 + 3: JS_MODULE_ITEM_LIST@0..12572 + 0: JS_EXPRESSION_STATEMENT@0..12572 + 0: JS_BINARY_EXPRESSION@0..12572 + 0: JS_BINARY_EXPRESSION@0..12568 + 0: JS_BINARY_EXPRESSION@0..12563 + 0: JS_BINARY_EXPRESSION@0..12558 + 0: JS_BINARY_EXPRESSION@0..12553 + 0: JS_BINARY_EXPRESSION@0..12548 + 0: JS_BINARY_EXPRESSION@0..12543 + 0: JS_BINARY_EXPRESSION@0..12538 + 0: JS_BINARY_EXPRESSION@0..12533 + 0: JS_BINARY_EXPRESSION@0..12528 + 0: JS_BINARY_EXPRESSION@0..12523 + 0: JS_BINARY_EXPRESSION@0..12518 + 0: JS_BINARY_EXPRESSION@0..12513 + 0: JS_BINARY_EXPRESSION@0..12508 + 0: JS_BINARY_EXPRESSION@0..12503 + 0: JS_BINARY_EXPRESSION@0..12498 + 0: JS_BINARY_EXPRESSION@0..12493 + 0: JS_BINARY_EXPRESSION@0..12488 + 0: JS_BINARY_EXPRESSION@0..12483 + 0: JS_BINARY_EXPRESSION@0..12478 + 0: JS_BINARY_EXPRESSION@0..12473 + 0: JS_BINARY_EXPRESSION@0..12468 + 0: JS_BINARY_EXPRESSION@0..12463 + 0: JS_BINARY_EXPRESSION@0..12458 + 0: JS_BINARY_EXPRESSION@0..12453 + 0: JS_BINARY_EXPRESSION@0..12448 + 0: JS_BINARY_EXPRESSION@0..12443 + 0: JS_BINARY_EXPRESSION@0..12438 + 0: JS_BINARY_EXPRESSION@0..12433 + 0: JS_BINARY_EXPRESSION@0..12428 + 0: JS_BINARY_EXPRESSION@0..12423 + 0: JS_BINARY_EXPRESSION@0..12418 + 0: JS_BINARY_EXPRESSION@0..12413 + 0: JS_BINARY_EXPRESSION@0..12408 + 0: JS_BINARY_EXPRESSION@0..12403 + 0: JS_BINARY_EXPRESSION@0..12398 + 0: JS_BINARY_EXPRESSION@0..12393 + 0: JS_BINARY_EXPRESSION@0..12388 + 0: JS_BINARY_EXPRESSION@0..12383 + 0: JS_BINARY_EXPRESSION@0..12378 + 0: JS_BINARY_EXPRESSION@0..12373 + 0: JS_BINARY_EXPRESSION@0..12368 + 0: JS_BINARY_EXPRESSION@0..12363 + 0: JS_BINARY_EXPRESSION@0..12358 + 0: JS_BINARY_EXPRESSION@0..12353 + 0: JS_BINARY_EXPRESSION@0..12348 + 0: JS_BINARY_EXPRESSION@0..12343 + 0: JS_BINARY_EXPRESSION@0..12338 + 0: JS_BINARY_EXPRESSION@0..12333 + 0: JS_BINARY_EXPRESSION@0..12328 + 0: JS_BINARY_EXPRESSION@0..12323 + 0: JS_BINARY_EXPRESSION@0..12318 + 0: JS_BINARY_EXPRESSION@0..12313 + 0: JS_BINARY_EXPRESSION@0..12308 + 0: JS_BINARY_EXPRESSION@0..12303 + 0: JS_BINARY_EXPRESSION@0..12298 + 0: JS_BINARY_EXPRESSION@0..12293 + 0: JS_BINARY_EXPRESSION@0..12288 + 0: JS_BINARY_EXPRESSION@0..12283 + 0: JS_BINARY_EXPRESSION@0..12278 + 0: JS_BINARY_EXPRESSION@0..12273 + 0: JS_BINARY_EXPRESSION@0..12268 + 0: JS_BINARY_EXPRESSION@0..12263 + 0: JS_BINARY_EXPRESSION@0..12258 + 0: JS_BINARY_EXPRESSION@0..12253 + 0: JS_BINARY_EXPRESSION@0..12248 + 0: JS_BINARY_EXPRESSION@0..12243 + 0: JS_BINARY_EXPRESSION@0..12238 + 0: JS_BINARY_EXPRESSION@0..12233 + 0: JS_BINARY_EXPRESSION@0..12228 + 0: JS_BINARY_EXPRESSION@0..12223 + 0: JS_BINARY_EXPRESSION@0..12218 + 0: JS_BINARY_EXPRESSION@0..12213 + 0: JS_BINARY_EXPRESSION@0..12208 + 0: JS_BINARY_EXPRESSION@0..12203 + 0: JS_BINARY_EXPRESSION@0..12198 + 0: JS_BINARY_EXPRESSION@0..12193 + 0: JS_BINARY_EXPRESSION@0..12188 + 0: JS_BINARY_EXPRESSION@0..12183 + 0: JS_BINARY_EXPRESSION@0..12178 + 0: JS_BINARY_EXPRESSION@0..12173 + 0: JS_BINARY_EXPRESSION@0..12168 + 0: JS_BINARY_EXPRESSION@0..12163 + 0: JS_BINARY_EXPRESSION@0..12158 + 0: JS_BINARY_EXPRESSION@0..12153 + 0: JS_BINARY_EXPRESSION@0..12148 + 0: JS_BINARY_EXPRESSION@0..12143 + 0: JS_BINARY_EXPRESSION@0..12138 + 0: JS_BINARY_EXPRESSION@0..12133 + 0: JS_BINARY_EXPRESSION@0..12128 + 0: JS_BINARY_EXPRESSION@0..12123 + 0: JS_BINARY_EXPRESSION@0..12118 + 0: JS_BINARY_EXPRESSION@0..12113 + 0: JS_BINARY_EXPRESSION@0..12108 + 0: JS_BINARY_EXPRESSION@0..12103 + 0: JS_BINARY_EXPRESSION@0..12098 + 0: JS_BINARY_EXPRESSION@0..12093 + 0: JS_BINARY_EXPRESSION@0..12088 + 0: JS_BINARY_EXPRESSION@0..12083 + 0: JS_BINARY_EXPRESSION@0..12078 + 0: JS_BINARY_EXPRESSION@0..12073 + 0: JS_BINARY_EXPRESSION@0..12068 + 0: JS_BINARY_EXPRESSION@0..12063 + 0: JS_BINARY_EXPRESSION@0..12058 + 0: JS_BINARY_EXPRESSION@0..12053 + 0: JS_BINARY_EXPRESSION@0..12048 + 0: JS_BINARY_EXPRESSION@0..12043 + 0: JS_BINARY_EXPRESSION@0..12038 + 0: JS_BINARY_EXPRESSION@0..12033 + 0: JS_BINARY_EXPRESSION@0..12028 + 0: JS_BINARY_EXPRESSION@0..12023 + 0: JS_BINARY_EXPRESSION@0..12018 + 0: JS_BINARY_EXPRESSION@0..12013 + 0: JS_BINARY_EXPRESSION@0..12008 + 0: JS_BINARY_EXPRESSION@0..12003 + 0: JS_BINARY_EXPRESSION@0..11998 + 0: JS_BINARY_EXPRESSION@0..11993 + 0: JS_BINARY_EXPRESSION@0..11988 + 0: JS_BINARY_EXPRESSION@0..11983 + 0: JS_BINARY_EXPRESSION@0..11978 + 0: JS_BINARY_EXPRESSION@0..11973 + 0: JS_BINARY_EXPRESSION@0..11968 + 0: JS_BINARY_EXPRESSION@0..11963 + 0: JS_BINARY_EXPRESSION@0..11958 + 0: JS_BINARY_EXPRESSION@0..11953 + 0: JS_BINARY_EXPRESSION@0..11948 + 0: JS_BINARY_EXPRESSION@0..11943 + 0: JS_BINARY_EXPRESSION@0..11938 + 0: JS_BINARY_EXPRESSION@0..11933 + 0: JS_BINARY_EXPRESSION@0..11928 + 0: JS_BINARY_EXPRESSION@0..11923 + 0: JS_BINARY_EXPRESSION@0..11918 + 0: JS_BINARY_EXPRESSION@0..11913 + 0: JS_BINARY_EXPRESSION@0..11908 + 0: JS_BINARY_EXPRESSION@0..11903 + 0: JS_BINARY_EXPRESSION@0..11898 + 0: JS_BINARY_EXPRESSION@0..11893 + 0: JS_BINARY_EXPRESSION@0..11888 + 0: JS_BINARY_EXPRESSION@0..11883 + 0: JS_BINARY_EXPRESSION@0..11878 + 0: JS_BINARY_EXPRESSION@0..11873 + 0: JS_BINARY_EXPRESSION@0..11868 + 0: JS_BINARY_EXPRESSION@0..11863 + 0: JS_BINARY_EXPRESSION@0..11858 + 0: JS_BINARY_EXPRESSION@0..11853 + 0: JS_BINARY_EXPRESSION@0..11848 + 0: JS_BINARY_EXPRESSION@0..11843 + 0: JS_BINARY_EXPRESSION@0..11838 + 0: JS_BINARY_EXPRESSION@0..11833 + 0: JS_BINARY_EXPRESSION@0..11828 + 0: JS_BINARY_EXPRESSION@0..11823 + 0: JS_BINARY_EXPRESSION@0..11818 + 0: JS_BINARY_EXPRESSION@0..11813 + 0: JS_BINARY_EXPRESSION@0..11808 + 0: JS_BINARY_EXPRESSION@0..11803 + 0: JS_BINARY_EXPRESSION@0..11798 + 0: JS_BINARY_EXPRESSION@0..11793 + 0: JS_BINARY_EXPRESSION@0..11788 + 0: JS_BINARY_EXPRESSION@0..11783 + 0: JS_BINARY_EXPRESSION@0..11778 + 0: JS_BINARY_EXPRESSION@0..11773 + 0: JS_BINARY_EXPRESSION@0..11768 + 0: JS_BINARY_EXPRESSION@0..11763 + 0: JS_BINARY_EXPRESSION@0..11758 + 0: JS_BINARY_EXPRESSION@0..11753 + 0: JS_BINARY_EXPRESSION@0..11748 + 0: JS_BINARY_EXPRESSION@0..11743 + 0: JS_BINARY_EXPRESSION@0..11738 + 0: JS_BINARY_EXPRESSION@0..11733 + 0: JS_BINARY_EXPRESSION@0..11728 + 0: JS_BINARY_EXPRESSION@0..11723 + 0: JS_BINARY_EXPRESSION@0..11718 + 0: JS_BINARY_EXPRESSION@0..11713 + 0: JS_BINARY_EXPRESSION@0..11708 + 0: JS_BINARY_EXPRESSION@0..11703 + 0: JS_BINARY_EXPRESSION@0..11698 + 0: JS_BINARY_EXPRESSION@0..11693 + 0: JS_BINARY_EXPRESSION@0..11688 + 0: JS_BINARY_EXPRESSION@0..11683 + 0: JS_BINARY_EXPRESSION@0..11678 + 0: JS_BINARY_EXPRESSION@0..11673 + 0: JS_BINARY_EXPRESSION@0..11668 + 0: JS_BINARY_EXPRESSION@0..11663 + 0: JS_BINARY_EXPRESSION@0..11658 + 0: JS_BINARY_EXPRESSION@0..11653 + 0: JS_BINARY_EXPRESSION@0..11648 + 0: JS_BINARY_EXPRESSION@0..11643 + 0: JS_BINARY_EXPRESSION@0..11638 + 0: JS_BINARY_EXPRESSION@0..11633 + 0: JS_BINARY_EXPRESSION@0..11628 + 0: JS_BINARY_EXPRESSION@0..11623 + 0: JS_BINARY_EXPRESSION@0..11618 + 0: JS_BINARY_EXPRESSION@0..11613 + 0: JS_BINARY_EXPRESSION@0..11608 + 0: JS_BINARY_EXPRESSION@0..11603 + 0: JS_BINARY_EXPRESSION@0..11598 + 0: JS_BINARY_EXPRESSION@0..11593 + 0: JS_BINARY_EXPRESSION@0..11588 + 0: JS_BINARY_EXPRESSION@0..11583 + 0: JS_BINARY_EXPRESSION@0..11578 + 0: JS_BINARY_EXPRESSION@0..11573 + 0: JS_BINARY_EXPRESSION@0..11568 + 0: JS_BINARY_EXPRESSION@0..11563 + 0: JS_BINARY_EXPRESSION@0..11558 + 0: JS_BINARY_EXPRESSION@0..11553 + 0: JS_BINARY_EXPRESSION@0..11548 + 0: JS_BINARY_EXPRESSION@0..11543 + 0: JS_BINARY_EXPRESSION@0..11538 + 0: JS_BINARY_EXPRESSION@0..11533 + 0: JS_BINARY_EXPRESSION@0..11528 + 0: JS_BINARY_EXPRESSION@0..11523 + 0: JS_BINARY_EXPRESSION@0..11518 + 0: JS_BINARY_EXPRESSION@0..11513 + 0: JS_BINARY_EXPRESSION@0..11508 + 0: JS_BINARY_EXPRESSION@0..11503 + 0: JS_BINARY_EXPRESSION@0..11498 + 0: JS_BINARY_EXPRESSION@0..11493 + 0: JS_BINARY_EXPRESSION@0..11488 + 0: JS_BINARY_EXPRESSION@0..11483 + 0: JS_BINARY_EXPRESSION@0..11478 + 0: JS_BINARY_EXPRESSION@0..11473 + 0: JS_BINARY_EXPRESSION@0..11468 + 0: JS_BINARY_EXPRESSION@0..11463 + 0: JS_BINARY_EXPRESSION@0..11458 + 0: JS_BINARY_EXPRESSION@0..11453 + 0: JS_BINARY_EXPRESSION@0..11448 + 0: JS_BINARY_EXPRESSION@0..11443 + 0: JS_BINARY_EXPRESSION@0..11438 + 0: JS_BINARY_EXPRESSION@0..11433 + 0: JS_BINARY_EXPRESSION@0..11428 + 0: JS_BINARY_EXPRESSION@0..11423 + 0: JS_BINARY_EXPRESSION@0..11418 + 0: JS_BINARY_EXPRESSION@0..11413 + 0: JS_BINARY_EXPRESSION@0..11408 + 0: JS_BINARY_EXPRESSION@0..11403 + 0: JS_BINARY_EXPRESSION@0..11398 + 0: JS_BINARY_EXPRESSION@0..11393 + 0: JS_BINARY_EXPRESSION@0..11388 + 0: JS_BINARY_EXPRESSION@0..11383 + 0: JS_BINARY_EXPRESSION@0..11378 + 0: JS_BINARY_EXPRESSION@0..11373 + 0: JS_BINARY_EXPRESSION@0..11368 + 0: JS_BINARY_EXPRESSION@0..11363 + 0: JS_BINARY_EXPRESSION@0..11358 + 0: JS_BINARY_EXPRESSION@0..11353 + 0: JS_BINARY_EXPRESSION@0..11348 + 0: JS_BINARY_EXPRESSION@0..11343 + 0: JS_BINARY_EXPRESSION@0..11338 + 0: JS_BINARY_EXPRESSION@0..11333 + 0: JS_BINARY_EXPRESSION@0..11328 + 0: JS_BINARY_EXPRESSION@0..11323 + 0: JS_BINARY_EXPRESSION@0..11318 + 0: JS_BINARY_EXPRESSION@0..11313 + 0: JS_BINARY_EXPRESSION@0..11308 + 0: JS_BINARY_EXPRESSION@0..11303 + 0: JS_BINARY_EXPRESSION@0..11298 + 0: JS_BINARY_EXPRESSION@0..11293 + 0: JS_BINARY_EXPRESSION@0..11288 + 0: JS_BINARY_EXPRESSION@0..11283 + 0: JS_BINARY_EXPRESSION@0..11278 + 0: JS_BINARY_EXPRESSION@0..11273 + 0: JS_BINARY_EXPRESSION@0..11268 + 0: JS_BINARY_EXPRESSION@0..11263 + 0: JS_BINARY_EXPRESSION@0..11258 + 0: JS_BINARY_EXPRESSION@0..11253 + 0: JS_BINARY_EXPRESSION@0..11248 + 0: JS_BINARY_EXPRESSION@0..11243 + 0: JS_BINARY_EXPRESSION@0..11238 + 0: JS_BINARY_EXPRESSION@0..11233 + 0: JS_BINARY_EXPRESSION@0..11228 + 0: JS_BINARY_EXPRESSION@0..11223 + 0: JS_BINARY_EXPRESSION@0..11218 + 0: JS_BINARY_EXPRESSION@0..11213 + 0: JS_BINARY_EXPRESSION@0..11208 + 0: JS_BINARY_EXPRESSION@0..11203 + 0: JS_BINARY_EXPRESSION@0..11198 + 0: JS_BINARY_EXPRESSION@0..11193 + 0: JS_BINARY_EXPRESSION@0..11188 + 0: JS_BINARY_EXPRESSION@0..11183 + 0: JS_BINARY_EXPRESSION@0..11178 + 0: JS_BINARY_EXPRESSION@0..11173 + 0: JS_BINARY_EXPRESSION@0..11168 + 0: JS_BINARY_EXPRESSION@0..11163 + 0: JS_BINARY_EXPRESSION@0..11158 + 0: JS_BINARY_EXPRESSION@0..11153 + 0: JS_BINARY_EXPRESSION@0..11148 + 0: JS_BINARY_EXPRESSION@0..11143 + 0: JS_BINARY_EXPRESSION@0..11138 + 0: JS_BINARY_EXPRESSION@0..11133 + 0: JS_BINARY_EXPRESSION@0..11128 + 0: JS_BINARY_EXPRESSION@0..11123 + 0: JS_BINARY_EXPRESSION@0..11118 + 0: JS_BINARY_EXPRESSION@0..11113 + 0: JS_BINARY_EXPRESSION@0..11108 + 0: JS_BINARY_EXPRESSION@0..11103 + 0: JS_BINARY_EXPRESSION@0..11098 + 0: JS_BINARY_EXPRESSION@0..11093 + 0: JS_BINARY_EXPRESSION@0..11088 + 0: JS_BINARY_EXPRESSION@0..11083 + 0: JS_BINARY_EXPRESSION@0..11078 + 0: JS_BINARY_EXPRESSION@0..11073 + 0: JS_BINARY_EXPRESSION@0..11068 + 0: JS_BINARY_EXPRESSION@0..11063 + 0: JS_BINARY_EXPRESSION@0..11058 + 0: JS_BINARY_EXPRESSION@0..11053 + 0: JS_BINARY_EXPRESSION@0..11048 + 0: JS_BINARY_EXPRESSION@0..11043 + 0: JS_BINARY_EXPRESSION@0..11038 + 0: JS_BINARY_EXPRESSION@0..11033 + 0: JS_BINARY_EXPRESSION@0..11028 + 0: JS_BINARY_EXPRESSION@0..11023 + 0: JS_BINARY_EXPRESSION@0..11018 + 0: JS_BINARY_EXPRESSION@0..11013 + 0: JS_BINARY_EXPRESSION@0..11008 + 0: JS_BINARY_EXPRESSION@0..11003 + 0: JS_BINARY_EXPRESSION@0..10998 + 0: JS_BINARY_EXPRESSION@0..10993 + 0: JS_BINARY_EXPRESSION@0..10988 + 0: JS_BINARY_EXPRESSION@0..10983 + 0: JS_BINARY_EXPRESSION@0..10978 + 0: JS_BINARY_EXPRESSION@0..10973 + 0: JS_BINARY_EXPRESSION@0..10968 + 0: JS_BINARY_EXPRESSION@0..10963 + 0: JS_BINARY_EXPRESSION@0..10958 + 0: JS_BINARY_EXPRESSION@0..10953 + 0: JS_BINARY_EXPRESSION@0..10948 + 0: JS_BINARY_EXPRESSION@0..10943 + 0: JS_BINARY_EXPRESSION@0..10938 + 0: JS_BINARY_EXPRESSION@0..10933 + 0: JS_BINARY_EXPRESSION@0..10928 + 0: JS_BINARY_EXPRESSION@0..10923 + 0: JS_BINARY_EXPRESSION@0..10918 + 0: JS_BINARY_EXPRESSION@0..10913 + 0: JS_BINARY_EXPRESSION@0..10908 + 0: JS_BINARY_EXPRESSION@0..10903 + 0: JS_BINARY_EXPRESSION@0..10898 + 0: JS_BINARY_EXPRESSION@0..10893 + 0: JS_BINARY_EXPRESSION@0..10888 + 0: JS_BINARY_EXPRESSION@0..10883 + 0: JS_BINARY_EXPRESSION@0..10878 + 0: JS_BINARY_EXPRESSION@0..10873 + 0: JS_BINARY_EXPRESSION@0..10868 + 0: JS_BINARY_EXPRESSION@0..10863 + 0: JS_BINARY_EXPRESSION@0..10858 + 0: JS_BINARY_EXPRESSION@0..10853 + 0: JS_BINARY_EXPRESSION@0..10848 + 0: JS_BINARY_EXPRESSION@0..10843 + 0: JS_BINARY_EXPRESSION@0..10838 + 0: JS_BINARY_EXPRESSION@0..10833 + 0: JS_BINARY_EXPRESSION@0..10828 + 0: JS_BINARY_EXPRESSION@0..10823 + 0: JS_BINARY_EXPRESSION@0..10818 + 0: JS_BINARY_EXPRESSION@0..10813 + 0: JS_BINARY_EXPRESSION@0..10808 + 0: JS_BINARY_EXPRESSION@0..10803 + 0: JS_BINARY_EXPRESSION@0..10798 + 0: JS_BINARY_EXPRESSION@0..10793 + 0: JS_BINARY_EXPRESSION@0..10788 + 0: JS_BINARY_EXPRESSION@0..10783 + 0: JS_BINARY_EXPRESSION@0..10778 + 0: JS_BINARY_EXPRESSION@0..10773 + 0: JS_BINARY_EXPRESSION@0..10768 + 0: JS_BINARY_EXPRESSION@0..10763 + 0: JS_BINARY_EXPRESSION@0..10758 + 0: JS_BINARY_EXPRESSION@0..10753 + 0: JS_BINARY_EXPRESSION@0..10748 + 0: JS_BINARY_EXPRESSION@0..10743 + 0: JS_BINARY_EXPRESSION@0..10738 + 0: JS_BINARY_EXPRESSION@0..10733 + 0: JS_BINARY_EXPRESSION@0..10728 + 0: JS_BINARY_EXPRESSION@0..10723 + 0: JS_BINARY_EXPRESSION@0..10718 + 0: JS_BINARY_EXPRESSION@0..10713 + 0: JS_BINARY_EXPRESSION@0..10708 + 0: JS_BINARY_EXPRESSION@0..10703 + 0: JS_BINARY_EXPRESSION@0..10698 + 0: JS_BINARY_EXPRESSION@0..10693 + 0: JS_BINARY_EXPRESSION@0..10688 + 0: JS_BINARY_EXPRESSION@0..10683 + 0: JS_BINARY_EXPRESSION@0..10678 + 0: JS_BINARY_EXPRESSION@0..10673 + 0: JS_BINARY_EXPRESSION@0..10668 + 0: JS_BINARY_EXPRESSION@0..10663 + 0: JS_BINARY_EXPRESSION@0..10658 + 0: JS_BINARY_EXPRESSION@0..10653 + 0: JS_BINARY_EXPRESSION@0..10648 + 0: JS_BINARY_EXPRESSION@0..10643 + 0: JS_BINARY_EXPRESSION@0..10638 + 0: JS_BINARY_EXPRESSION@0..10633 + 0: JS_BINARY_EXPRESSION@0..10628 + 0: JS_BINARY_EXPRESSION@0..10623 + 0: JS_BINARY_EXPRESSION@0..10618 + 0: JS_BINARY_EXPRESSION@0..10613 + 0: JS_BINARY_EXPRESSION@0..10608 + 0: JS_BINARY_EXPRESSION@0..10603 + 0: JS_BINARY_EXPRESSION@0..10598 + 0: JS_BINARY_EXPRESSION@0..10593 + 0: JS_BINARY_EXPRESSION@0..10588 + 0: JS_BINARY_EXPRESSION@0..10583 + 0: JS_BINARY_EXPRESSION@0..10578 + 0: JS_BINARY_EXPRESSION@0..10573 + 0: JS_BINARY_EXPRESSION@0..10568 + 0: JS_BINARY_EXPRESSION@0..10563 + 0: JS_BINARY_EXPRESSION@0..10558 + 0: JS_BINARY_EXPRESSION@0..10553 + 0: JS_BINARY_EXPRESSION@0..10548 + 0: JS_BINARY_EXPRESSION@0..10543 + 0: JS_BINARY_EXPRESSION@0..10538 + 0: JS_BINARY_EXPRESSION@0..10533 + 0: JS_BINARY_EXPRESSION@0..10528 + 0: JS_BINARY_EXPRESSION@0..10523 + 0: JS_BINARY_EXPRESSION@0..10518 + 0: JS_BINARY_EXPRESSION@0..10513 + 0: JS_BINARY_EXPRESSION@0..10508 + 0: JS_BINARY_EXPRESSION@0..10503 + 0: JS_BINARY_EXPRESSION@0..10498 + 0: JS_BINARY_EXPRESSION@0..10493 + 0: JS_BINARY_EXPRESSION@0..10488 + 0: JS_BINARY_EXPRESSION@0..10483 + 0: JS_BINARY_EXPRESSION@0..10478 + 0: JS_BINARY_EXPRESSION@0..10473 + 0: JS_BINARY_EXPRESSION@0..10468 + 0: JS_BINARY_EXPRESSION@0..10463 + 0: JS_BINARY_EXPRESSION@0..10458 + 0: JS_BINARY_EXPRESSION@0..10453 + 0: JS_BINARY_EXPRESSION@0..10448 + 0: JS_BINARY_EXPRESSION@0..10443 + 0: JS_BINARY_EXPRESSION@0..10438 + 0: JS_BINARY_EXPRESSION@0..10433 + 0: JS_BINARY_EXPRESSION@0..10428 + 0: JS_BINARY_EXPRESSION@0..10423 + 0: JS_BINARY_EXPRESSION@0..10418 + 0: JS_BINARY_EXPRESSION@0..10413 + 0: JS_BINARY_EXPRESSION@0..10408 + 0: JS_BINARY_EXPRESSION@0..10403 + 0: JS_BINARY_EXPRESSION@0..10398 + 0: JS_BINARY_EXPRESSION@0..10393 + 0: JS_BINARY_EXPRESSION@0..10388 + 0: JS_BINARY_EXPRESSION@0..10383 + 0: JS_BINARY_EXPRESSION@0..10378 + 0: JS_BINARY_EXPRESSION@0..10373 + 0: JS_BINARY_EXPRESSION@0..10368 + 0: JS_BINARY_EXPRESSION@0..10363 + 0: JS_BINARY_EXPRESSION@0..10358 + 0: JS_BINARY_EXPRESSION@0..10353 + 0: JS_BINARY_EXPRESSION@0..10348 + 0: JS_BINARY_EXPRESSION@0..10343 + 0: JS_BINARY_EXPRESSION@0..10338 + 0: JS_BINARY_EXPRESSION@0..10333 + 0: JS_BINARY_EXPRESSION@0..10328 + 0: JS_BINARY_EXPRESSION@0..10323 + 0: JS_BINARY_EXPRESSION@0..10318 + 0: JS_BINARY_EXPRESSION@0..10313 + 0: JS_BINARY_EXPRESSION@0..10308 + 0: JS_BINARY_EXPRESSION@0..10303 + 0: JS_BINARY_EXPRESSION@0..10298 + 0: JS_BINARY_EXPRESSION@0..10293 + 0: JS_BINARY_EXPRESSION@0..10288 + 0: JS_BINARY_EXPRESSION@0..10283 + 0: JS_BINARY_EXPRESSION@0..10278 + 0: JS_BINARY_EXPRESSION@0..10273 + 0: JS_BINARY_EXPRESSION@0..10268 + 0: JS_BINARY_EXPRESSION@0..10263 + 0: JS_BINARY_EXPRESSION@0..10258 + 0: JS_BINARY_EXPRESSION@0..10253 + 0: JS_BINARY_EXPRESSION@0..10248 + 0: JS_BINARY_EXPRESSION@0..10243 + 0: JS_BINARY_EXPRESSION@0..10238 + 0: JS_BINARY_EXPRESSION@0..10233 + 0: JS_BINARY_EXPRESSION@0..10228 + 0: JS_BINARY_EXPRESSION@0..10223 + 0: JS_BINARY_EXPRESSION@0..10218 + 0: JS_BINARY_EXPRESSION@0..10213 + 0: JS_BINARY_EXPRESSION@0..10208 + 0: JS_BINARY_EXPRESSION@0..10203 + 0: JS_BINARY_EXPRESSION@0..10198 + 0: JS_BINARY_EXPRESSION@0..10193 + 0: JS_BINARY_EXPRESSION@0..10188 + 0: JS_BINARY_EXPRESSION@0..10183 + 0: JS_BINARY_EXPRESSION@0..10178 + 0: JS_BINARY_EXPRESSION@0..10173 + 0: JS_BINARY_EXPRESSION@0..10168 + 0: JS_BINARY_EXPRESSION@0..10163 + 0: JS_BINARY_EXPRESSION@0..10158 + 0: JS_BINARY_EXPRESSION@0..10153 + 0: JS_BINARY_EXPRESSION@0..10148 + 0: JS_BINARY_EXPRESSION@0..10143 + 0: JS_BINARY_EXPRESSION@0..10138 + 0: JS_BINARY_EXPRESSION@0..10133 + 0: JS_BINARY_EXPRESSION@0..10128 + 0: JS_BINARY_EXPRESSION@0..10123 + 0: JS_BINARY_EXPRESSION@0..10118 + 0: JS_BINARY_EXPRESSION@0..10113 + 0: JS_BINARY_EXPRESSION@0..10108 + 0: JS_BINARY_EXPRESSION@0..10103 + 0: JS_BINARY_EXPRESSION@0..10098 + 0: JS_BINARY_EXPRESSION@0..10093 + 0: JS_BINARY_EXPRESSION@0..10088 + 0: JS_BINARY_EXPRESSION@0..10083 + 0: JS_BINARY_EXPRESSION@0..10078 + 0: JS_BINARY_EXPRESSION@0..10073 + 0: JS_BINARY_EXPRESSION@0..10068 + 0: JS_BINARY_EXPRESSION@0..10063 + 0: JS_BINARY_EXPRESSION@0..10058 + 0: JS_BINARY_EXPRESSION@0..10053 + 0: JS_BINARY_EXPRESSION@0..10048 + 0: JS_BINARY_EXPRESSION@0..10043 + 0: JS_BINARY_EXPRESSION@0..10038 + 0: JS_BINARY_EXPRESSION@0..10033 + 0: JS_BINARY_EXPRESSION@0..10028 + 0: JS_BINARY_EXPRESSION@0..10023 + 0: JS_BINARY_EXPRESSION@0..10018 + 0: JS_BINARY_EXPRESSION@0..10013 + 0: JS_BINARY_EXPRESSION@0..10008 + 0: JS_BINARY_EXPRESSION@0..10003 + 0: JS_BINARY_EXPRESSION@0..9998 + 0: JS_BINARY_EXPRESSION@0..9993 + 0: JS_BINARY_EXPRESSION@0..9988 + 0: JS_BINARY_EXPRESSION@0..9983 + 0: JS_BINARY_EXPRESSION@0..9978 + 0: JS_BINARY_EXPRESSION@0..9973 + 0: JS_BINARY_EXPRESSION@0..9968 + 0: JS_BINARY_EXPRESSION@0..9963 + 0: JS_BINARY_EXPRESSION@0..9958 + 0: JS_BINARY_EXPRESSION@0..9953 + 0: JS_BINARY_EXPRESSION@0..9948 + 0: JS_BINARY_EXPRESSION@0..9943 + 0: JS_BINARY_EXPRESSION@0..9938 + 0: JS_BINARY_EXPRESSION@0..9933 + 0: JS_BINARY_EXPRESSION@0..9928 + 0: JS_BINARY_EXPRESSION@0..9923 + 0: JS_BINARY_EXPRESSION@0..9918 + 0: JS_BINARY_EXPRESSION@0..9913 + 0: JS_BINARY_EXPRESSION@0..9908 + 0: JS_BINARY_EXPRESSION@0..9903 + 0: JS_BINARY_EXPRESSION@0..9898 + 0: JS_BINARY_EXPRESSION@0..9893 + 0: JS_BINARY_EXPRESSION@0..9888 + 0: JS_BINARY_EXPRESSION@0..9883 + 0: JS_BINARY_EXPRESSION@0..9878 + 0: JS_BINARY_EXPRESSION@0..9873 + 0: JS_BINARY_EXPRESSION@0..9868 + 0: JS_BINARY_EXPRESSION@0..9863 + 0: JS_BINARY_EXPRESSION@0..9858 + 0: JS_BINARY_EXPRESSION@0..9853 + 0: JS_BINARY_EXPRESSION@0..9848 + 0: JS_BINARY_EXPRESSION@0..9843 + 0: JS_BINARY_EXPRESSION@0..9838 + 0: JS_BINARY_EXPRESSION@0..9833 + 0: JS_BINARY_EXPRESSION@0..9828 + 0: JS_BINARY_EXPRESSION@0..9823 + 0: JS_BINARY_EXPRESSION@0..9818 + 0: JS_BINARY_EXPRESSION@0..9813 + 0: JS_BINARY_EXPRESSION@0..9808 + 0: JS_BINARY_EXPRESSION@0..9803 + 0: JS_BINARY_EXPRESSION@0..9798 + 0: JS_BINARY_EXPRESSION@0..9793 + 0: JS_BINARY_EXPRESSION@0..9788 + 0: JS_BINARY_EXPRESSION@0..9783 + 0: JS_BINARY_EXPRESSION@0..9778 + 0: JS_BINARY_EXPRESSION@0..9773 + 0: JS_BINARY_EXPRESSION@0..9768 + 0: JS_BINARY_EXPRESSION@0..9763 + 0: JS_BINARY_EXPRESSION@0..9758 + 0: JS_BINARY_EXPRESSION@0..9753 + 0: JS_BINARY_EXPRESSION@0..9748 + 0: JS_BINARY_EXPRESSION@0..9743 + 0: JS_BINARY_EXPRESSION@0..9738 + 0: JS_BINARY_EXPRESSION@0..9733 + 0: JS_BINARY_EXPRESSION@0..9728 + 0: JS_BINARY_EXPRESSION@0..9723 + 0: JS_BINARY_EXPRESSION@0..9718 + 0: JS_BINARY_EXPRESSION@0..9713 + 0: JS_BINARY_EXPRESSION@0..9708 + 0: JS_BINARY_EXPRESSION@0..9703 + 0: JS_BINARY_EXPRESSION@0..9698 + 0: JS_BINARY_EXPRESSION@0..9693 + 0: JS_BINARY_EXPRESSION@0..9688 + 0: JS_BINARY_EXPRESSION@0..9683 + 0: JS_BINARY_EXPRESSION@0..9678 + 0: JS_BINARY_EXPRESSION@0..9673 + 0: JS_BINARY_EXPRESSION@0..9668 + 0: JS_BINARY_EXPRESSION@0..9663 + 0: JS_BINARY_EXPRESSION@0..9658 + 0: JS_BINARY_EXPRESSION@0..9653 + 0: JS_BINARY_EXPRESSION@0..9648 + 0: JS_BINARY_EXPRESSION@0..9643 + 0: JS_BINARY_EXPRESSION@0..9638 + 0: JS_BINARY_EXPRESSION@0..9633 + 0: JS_BINARY_EXPRESSION@0..9628 + 0: JS_BINARY_EXPRESSION@0..9623 + 0: JS_BINARY_EXPRESSION@0..9618 + 0: JS_BINARY_EXPRESSION@0..9613 + 0: JS_BINARY_EXPRESSION@0..9608 + 0: JS_BINARY_EXPRESSION@0..9603 + 0: JS_BINARY_EXPRESSION@0..9598 + 0: JS_BINARY_EXPRESSION@0..9593 + 0: JS_BINARY_EXPRESSION@0..9588 + 0: JS_BINARY_EXPRESSION@0..9583 + 0: JS_BINARY_EXPRESSION@0..9578 + 0: JS_BINARY_EXPRESSION@0..9573 + 0: JS_BINARY_EXPRESSION@0..9568 + 0: JS_BINARY_EXPRESSION@0..9563 + 0: JS_BINARY_EXPRESSION@0..9558 + 0: JS_BINARY_EXPRESSION@0..9553 + 0: JS_BINARY_EXPRESSION@0..9548 + 0: JS_BINARY_EXPRESSION@0..9543 + 0: JS_BINARY_EXPRESSION@0..9538 + 0: JS_BINARY_EXPRESSION@0..9533 + 0: JS_BINARY_EXPRESSION@0..9528 + 0: JS_BINARY_EXPRESSION@0..9523 + 0: JS_BINARY_EXPRESSION@0..9518 + 0: JS_BINARY_EXPRESSION@0..9513 + 0: JS_BINARY_EXPRESSION@0..9508 + 0: JS_BINARY_EXPRESSION@0..9503 + 0: JS_BINARY_EXPRESSION@0..9498 + 0: JS_BINARY_EXPRESSION@0..9493 + 0: JS_BINARY_EXPRESSION@0..9488 + 0: JS_BINARY_EXPRESSION@0..9483 + 0: JS_BINARY_EXPRESSION@0..9478 + 0: JS_BINARY_EXPRESSION@0..9473 + 0: JS_BINARY_EXPRESSION@0..9468 + 0: JS_BINARY_EXPRESSION@0..9463 + 0: JS_BINARY_EXPRESSION@0..9458 + 0: JS_BINARY_EXPRESSION@0..9453 + 0: JS_BINARY_EXPRESSION@0..9448 + 0: JS_BINARY_EXPRESSION@0..9443 + 0: JS_BINARY_EXPRESSION@0..9438 + 0: JS_BINARY_EXPRESSION@0..9433 + 0: JS_BINARY_EXPRESSION@0..9428 + 0: JS_BINARY_EXPRESSION@0..9423 + 0: JS_BINARY_EXPRESSION@0..9418 + 0: JS_BINARY_EXPRESSION@0..9413 + 0: JS_BINARY_EXPRESSION@0..9408 + 0: JS_BINARY_EXPRESSION@0..9403 + 0: JS_BINARY_EXPRESSION@0..9398 + 0: JS_BINARY_EXPRESSION@0..9393 + 0: JS_BINARY_EXPRESSION@0..9388 + 0: JS_BINARY_EXPRESSION@0..9383 + 0: JS_BINARY_EXPRESSION@0..9378 + 0: JS_BINARY_EXPRESSION@0..9373 + 0: JS_BINARY_EXPRESSION@0..9368 + 0: JS_BINARY_EXPRESSION@0..9363 + 0: JS_BINARY_EXPRESSION@0..9358 + 0: JS_BINARY_EXPRESSION@0..9353 + 0: JS_BINARY_EXPRESSION@0..9348 + 0: JS_BINARY_EXPRESSION@0..9343 + 0: JS_BINARY_EXPRESSION@0..9338 + 0: JS_BINARY_EXPRESSION@0..9333 + 0: JS_BINARY_EXPRESSION@0..9328 + 0: JS_BINARY_EXPRESSION@0..9323 + 0: JS_BINARY_EXPRESSION@0..9318 + 0: JS_BINARY_EXPRESSION@0..9313 + 0: JS_BINARY_EXPRESSION@0..9308 + 0: JS_BINARY_EXPRESSION@0..9303 + 0: JS_BINARY_EXPRESSION@0..9298 + 0: JS_BINARY_EXPRESSION@0..9293 + 0: JS_BINARY_EXPRESSION@0..9288 + 0: JS_BINARY_EXPRESSION@0..9283 + 0: JS_BINARY_EXPRESSION@0..9278 + 0: JS_BINARY_EXPRESSION@0..9273 + 0: JS_BINARY_EXPRESSION@0..9268 + 0: JS_BINARY_EXPRESSION@0..9263 + 0: JS_BINARY_EXPRESSION@0..9258 + 0: JS_BINARY_EXPRESSION@0..9253 + 0: JS_BINARY_EXPRESSION@0..9248 + 0: JS_BINARY_EXPRESSION@0..9243 + 0: JS_BINARY_EXPRESSION@0..9238 + 0: JS_BINARY_EXPRESSION@0..9233 + 0: JS_BINARY_EXPRESSION@0..9228 + 0: JS_BINARY_EXPRESSION@0..9223 + 0: JS_BINARY_EXPRESSION@0..9218 + 0: JS_BINARY_EXPRESSION@0..9213 + 0: JS_BINARY_EXPRESSION@0..9208 + 0: JS_BINARY_EXPRESSION@0..9203 + 0: JS_BINARY_EXPRESSION@0..9198 + 0: JS_BINARY_EXPRESSION@0..9193 + 0: JS_BINARY_EXPRESSION@0..9188 + 0: JS_BINARY_EXPRESSION@0..9183 + 0: JS_BINARY_EXPRESSION@0..9178 + 0: JS_BINARY_EXPRESSION@0..9173 + 0: JS_BINARY_EXPRESSION@0..9168 + 0: JS_BINARY_EXPRESSION@0..9163 + 0: JS_BINARY_EXPRESSION@0..9158 + 0: JS_BINARY_EXPRESSION@0..9153 + 0: JS_BINARY_EXPRESSION@0..9148 + 0: JS_BINARY_EXPRESSION@0..9143 + 0: JS_BINARY_EXPRESSION@0..9138 + 0: JS_BINARY_EXPRESSION@0..9133 + 0: JS_BINARY_EXPRESSION@0..9128 + 0: JS_BINARY_EXPRESSION@0..9123 + 0: JS_BINARY_EXPRESSION@0..9118 + 0: JS_BINARY_EXPRESSION@0..9113 + 0: JS_BINARY_EXPRESSION@0..9108 + 0: JS_BINARY_EXPRESSION@0..9103 + 0: JS_BINARY_EXPRESSION@0..9098 + 0: JS_BINARY_EXPRESSION@0..9093 + 0: JS_BINARY_EXPRESSION@0..9088 + 0: JS_BINARY_EXPRESSION@0..9083 + 0: JS_BINARY_EXPRESSION@0..9078 + 0: JS_BINARY_EXPRESSION@0..9073 + 0: JS_BINARY_EXPRESSION@0..9068 + 0: JS_BINARY_EXPRESSION@0..9063 + 0: JS_BINARY_EXPRESSION@0..9058 + 0: JS_BINARY_EXPRESSION@0..9053 + 0: JS_BINARY_EXPRESSION@0..9048 + 0: JS_BINARY_EXPRESSION@0..9043 + 0: JS_BINARY_EXPRESSION@0..9038 + 0: JS_BINARY_EXPRESSION@0..9033 + 0: JS_BINARY_EXPRESSION@0..9028 + 0: JS_BINARY_EXPRESSION@0..9023 + 0: JS_BINARY_EXPRESSION@0..9018 + 0: JS_BINARY_EXPRESSION@0..9013 + 0: JS_BINARY_EXPRESSION@0..9008 + 0: JS_BINARY_EXPRESSION@0..9003 + 0: JS_BINARY_EXPRESSION@0..8998 + 0: JS_BINARY_EXPRESSION@0..8993 + 0: JS_BINARY_EXPRESSION@0..8988 + 0: JS_BINARY_EXPRESSION@0..8983 + 0: JS_BINARY_EXPRESSION@0..8978 + 0: JS_BINARY_EXPRESSION@0..8973 + 0: JS_BINARY_EXPRESSION@0..8968 + 0: JS_BINARY_EXPRESSION@0..8963 + 0: JS_BINARY_EXPRESSION@0..8958 + 0: JS_BINARY_EXPRESSION@0..8953 + 0: JS_BINARY_EXPRESSION@0..8948 + 0: JS_BINARY_EXPRESSION@0..8943 + 0: JS_BINARY_EXPRESSION@0..8938 + 0: JS_BINARY_EXPRESSION@0..8933 + 0: JS_BINARY_EXPRESSION@0..8928 + 0: JS_BINARY_EXPRESSION@0..8923 + 0: JS_BINARY_EXPRESSION@0..8918 + 0: JS_BINARY_EXPRESSION@0..8913 + 0: JS_BINARY_EXPRESSION@0..8908 + 0: JS_BINARY_EXPRESSION@0..8903 + 0: JS_BINARY_EXPRESSION@0..8898 + 0: JS_BINARY_EXPRESSION@0..8893 + 0: JS_BINARY_EXPRESSION@0..8888 + 0: JS_BINARY_EXPRESSION@0..8883 + 0: JS_BINARY_EXPRESSION@0..8878 + 0: JS_BINARY_EXPRESSION@0..8873 + 0: JS_BINARY_EXPRESSION@0..8868 + 0: JS_BINARY_EXPRESSION@0..8863 + 0: JS_BINARY_EXPRESSION@0..8858 + 0: JS_BINARY_EXPRESSION@0..8853 + 0: JS_BINARY_EXPRESSION@0..8848 + 0: JS_BINARY_EXPRESSION@0..8843 + 0: JS_BINARY_EXPRESSION@0..8838 + 0: JS_BINARY_EXPRESSION@0..8833 + 0: JS_BINARY_EXPRESSION@0..8828 + 0: JS_BINARY_EXPRESSION@0..8823 + 0: JS_BINARY_EXPRESSION@0..8818 + 0: JS_BINARY_EXPRESSION@0..8813 + 0: JS_BINARY_EXPRESSION@0..8808 + 0: JS_BINARY_EXPRESSION@0..8803 + 0: JS_BINARY_EXPRESSION@0..8798 + 0: JS_BINARY_EXPRESSION@0..8793 + 0: JS_BINARY_EXPRESSION@0..8788 + 0: JS_BINARY_EXPRESSION@0..8783 + 0: JS_BINARY_EXPRESSION@0..8778 + 0: JS_BINARY_EXPRESSION@0..8773 + 0: JS_BINARY_EXPRESSION@0..8768 + 0: JS_BINARY_EXPRESSION@0..8763 + 0: JS_BINARY_EXPRESSION@0..8758 + 0: JS_BINARY_EXPRESSION@0..8753 + 0: JS_BINARY_EXPRESSION@0..8748 + 0: JS_BINARY_EXPRESSION@0..8743 + 0: JS_BINARY_EXPRESSION@0..8738 + 0: JS_BINARY_EXPRESSION@0..8733 + 0: JS_BINARY_EXPRESSION@0..8728 + 0: JS_BINARY_EXPRESSION@0..8723 + 0: JS_BINARY_EXPRESSION@0..8718 + 0: JS_BINARY_EXPRESSION@0..8713 + 0: JS_BINARY_EXPRESSION@0..8708 + 0: JS_BINARY_EXPRESSION@0..8703 + 0: JS_BINARY_EXPRESSION@0..8698 + 0: JS_BINARY_EXPRESSION@0..8693 + 0: JS_BINARY_EXPRESSION@0..8688 + 0: JS_BINARY_EXPRESSION@0..8683 + 0: JS_BINARY_EXPRESSION@0..8678 + 0: JS_BINARY_EXPRESSION@0..8673 + 0: JS_BINARY_EXPRESSION@0..8668 + 0: JS_BINARY_EXPRESSION@0..8663 + 0: JS_BINARY_EXPRESSION@0..8658 + 0: JS_BINARY_EXPRESSION@0..8653 + 0: JS_BINARY_EXPRESSION@0..8648 + 0: JS_BINARY_EXPRESSION@0..8643 + 0: JS_BINARY_EXPRESSION@0..8638 + 0: JS_BINARY_EXPRESSION@0..8633 + 0: JS_BINARY_EXPRESSION@0..8628 + 0: JS_BINARY_EXPRESSION@0..8623 + 0: JS_BINARY_EXPRESSION@0..8618 + 0: JS_BINARY_EXPRESSION@0..8613 + 0: JS_BINARY_EXPRESSION@0..8608 + 0: JS_BINARY_EXPRESSION@0..8603 + 0: JS_BINARY_EXPRESSION@0..8598 + 0: JS_BINARY_EXPRESSION@0..8593 + 0: JS_BINARY_EXPRESSION@0..8588 + 0: JS_BINARY_EXPRESSION@0..8583 + 0: JS_BINARY_EXPRESSION@0..8578 + 0: JS_BINARY_EXPRESSION@0..8573 + 0: JS_BINARY_EXPRESSION@0..8568 + 0: JS_BINARY_EXPRESSION@0..8563 + 0: JS_BINARY_EXPRESSION@0..8558 + 0: JS_BINARY_EXPRESSION@0..8553 + 0: JS_BINARY_EXPRESSION@0..8548 + 0: JS_BINARY_EXPRESSION@0..8543 + 0: JS_BINARY_EXPRESSION@0..8538 + 0: JS_BINARY_EXPRESSION@0..8533 + 0: JS_BINARY_EXPRESSION@0..8528 + 0: JS_BINARY_EXPRESSION@0..8523 + 0: JS_BINARY_EXPRESSION@0..8518 + 0: JS_BINARY_EXPRESSION@0..8513 + 0: JS_BINARY_EXPRESSION@0..8508 + 0: JS_BINARY_EXPRESSION@0..8503 + 0: JS_BINARY_EXPRESSION@0..8498 + 0: JS_BINARY_EXPRESSION@0..8493 + 0: JS_BINARY_EXPRESSION@0..8488 + 0: JS_BINARY_EXPRESSION@0..8483 + 0: JS_BINARY_EXPRESSION@0..8478 + 0: JS_BINARY_EXPRESSION@0..8473 + 0: JS_BINARY_EXPRESSION@0..8468 + 0: JS_BINARY_EXPRESSION@0..8463 + 0: JS_BINARY_EXPRESSION@0..8458 + 0: JS_BINARY_EXPRESSION@0..8453 + 0: JS_BINARY_EXPRESSION@0..8448 + 0: JS_BINARY_EXPRESSION@0..8443 + 0: JS_BINARY_EXPRESSION@0..8438 + 0: JS_BINARY_EXPRESSION@0..8433 + 0: JS_BINARY_EXPRESSION@0..8428 + 0: JS_BINARY_EXPRESSION@0..8423 + 0: JS_BINARY_EXPRESSION@0..8418 + 0: JS_BINARY_EXPRESSION@0..8413 + 0: JS_BINARY_EXPRESSION@0..8408 + 0: JS_BINARY_EXPRESSION@0..8403 + 0: JS_BINARY_EXPRESSION@0..8398 + 0: JS_BINARY_EXPRESSION@0..8393 + 0: JS_BINARY_EXPRESSION@0..8388 + 0: JS_BINARY_EXPRESSION@0..8383 + 0: JS_BINARY_EXPRESSION@0..8378 + 0: JS_BINARY_EXPRESSION@0..8373 + 0: JS_BINARY_EXPRESSION@0..8368 + 0: JS_BINARY_EXPRESSION@0..8363 + 0: JS_BINARY_EXPRESSION@0..8358 + 0: JS_BINARY_EXPRESSION@0..8353 + 0: JS_BINARY_EXPRESSION@0..8348 + 0: JS_BINARY_EXPRESSION@0..8343 + 0: JS_BINARY_EXPRESSION@0..8338 + 0: JS_BINARY_EXPRESSION@0..8333 + 0: JS_BINARY_EXPRESSION@0..8328 + 0: JS_BINARY_EXPRESSION@0..8323 + 0: JS_BINARY_EXPRESSION@0..8318 + 0: JS_BINARY_EXPRESSION@0..8313 + 0: JS_BINARY_EXPRESSION@0..8308 + 0: JS_BINARY_EXPRESSION@0..8303 + 0: JS_BINARY_EXPRESSION@0..8298 + 0: JS_BINARY_EXPRESSION@0..8293 + 0: JS_BINARY_EXPRESSION@0..8288 + 0: JS_BINARY_EXPRESSION@0..8283 + 0: JS_BINARY_EXPRESSION@0..8278 + 0: JS_BINARY_EXPRESSION@0..8273 + 0: JS_BINARY_EXPRESSION@0..8268 + 0: JS_BINARY_EXPRESSION@0..8263 + 0: JS_BINARY_EXPRESSION@0..8258 + 0: JS_BINARY_EXPRESSION@0..8253 + 0: JS_BINARY_EXPRESSION@0..8248 + 0: JS_BINARY_EXPRESSION@0..8243 + 0: JS_BINARY_EXPRESSION@0..8238 + 0: JS_BINARY_EXPRESSION@0..8233 + 0: JS_BINARY_EXPRESSION@0..8228 + 0: JS_BINARY_EXPRESSION@0..8223 + 0: JS_BINARY_EXPRESSION@0..8218 + 0: JS_BINARY_EXPRESSION@0..8213 + 0: JS_BINARY_EXPRESSION@0..8208 + 0: JS_BINARY_EXPRESSION@0..8203 + 0: JS_BINARY_EXPRESSION@0..8198 + 0: JS_BINARY_EXPRESSION@0..8193 + 0: JS_BINARY_EXPRESSION@0..8188 + 0: JS_BINARY_EXPRESSION@0..8183 + 0: JS_BINARY_EXPRESSION@0..8178 + 0: JS_BINARY_EXPRESSION@0..8173 + 0: JS_BINARY_EXPRESSION@0..8168 + 0: JS_BINARY_EXPRESSION@0..8163 + 0: JS_BINARY_EXPRESSION@0..8158 + 0: JS_BINARY_EXPRESSION@0..8153 + 0: JS_BINARY_EXPRESSION@0..8148 + 0: JS_BINARY_EXPRESSION@0..8143 + 0: JS_BINARY_EXPRESSION@0..8138 + 0: JS_BINARY_EXPRESSION@0..8133 + 0: JS_BINARY_EXPRESSION@0..8128 + 0: JS_BINARY_EXPRESSION@0..8123 + 0: JS_BINARY_EXPRESSION@0..8118 + 0: JS_BINARY_EXPRESSION@0..8113 + 0: JS_BINARY_EXPRESSION@0..8108 + 0: JS_BINARY_EXPRESSION@0..8103 + 0: JS_BINARY_EXPRESSION@0..8098 + 0: JS_BINARY_EXPRESSION@0..8093 + 0: JS_BINARY_EXPRESSION@0..8088 + 0: JS_BINARY_EXPRESSION@0..8083 + 0: JS_BINARY_EXPRESSION@0..8078 + 0: JS_BINARY_EXPRESSION@0..8073 + 0: JS_BINARY_EXPRESSION@0..8068 + 0: JS_BINARY_EXPRESSION@0..8063 + 0: JS_BINARY_EXPRESSION@0..8058 + 0: JS_BINARY_EXPRESSION@0..8053 + 0: JS_BINARY_EXPRESSION@0..8048 + 0: JS_BINARY_EXPRESSION@0..8043 + 0: JS_BINARY_EXPRESSION@0..8038 + 0: JS_BINARY_EXPRESSION@0..8033 + 0: JS_BINARY_EXPRESSION@0..8028 + 0: JS_BINARY_EXPRESSION@0..8023 + 0: JS_BINARY_EXPRESSION@0..8018 + 0: JS_BINARY_EXPRESSION@0..8013 + 0: JS_BINARY_EXPRESSION@0..8008 + 0: JS_BINARY_EXPRESSION@0..8003 + 0: JS_BINARY_EXPRESSION@0..7998 + 0: JS_BINARY_EXPRESSION@0..7993 + 0: JS_BINARY_EXPRESSION@0..7988 + 0: JS_BINARY_EXPRESSION@0..7983 + 0: JS_BINARY_EXPRESSION@0..7978 + 0: JS_BINARY_EXPRESSION@0..7973 + 0: JS_BINARY_EXPRESSION@0..7968 + 0: JS_BINARY_EXPRESSION@0..7963 + 0: JS_BINARY_EXPRESSION@0..7958 + 0: JS_BINARY_EXPRESSION@0..7953 + 0: JS_BINARY_EXPRESSION@0..7948 + 0: JS_BINARY_EXPRESSION@0..7943 + 0: JS_BINARY_EXPRESSION@0..7938 + 0: JS_BINARY_EXPRESSION@0..7933 + 0: JS_BINARY_EXPRESSION@0..7928 + 0: JS_BINARY_EXPRESSION@0..7923 + 0: JS_BINARY_EXPRESSION@0..7918 + 0: JS_BINARY_EXPRESSION@0..7913 + 0: JS_BINARY_EXPRESSION@0..7908 + 0: JS_BINARY_EXPRESSION@0..7903 + 0: JS_BINARY_EXPRESSION@0..7898 + 0: JS_BINARY_EXPRESSION@0..7893 + 0: JS_BINARY_EXPRESSION@0..7888 + 0: JS_BINARY_EXPRESSION@0..7883 + 0: JS_BINARY_EXPRESSION@0..7878 + 0: JS_BINARY_EXPRESSION@0..7873 + 0: JS_BINARY_EXPRESSION@0..7868 + 0: JS_BINARY_EXPRESSION@0..7863 + 0: JS_BINARY_EXPRESSION@0..7858 + 0: JS_BINARY_EXPRESSION@0..7853 + 0: JS_BINARY_EXPRESSION@0..7848 + 0: JS_BINARY_EXPRESSION@0..7843 + 0: JS_BINARY_EXPRESSION@0..7838 + 0: JS_BINARY_EXPRESSION@0..7833 + 0: JS_BINARY_EXPRESSION@0..7828 + 0: JS_BINARY_EXPRESSION@0..7823 + 0: JS_BINARY_EXPRESSION@0..7818 + 0: JS_BINARY_EXPRESSION@0..7813 + 0: JS_BINARY_EXPRESSION@0..7808 + 0: JS_BINARY_EXPRESSION@0..7803 + 0: JS_BINARY_EXPRESSION@0..7798 + 0: JS_BINARY_EXPRESSION@0..7793 + 0: JS_BINARY_EXPRESSION@0..7788 + 0: JS_BINARY_EXPRESSION@0..7783 + 0: JS_BINARY_EXPRESSION@0..7778 + 0: JS_BINARY_EXPRESSION@0..7773 + 0: JS_BINARY_EXPRESSION@0..7768 + 0: JS_BINARY_EXPRESSION@0..7763 + 0: JS_BINARY_EXPRESSION@0..7758 + 0: JS_BINARY_EXPRESSION@0..7753 + 0: JS_BINARY_EXPRESSION@0..7748 + 0: JS_BINARY_EXPRESSION@0..7743 + 0: JS_BINARY_EXPRESSION@0..7738 + 0: JS_BINARY_EXPRESSION@0..7733 + 0: JS_BINARY_EXPRESSION@0..7728 + 0: JS_BINARY_EXPRESSION@0..7723 + 0: JS_BINARY_EXPRESSION@0..7718 + 0: JS_BINARY_EXPRESSION@0..7713 + 0: JS_BINARY_EXPRESSION@0..7708 + 0: JS_BINARY_EXPRESSION@0..7703 + 0: JS_BINARY_EXPRESSION@0..7698 + 0: JS_BINARY_EXPRESSION@0..7693 + 0: JS_BINARY_EXPRESSION@0..7688 + 0: JS_BINARY_EXPRESSION@0..7683 + 0: JS_BINARY_EXPRESSION@0..7678 + 0: JS_BINARY_EXPRESSION@0..7673 + 0: JS_BINARY_EXPRESSION@0..7668 + 0: JS_BINARY_EXPRESSION@0..7663 + 0: JS_BINARY_EXPRESSION@0..7658 + 0: JS_BINARY_EXPRESSION@0..7653 + 0: JS_BINARY_EXPRESSION@0..7648 + 0: JS_BINARY_EXPRESSION@0..7643 + 0: JS_BINARY_EXPRESSION@0..7638 + 0: JS_BINARY_EXPRESSION@0..7633 + 0: JS_BINARY_EXPRESSION@0..7628 + 0: JS_BINARY_EXPRESSION@0..7623 + 0: JS_BINARY_EXPRESSION@0..7618 + 0: JS_BINARY_EXPRESSION@0..7613 + 0: JS_BINARY_EXPRESSION@0..7608 + 0: JS_BINARY_EXPRESSION@0..7603 + 0: JS_BINARY_EXPRESSION@0..7598 + 0: JS_BINARY_EXPRESSION@0..7593 + 0: JS_BINARY_EXPRESSION@0..7588 + 0: JS_BINARY_EXPRESSION@0..7583 + 0: JS_BINARY_EXPRESSION@0..7578 + 0: JS_BINARY_EXPRESSION@0..7573 + 0: JS_BINARY_EXPRESSION@0..7568 + 0: JS_BINARY_EXPRESSION@0..7563 + 0: JS_BINARY_EXPRESSION@0..7558 + 0: JS_BINARY_EXPRESSION@0..7553 + 0: JS_BINARY_EXPRESSION@0..7548 + 0: JS_BINARY_EXPRESSION@0..7543 + 0: JS_BINARY_EXPRESSION@0..7538 + 0: JS_BINARY_EXPRESSION@0..7533 + 0: JS_BINARY_EXPRESSION@0..7528 + 0: JS_BINARY_EXPRESSION@0..7523 + 0: JS_BINARY_EXPRESSION@0..7518 + 0: JS_BINARY_EXPRESSION@0..7513 + 0: JS_BINARY_EXPRESSION@0..7508 + 0: JS_BINARY_EXPRESSION@0..7503 + 0: JS_BINARY_EXPRESSION@0..7498 + 0: JS_BINARY_EXPRESSION@0..7493 + 0: JS_BINARY_EXPRESSION@0..7488 + 0: JS_BINARY_EXPRESSION@0..7483 + 0: JS_BINARY_EXPRESSION@0..7478 + 0: JS_BINARY_EXPRESSION@0..7473 + 0: JS_BINARY_EXPRESSION@0..7468 + 0: JS_BINARY_EXPRESSION@0..7463 + 0: JS_BINARY_EXPRESSION@0..7458 + 0: JS_BINARY_EXPRESSION@0..7453 + 0: JS_BINARY_EXPRESSION@0..7448 + 0: JS_BINARY_EXPRESSION@0..7443 + 0: JS_BINARY_EXPRESSION@0..7438 + 0: JS_BINARY_EXPRESSION@0..7433 + 0: JS_BINARY_EXPRESSION@0..7428 + 0: JS_BINARY_EXPRESSION@0..7423 + 0: JS_BINARY_EXPRESSION@0..7418 + 0: JS_BINARY_EXPRESSION@0..7413 + 0: JS_BINARY_EXPRESSION@0..7408 + 0: JS_BINARY_EXPRESSION@0..7403 + 0: JS_BINARY_EXPRESSION@0..7398 + 0: JS_BINARY_EXPRESSION@0..7393 + 0: JS_BINARY_EXPRESSION@0..7388 + 0: JS_BINARY_EXPRESSION@0..7383 + 0: JS_BINARY_EXPRESSION@0..7378 + 0: JS_BINARY_EXPRESSION@0..7373 + 0: JS_BINARY_EXPRESSION@0..7368 + 0: JS_BINARY_EXPRESSION@0..7363 + 0: JS_BINARY_EXPRESSION@0..7358 + 0: JS_BINARY_EXPRESSION@0..7353 + 0: JS_BINARY_EXPRESSION@0..7348 + 0: JS_BINARY_EXPRESSION@0..7343 + 0: JS_BINARY_EXPRESSION@0..7338 + 0: JS_BINARY_EXPRESSION@0..7333 + 0: JS_BINARY_EXPRESSION@0..7328 + 0: JS_BINARY_EXPRESSION@0..7323 + 0: JS_BINARY_EXPRESSION@0..7318 + 0: JS_BINARY_EXPRESSION@0..7313 + 0: JS_BINARY_EXPRESSION@0..7308 + 0: JS_BINARY_EXPRESSION@0..7303 + 0: JS_BINARY_EXPRESSION@0..7298 + 0: JS_BINARY_EXPRESSION@0..7293 + 0: JS_BINARY_EXPRESSION@0..7288 + 0: JS_BINARY_EXPRESSION@0..7283 + 0: JS_BINARY_EXPRESSION@0..7278 + 0: JS_BINARY_EXPRESSION@0..7273 + 0: JS_BINARY_EXPRESSION@0..7268 + 0: JS_BINARY_EXPRESSION@0..7263 + 0: JS_BINARY_EXPRESSION@0..7258 + 0: JS_BINARY_EXPRESSION@0..7253 + 0: JS_BINARY_EXPRESSION@0..7248 + 0: JS_BINARY_EXPRESSION@0..7243 + 0: JS_BINARY_EXPRESSION@0..7238 + 0: JS_BINARY_EXPRESSION@0..7233 + 0: JS_BINARY_EXPRESSION@0..7228 + 0: JS_BINARY_EXPRESSION@0..7223 + 0: JS_BINARY_EXPRESSION@0..7218 + 0: JS_BINARY_EXPRESSION@0..7213 + 0: JS_BINARY_EXPRESSION@0..7208 + 0: JS_BINARY_EXPRESSION@0..7203 + 0: JS_BINARY_EXPRESSION@0..7198 + 0: JS_BINARY_EXPRESSION@0..7193 + 0: JS_BINARY_EXPRESSION@0..7188 + 0: JS_BINARY_EXPRESSION@0..7183 + 0: JS_BINARY_EXPRESSION@0..7178 + 0: JS_BINARY_EXPRESSION@0..7173 + 0: JS_BINARY_EXPRESSION@0..7168 + 0: JS_BINARY_EXPRESSION@0..7163 + 0: JS_BINARY_EXPRESSION@0..7158 + 0: JS_BINARY_EXPRESSION@0..7153 + 0: JS_BINARY_EXPRESSION@0..7148 + 0: JS_BINARY_EXPRESSION@0..7143 + 0: JS_BINARY_EXPRESSION@0..7138 + 0: JS_BINARY_EXPRESSION@0..7133 + 0: JS_BINARY_EXPRESSION@0..7128 + 0: JS_BINARY_EXPRESSION@0..7123 + 0: JS_BINARY_EXPRESSION@0..7118 + 0: JS_BINARY_EXPRESSION@0..7113 + 0: JS_BINARY_EXPRESSION@0..7108 + 0: JS_BINARY_EXPRESSION@0..7103 + 0: JS_BINARY_EXPRESSION@0..7098 + 0: JS_BINARY_EXPRESSION@0..7093 + 0: JS_BINARY_EXPRESSION@0..7088 + 0: JS_BINARY_EXPRESSION@0..7083 + 0: JS_BINARY_EXPRESSION@0..7078 + 0: JS_BINARY_EXPRESSION@0..7073 + 0: JS_BINARY_EXPRESSION@0..7068 + 0: JS_BINARY_EXPRESSION@0..7063 + 0: JS_BINARY_EXPRESSION@0..7058 + 0: JS_BINARY_EXPRESSION@0..7053 + 0: JS_BINARY_EXPRESSION@0..7048 + 0: JS_BINARY_EXPRESSION@0..7043 + 0: JS_BINARY_EXPRESSION@0..7038 + 0: JS_BINARY_EXPRESSION@0..7033 + 0: JS_BINARY_EXPRESSION@0..7028 + 0: JS_BINARY_EXPRESSION@0..7023 + 0: JS_BINARY_EXPRESSION@0..7018 + 0: JS_BINARY_EXPRESSION@0..7013 + 0: JS_BINARY_EXPRESSION@0..7008 + 0: JS_BINARY_EXPRESSION@0..7003 + 0: JS_BINARY_EXPRESSION@0..6998 + 0: JS_BINARY_EXPRESSION@0..6993 + 0: JS_BINARY_EXPRESSION@0..6988 + 0: JS_BINARY_EXPRESSION@0..6983 + 0: JS_BINARY_EXPRESSION@0..6978 + 0: JS_BINARY_EXPRESSION@0..6973 + 0: JS_BINARY_EXPRESSION@0..6968 + 0: JS_BINARY_EXPRESSION@0..6963 + 0: JS_BINARY_EXPRESSION@0..6958 + 0: JS_BINARY_EXPRESSION@0..6953 + 0: JS_BINARY_EXPRESSION@0..6948 + 0: JS_BINARY_EXPRESSION@0..6943 + 0: JS_BINARY_EXPRESSION@0..6938 + 0: JS_BINARY_EXPRESSION@0..6933 + 0: JS_BINARY_EXPRESSION@0..6928 + 0: JS_BINARY_EXPRESSION@0..6923 + 0: JS_BINARY_EXPRESSION@0..6918 + 0: JS_BINARY_EXPRESSION@0..6913 + 0: JS_BINARY_EXPRESSION@0..6908 + 0: JS_BINARY_EXPRESSION@0..6903 + 0: JS_BINARY_EXPRESSION@0..6898 + 0: JS_BINARY_EXPRESSION@0..6893 + 0: JS_BINARY_EXPRESSION@0..6888 + 0: JS_BINARY_EXPRESSION@0..6883 + 0: JS_BINARY_EXPRESSION@0..6878 + 0: JS_BINARY_EXPRESSION@0..6873 + 0: JS_BINARY_EXPRESSION@0..6868 + 0: JS_BINARY_EXPRESSION@0..6863 + 0: JS_BINARY_EXPRESSION@0..6858 + 0: JS_BINARY_EXPRESSION@0..6853 + 0: JS_BINARY_EXPRESSION@0..6848 + 0: JS_BINARY_EXPRESSION@0..6843 + 0: JS_BINARY_EXPRESSION@0..6838 + 0: JS_BINARY_EXPRESSION@0..6833 + 0: JS_BINARY_EXPRESSION@0..6828 + 0: JS_BINARY_EXPRESSION@0..6823 + 0: JS_BINARY_EXPRESSION@0..6818 + 0: JS_BINARY_EXPRESSION@0..6813 + 0: JS_BINARY_EXPRESSION@0..6808 + 0: JS_BINARY_EXPRESSION@0..6803 + 0: JS_BINARY_EXPRESSION@0..6798 + 0: JS_BINARY_EXPRESSION@0..6793 + 0: JS_BINARY_EXPRESSION@0..6788 + 0: JS_BINARY_EXPRESSION@0..6783 + 0: JS_BINARY_EXPRESSION@0..6778 + 0: JS_BINARY_EXPRESSION@0..6773 + 0: JS_BINARY_EXPRESSION@0..6768 + 0: JS_BINARY_EXPRESSION@0..6763 + 0: JS_BINARY_EXPRESSION@0..6758 + 0: JS_BINARY_EXPRESSION@0..6753 + 0: JS_BINARY_EXPRESSION@0..6748 + 0: JS_BINARY_EXPRESSION@0..6743 + 0: JS_BINARY_EXPRESSION@0..6738 + 0: JS_BINARY_EXPRESSION@0..6733 + 0: JS_BINARY_EXPRESSION@0..6728 + 0: JS_BINARY_EXPRESSION@0..6723 + 0: JS_BINARY_EXPRESSION@0..6718 + 0: JS_BINARY_EXPRESSION@0..6713 + 0: JS_BINARY_EXPRESSION@0..6708 + 0: JS_BINARY_EXPRESSION@0..6703 + 0: JS_BINARY_EXPRESSION@0..6698 + 0: JS_BINARY_EXPRESSION@0..6693 + 0: JS_BINARY_EXPRESSION@0..6688 + 0: JS_BINARY_EXPRESSION@0..6683 + 0: JS_BINARY_EXPRESSION@0..6678 + 0: JS_BINARY_EXPRESSION@0..6673 + 0: JS_BINARY_EXPRESSION@0..6668 + 0: JS_BINARY_EXPRESSION@0..6663 + 0: JS_BINARY_EXPRESSION@0..6658 + 0: JS_BINARY_EXPRESSION@0..6653 + 0: JS_BINARY_EXPRESSION@0..6648 + 0: JS_BINARY_EXPRESSION@0..6643 + 0: JS_BINARY_EXPRESSION@0..6638 + 0: JS_BINARY_EXPRESSION@0..6633 + 0: JS_BINARY_EXPRESSION@0..6628 + 0: JS_BINARY_EXPRESSION@0..6623 + 0: JS_BINARY_EXPRESSION@0..6618 + 0: JS_BINARY_EXPRESSION@0..6613 + 0: JS_BINARY_EXPRESSION@0..6608 + 0: JS_BINARY_EXPRESSION@0..6603 + 0: JS_BINARY_EXPRESSION@0..6598 + 0: JS_BINARY_EXPRESSION@0..6593 + 0: JS_BINARY_EXPRESSION@0..6588 + 0: JS_BINARY_EXPRESSION@0..6583 + 0: JS_BINARY_EXPRESSION@0..6578 + 0: JS_BINARY_EXPRESSION@0..6573 + 0: JS_BINARY_EXPRESSION@0..6568 + 0: JS_BINARY_EXPRESSION@0..6563 + 0: JS_BINARY_EXPRESSION@0..6558 + 0: JS_BINARY_EXPRESSION@0..6553 + 0: JS_BINARY_EXPRESSION@0..6548 + 0: JS_BINARY_EXPRESSION@0..6543 + 0: JS_BINARY_EXPRESSION@0..6538 + 0: JS_BINARY_EXPRESSION@0..6533 + 0: JS_BINARY_EXPRESSION@0..6528 + 0: JS_BINARY_EXPRESSION@0..6523 + 0: JS_BINARY_EXPRESSION@0..6518 + 0: JS_BINARY_EXPRESSION@0..6513 + 0: JS_BINARY_EXPRESSION@0..6508 + 0: JS_BINARY_EXPRESSION@0..6503 + 0: JS_BINARY_EXPRESSION@0..6498 + 0: JS_BINARY_EXPRESSION@0..6493 + 0: JS_BINARY_EXPRESSION@0..6488 + 0: JS_BINARY_EXPRESSION@0..6483 + 0: JS_BINARY_EXPRESSION@0..6478 + 0: JS_BINARY_EXPRESSION@0..6473 + 0: JS_BINARY_EXPRESSION@0..6468 + 0: JS_BINARY_EXPRESSION@0..6463 + 0: JS_BINARY_EXPRESSION@0..6458 + 0: JS_BINARY_EXPRESSION@0..6453 + 0: JS_BINARY_EXPRESSION@0..6448 + 0: JS_BINARY_EXPRESSION@0..6443 + 0: JS_BINARY_EXPRESSION@0..6438 + 0: JS_BINARY_EXPRESSION@0..6433 + 0: JS_BINARY_EXPRESSION@0..6428 + 0: JS_BINARY_EXPRESSION@0..6423 + 0: JS_BINARY_EXPRESSION@0..6418 + 0: JS_BINARY_EXPRESSION@0..6413 + 0: JS_BINARY_EXPRESSION@0..6408 + 0: JS_BINARY_EXPRESSION@0..6403 + 0: JS_BINARY_EXPRESSION@0..6398 + 0: JS_BINARY_EXPRESSION@0..6393 + 0: JS_BINARY_EXPRESSION@0..6388 + 0: JS_BINARY_EXPRESSION@0..6383 + 0: JS_BINARY_EXPRESSION@0..6378 + 0: JS_BINARY_EXPRESSION@0..6373 + 0: JS_BINARY_EXPRESSION@0..6368 + 0: JS_BINARY_EXPRESSION@0..6363 + 0: JS_BINARY_EXPRESSION@0..6358 + 0: JS_BINARY_EXPRESSION@0..6353 + 0: JS_BINARY_EXPRESSION@0..6348 + 0: JS_BINARY_EXPRESSION@0..6343 + 0: JS_BINARY_EXPRESSION@0..6338 + 0: JS_BINARY_EXPRESSION@0..6333 + 0: JS_BINARY_EXPRESSION@0..6328 + 0: JS_BINARY_EXPRESSION@0..6323 + 0: JS_BINARY_EXPRESSION@0..6318 + 0: JS_BINARY_EXPRESSION@0..6313 + 0: JS_BINARY_EXPRESSION@0..6308 + 0: JS_BINARY_EXPRESSION@0..6303 + 0: JS_BINARY_EXPRESSION@0..6298 + 0: JS_BINARY_EXPRESSION@0..6293 + 0: JS_BINARY_EXPRESSION@0..6288 + 0: JS_BINARY_EXPRESSION@0..6283 + 0: JS_BINARY_EXPRESSION@0..6278 + 0: JS_BINARY_EXPRESSION@0..6273 + 0: JS_BINARY_EXPRESSION@0..6268 + 0: JS_BINARY_EXPRESSION@0..6263 + 0: JS_BINARY_EXPRESSION@0..6258 + 0: JS_BINARY_EXPRESSION@0..6253 + 0: JS_BINARY_EXPRESSION@0..6248 + 0: JS_BINARY_EXPRESSION@0..6243 + 0: JS_BINARY_EXPRESSION@0..6238 + 0: JS_BINARY_EXPRESSION@0..6233 + 0: JS_BINARY_EXPRESSION@0..6228 + 0: JS_BINARY_EXPRESSION@0..6223 + 0: JS_BINARY_EXPRESSION@0..6218 + 0: JS_BINARY_EXPRESSION@0..6213 + 0: JS_BINARY_EXPRESSION@0..6208 + 0: JS_BINARY_EXPRESSION@0..6203 + 0: JS_BINARY_EXPRESSION@0..6198 + 0: JS_BINARY_EXPRESSION@0..6193 + 0: JS_BINARY_EXPRESSION@0..6188 + 0: JS_BINARY_EXPRESSION@0..6183 + 0: JS_BINARY_EXPRESSION@0..6178 + 0: JS_BINARY_EXPRESSION@0..6173 + 0: JS_BINARY_EXPRESSION@0..6168 + 0: JS_BINARY_EXPRESSION@0..6163 + 0: JS_BINARY_EXPRESSION@0..6158 + 0: JS_BINARY_EXPRESSION@0..6153 + 0: JS_BINARY_EXPRESSION@0..6148 + 0: JS_BINARY_EXPRESSION@0..6143 + 0: JS_BINARY_EXPRESSION@0..6138 + 0: JS_BINARY_EXPRESSION@0..6133 + 0: JS_BINARY_EXPRESSION@0..6128 + 0: JS_BINARY_EXPRESSION@0..6123 + 0: JS_BINARY_EXPRESSION@0..6118 + 0: JS_BINARY_EXPRESSION@0..6113 + 0: JS_BINARY_EXPRESSION@0..6108 + 0: JS_BINARY_EXPRESSION@0..6103 + 0: JS_BINARY_EXPRESSION@0..6098 + 0: JS_BINARY_EXPRESSION@0..6093 + 0: JS_BINARY_EXPRESSION@0..6088 + 0: JS_BINARY_EXPRESSION@0..6083 + 0: JS_BINARY_EXPRESSION@0..6078 + 0: JS_BINARY_EXPRESSION@0..6073 + 0: JS_BINARY_EXPRESSION@0..6068 + 0: JS_BINARY_EXPRESSION@0..6063 + 0: JS_BINARY_EXPRESSION@0..6058 + 0: JS_BINARY_EXPRESSION@0..6053 + 0: JS_BINARY_EXPRESSION@0..6048 + 0: JS_BINARY_EXPRESSION@0..6043 + 0: JS_BINARY_EXPRESSION@0..6038 + 0: JS_BINARY_EXPRESSION@0..6033 + 0: JS_BINARY_EXPRESSION@0..6028 + 0: JS_BINARY_EXPRESSION@0..6023 + 0: JS_BINARY_EXPRESSION@0..6018 + 0: JS_BINARY_EXPRESSION@0..6013 + 0: JS_BINARY_EXPRESSION@0..6008 + 0: JS_BINARY_EXPRESSION@0..6003 + 0: JS_BINARY_EXPRESSION@0..5998 + 0: JS_BINARY_EXPRESSION@0..5993 + 0: JS_BINARY_EXPRESSION@0..5988 + 0: JS_BINARY_EXPRESSION@0..5983 + 0: JS_BINARY_EXPRESSION@0..5978 + 0: JS_BINARY_EXPRESSION@0..5973 + 0: JS_BINARY_EXPRESSION@0..5968 + 0: JS_BINARY_EXPRESSION@0..5963 + 0: JS_BINARY_EXPRESSION@0..5958 + 0: JS_BINARY_EXPRESSION@0..5953 + 0: JS_BINARY_EXPRESSION@0..5948 + 0: JS_BINARY_EXPRESSION@0..5943 + 0: JS_BINARY_EXPRESSION@0..5938 + 0: JS_BINARY_EXPRESSION@0..5933 + 0: JS_BINARY_EXPRESSION@0..5928 + 0: JS_BINARY_EXPRESSION@0..5923 + 0: JS_BINARY_EXPRESSION@0..5918 + 0: JS_BINARY_EXPRESSION@0..5913 + 0: JS_BINARY_EXPRESSION@0..5908 + 0: JS_BINARY_EXPRESSION@0..5903 + 0: JS_BINARY_EXPRESSION@0..5898 + 0: JS_BINARY_EXPRESSION@0..5893 + 0: JS_BINARY_EXPRESSION@0..5888 + 0: JS_BINARY_EXPRESSION@0..5883 + 0: JS_BINARY_EXPRESSION@0..5878 + 0: JS_BINARY_EXPRESSION@0..5873 + 0: JS_BINARY_EXPRESSION@0..5868 + 0: JS_BINARY_EXPRESSION@0..5863 + 0: JS_BINARY_EXPRESSION@0..5858 + 0: JS_BINARY_EXPRESSION@0..5853 + 0: JS_BINARY_EXPRESSION@0..5848 + 0: JS_BINARY_EXPRESSION@0..5843 + 0: JS_BINARY_EXPRESSION@0..5838 + 0: JS_BINARY_EXPRESSION@0..5833 + 0: JS_BINARY_EXPRESSION@0..5828 + 0: JS_BINARY_EXPRESSION@0..5823 + 0: JS_BINARY_EXPRESSION@0..5818 + 0: JS_BINARY_EXPRESSION@0..5813 + 0: JS_BINARY_EXPRESSION@0..5808 + 0: JS_BINARY_EXPRESSION@0..5803 + 0: JS_BINARY_EXPRESSION@0..5798 + 0: JS_BINARY_EXPRESSION@0..5793 + 0: JS_BINARY_EXPRESSION@0..5788 + 0: JS_BINARY_EXPRESSION@0..5783 + 0: JS_BINARY_EXPRESSION@0..5778 + 0: JS_BINARY_EXPRESSION@0..5773 + 0: JS_BINARY_EXPRESSION@0..5768 + 0: JS_BINARY_EXPRESSION@0..5763 + 0: JS_BINARY_EXPRESSION@0..5758 + 0: JS_BINARY_EXPRESSION@0..5753 + 0: JS_BINARY_EXPRESSION@0..5748 + 0: JS_BINARY_EXPRESSION@0..5743 + 0: JS_BINARY_EXPRESSION@0..5738 + 0: JS_BINARY_EXPRESSION@0..5733 + 0: JS_BINARY_EXPRESSION@0..5728 + 0: JS_BINARY_EXPRESSION@0..5723 + 0: JS_BINARY_EXPRESSION@0..5718 + 0: JS_BINARY_EXPRESSION@0..5713 + 0: JS_BINARY_EXPRESSION@0..5708 + 0: JS_BINARY_EXPRESSION@0..5703 + 0: JS_BINARY_EXPRESSION@0..5698 + 0: JS_BINARY_EXPRESSION@0..5693 + 0: JS_BINARY_EXPRESSION@0..5688 + 0: JS_BINARY_EXPRESSION@0..5683 + 0: JS_BINARY_EXPRESSION@0..5678 + 0: JS_BINARY_EXPRESSION@0..5673 + 0: JS_BINARY_EXPRESSION@0..5668 + 0: JS_BINARY_EXPRESSION@0..5663 + 0: JS_BINARY_EXPRESSION@0..5658 + 0: JS_BINARY_EXPRESSION@0..5653 + 0: JS_BINARY_EXPRESSION@0..5648 + 0: JS_BINARY_EXPRESSION@0..5643 + 0: JS_BINARY_EXPRESSION@0..5638 + 0: JS_BINARY_EXPRESSION@0..5633 + 0: JS_BINARY_EXPRESSION@0..5628 + 0: JS_BINARY_EXPRESSION@0..5623 + 0: JS_BINARY_EXPRESSION@0..5618 + 0: JS_BINARY_EXPRESSION@0..5613 + 0: JS_BINARY_EXPRESSION@0..5608 + 0: JS_BINARY_EXPRESSION@0..5603 + 0: JS_BINARY_EXPRESSION@0..5598 + 0: JS_BINARY_EXPRESSION@0..5593 + 0: JS_BINARY_EXPRESSION@0..5588 + 0: JS_BINARY_EXPRESSION@0..5583 + 0: JS_BINARY_EXPRESSION@0..5578 + 0: JS_BINARY_EXPRESSION@0..5573 + 0: JS_BINARY_EXPRESSION@0..5568 + 0: JS_BINARY_EXPRESSION@0..5563 + 0: JS_BINARY_EXPRESSION@0..5558 + 0: JS_BINARY_EXPRESSION@0..5553 + 0: JS_BINARY_EXPRESSION@0..5548 + 0: JS_BINARY_EXPRESSION@0..5543 + 0: JS_BINARY_EXPRESSION@0..5538 + 0: JS_BINARY_EXPRESSION@0..5533 + 0: JS_BINARY_EXPRESSION@0..5528 + 0: JS_BINARY_EXPRESSION@0..5523 + 0: JS_BINARY_EXPRESSION@0..5518 + 0: JS_BINARY_EXPRESSION@0..5513 + 0: JS_BINARY_EXPRESSION@0..5508 + 0: JS_BINARY_EXPRESSION@0..5503 + 0: JS_BINARY_EXPRESSION@0..5498 + 0: JS_BINARY_EXPRESSION@0..5493 + 0: JS_BINARY_EXPRESSION@0..5488 + 0: JS_BINARY_EXPRESSION@0..5483 + 0: JS_BINARY_EXPRESSION@0..5478 + 0: JS_BINARY_EXPRESSION@0..5473 + 0: JS_BINARY_EXPRESSION@0..5468 + 0: JS_BINARY_EXPRESSION@0..5463 + 0: JS_BINARY_EXPRESSION@0..5458 + 0: JS_BINARY_EXPRESSION@0..5453 + 0: JS_BINARY_EXPRESSION@0..5448 + 0: JS_BINARY_EXPRESSION@0..5443 + 0: JS_BINARY_EXPRESSION@0..5438 + 0: JS_BINARY_EXPRESSION@0..5433 + 0: JS_BINARY_EXPRESSION@0..5428 + 0: JS_BINARY_EXPRESSION@0..5423 + 0: JS_BINARY_EXPRESSION@0..5418 + 0: JS_BINARY_EXPRESSION@0..5413 + 0: JS_BINARY_EXPRESSION@0..5408 + 0: JS_BINARY_EXPRESSION@0..5403 + 0: JS_BINARY_EXPRESSION@0..5398 + 0: JS_BINARY_EXPRESSION@0..5393 + 0: JS_BINARY_EXPRESSION@0..5388 + 0: JS_BINARY_EXPRESSION@0..5383 + 0: JS_BINARY_EXPRESSION@0..5378 + 0: JS_BINARY_EXPRESSION@0..5373 + 0: JS_BINARY_EXPRESSION@0..5368 + 0: JS_BINARY_EXPRESSION@0..5363 + 0: JS_BINARY_EXPRESSION@0..5358 + 0: JS_BINARY_EXPRESSION@0..5353 + 0: JS_BINARY_EXPRESSION@0..5348 + 0: JS_BINARY_EXPRESSION@0..5343 + 0: JS_BINARY_EXPRESSION@0..5338 + 0: JS_BINARY_EXPRESSION@0..5333 + 0: JS_BINARY_EXPRESSION@0..5328 + 0: JS_BINARY_EXPRESSION@0..5323 + 0: JS_BINARY_EXPRESSION@0..5318 + 0: JS_BINARY_EXPRESSION@0..5313 + 0: JS_BINARY_EXPRESSION@0..5308 + 0: JS_BINARY_EXPRESSION@0..5303 + 0: JS_BINARY_EXPRESSION@0..5298 + 0: JS_BINARY_EXPRESSION@0..5293 + 0: JS_BINARY_EXPRESSION@0..5288 + 0: JS_BINARY_EXPRESSION@0..5283 + 0: JS_BINARY_EXPRESSION@0..5278 + 0: JS_BINARY_EXPRESSION@0..5273 + 0: JS_BINARY_EXPRESSION@0..5268 + 0: JS_BINARY_EXPRESSION@0..5263 + 0: JS_BINARY_EXPRESSION@0..5258 + 0: JS_BINARY_EXPRESSION@0..5253 + 0: JS_BINARY_EXPRESSION@0..5248 + 0: JS_BINARY_EXPRESSION@0..5243 + 0: JS_BINARY_EXPRESSION@0..5238 + 0: JS_BINARY_EXPRESSION@0..5233 + 0: JS_BINARY_EXPRESSION@0..5228 + 0: JS_BINARY_EXPRESSION@0..5223 + 0: JS_BINARY_EXPRESSION@0..5218 + 0: JS_BINARY_EXPRESSION@0..5213 + 0: JS_BINARY_EXPRESSION@0..5208 + 0: JS_BINARY_EXPRESSION@0..5203 + 0: JS_BINARY_EXPRESSION@0..5198 + 0: JS_BINARY_EXPRESSION@0..5193 + 0: JS_BINARY_EXPRESSION@0..5188 + 0: JS_BINARY_EXPRESSION@0..5183 + 0: JS_BINARY_EXPRESSION@0..5178 + 0: JS_BINARY_EXPRESSION@0..5173 + 0: JS_BINARY_EXPRESSION@0..5168 + 0: JS_BINARY_EXPRESSION@0..5163 + 0: JS_BINARY_EXPRESSION@0..5158 + 0: JS_BINARY_EXPRESSION@0..5153 + 0: JS_BINARY_EXPRESSION@0..5148 + 0: JS_BINARY_EXPRESSION@0..5143 + 0: JS_BINARY_EXPRESSION@0..5138 + 0: JS_BINARY_EXPRESSION@0..5133 + 0: JS_BINARY_EXPRESSION@0..5128 + 0: JS_BINARY_EXPRESSION@0..5123 + 0: JS_BINARY_EXPRESSION@0..5118 + 0: JS_BINARY_EXPRESSION@0..5113 + 0: JS_BINARY_EXPRESSION@0..5108 + 0: JS_BINARY_EXPRESSION@0..5103 + 0: JS_BINARY_EXPRESSION@0..5098 + 0: JS_BINARY_EXPRESSION@0..5093 + 0: JS_BINARY_EXPRESSION@0..5088 + 0: JS_BINARY_EXPRESSION@0..5083 + 0: JS_BINARY_EXPRESSION@0..5078 + 0: JS_BINARY_EXPRESSION@0..5073 + 0: JS_BINARY_EXPRESSION@0..5068 + 0: JS_BINARY_EXPRESSION@0..5063 + 0: JS_BINARY_EXPRESSION@0..5058 + 0: JS_BINARY_EXPRESSION@0..5053 + 0: JS_BINARY_EXPRESSION@0..5048 + 0: JS_BINARY_EXPRESSION@0..5043 + 0: JS_BINARY_EXPRESSION@0..5038 + 0: JS_BINARY_EXPRESSION@0..5033 + 0: JS_BINARY_EXPRESSION@0..5028 + 0: JS_BINARY_EXPRESSION@0..5023 + 0: JS_BINARY_EXPRESSION@0..5018 + 0: JS_BINARY_EXPRESSION@0..5013 + 0: JS_BINARY_EXPRESSION@0..5008 + 0: JS_BINARY_EXPRESSION@0..5003 + 0: JS_BINARY_EXPRESSION@0..4998 + 0: JS_BINARY_EXPRESSION@0..4993 + 0: JS_BINARY_EXPRESSION@0..4988 + 0: JS_BINARY_EXPRESSION@0..4983 + 0: JS_BINARY_EXPRESSION@0..4978 + 0: JS_BINARY_EXPRESSION@0..4973 + 0: JS_BINARY_EXPRESSION@0..4968 + 0: JS_BINARY_EXPRESSION@0..4963 + 0: JS_BINARY_EXPRESSION@0..4958 + 0: JS_BINARY_EXPRESSION@0..4953 + 0: JS_BINARY_EXPRESSION@0..4948 + 0: JS_BINARY_EXPRESSION@0..4943 + 0: JS_BINARY_EXPRESSION@0..4938 + 0: JS_BINARY_EXPRESSION@0..4933 + 0: JS_BINARY_EXPRESSION@0..4928 + 0: JS_BINARY_EXPRESSION@0..4923 + 0: JS_BINARY_EXPRESSION@0..4918 + 0: JS_BINARY_EXPRESSION@0..4913 + 0: JS_BINARY_EXPRESSION@0..4908 + 0: JS_BINARY_EXPRESSION@0..4903 + 0: JS_BINARY_EXPRESSION@0..4898 + 0: JS_BINARY_EXPRESSION@0..4893 + 0: JS_BINARY_EXPRESSION@0..4888 + 0: JS_BINARY_EXPRESSION@0..4883 + 0: JS_BINARY_EXPRESSION@0..4878 + 0: JS_BINARY_EXPRESSION@0..4873 + 0: JS_BINARY_EXPRESSION@0..4868 + 0: JS_BINARY_EXPRESSION@0..4863 + 0: JS_BINARY_EXPRESSION@0..4858 + 0: JS_BINARY_EXPRESSION@0..4853 + 0: JS_BINARY_EXPRESSION@0..4848 + 0: JS_BINARY_EXPRESSION@0..4843 + 0: JS_BINARY_EXPRESSION@0..4838 + 0: JS_BINARY_EXPRESSION@0..4833 + 0: JS_BINARY_EXPRESSION@0..4828 + 0: JS_BINARY_EXPRESSION@0..4823 + 0: JS_BINARY_EXPRESSION@0..4818 + 0: JS_BINARY_EXPRESSION@0..4813 + 0: JS_BINARY_EXPRESSION@0..4808 + 0: JS_BINARY_EXPRESSION@0..4803 + 0: JS_BINARY_EXPRESSION@0..4798 + 0: JS_BINARY_EXPRESSION@0..4793 + 0: JS_BINARY_EXPRESSION@0..4788 + 0: JS_BINARY_EXPRESSION@0..4783 + 0: JS_BINARY_EXPRESSION@0..4778 + 0: JS_BINARY_EXPRESSION@0..4773 + 0: JS_BINARY_EXPRESSION@0..4768 + 0: JS_BINARY_EXPRESSION@0..4763 + 0: JS_BINARY_EXPRESSION@0..4758 + 0: JS_BINARY_EXPRESSION@0..4753 + 0: JS_BINARY_EXPRESSION@0..4748 + 0: JS_BINARY_EXPRESSION@0..4743 + 0: JS_BINARY_EXPRESSION@0..4738 + 0: JS_BINARY_EXPRESSION@0..4733 + 0: JS_BINARY_EXPRESSION@0..4728 + 0: JS_BINARY_EXPRESSION@0..4723 + 0: JS_BINARY_EXPRESSION@0..4718 + 0: JS_BINARY_EXPRESSION@0..4713 + 0: JS_BINARY_EXPRESSION@0..4708 + 0: JS_BINARY_EXPRESSION@0..4703 + 0: JS_BINARY_EXPRESSION@0..4698 + 0: JS_BINARY_EXPRESSION@0..4693 + 0: JS_BINARY_EXPRESSION@0..4688 + 0: JS_BINARY_EXPRESSION@0..4683 + 0: JS_BINARY_EXPRESSION@0..4678 + 0: JS_BINARY_EXPRESSION@0..4673 + 0: JS_BINARY_EXPRESSION@0..4668 + 0: JS_BINARY_EXPRESSION@0..4663 + 0: JS_BINARY_EXPRESSION@0..4658 + 0: JS_BINARY_EXPRESSION@0..4653 + 0: JS_BINARY_EXPRESSION@0..4648 + 0: JS_BINARY_EXPRESSION@0..4643 + 0: JS_BINARY_EXPRESSION@0..4638 + 0: JS_BINARY_EXPRESSION@0..4633 + 0: JS_BINARY_EXPRESSION@0..4628 + 0: JS_BINARY_EXPRESSION@0..4623 + 0: JS_BINARY_EXPRESSION@0..4618 + 0: JS_BINARY_EXPRESSION@0..4613 + 0: JS_BINARY_EXPRESSION@0..4608 + 0: JS_BINARY_EXPRESSION@0..4603 + 0: JS_BINARY_EXPRESSION@0..4598 + 0: JS_BINARY_EXPRESSION@0..4593 + 0: JS_BINARY_EXPRESSION@0..4588 + 0: JS_BINARY_EXPRESSION@0..4583 + 0: JS_BINARY_EXPRESSION@0..4578 + 0: JS_BINARY_EXPRESSION@0..4573 + 0: JS_BINARY_EXPRESSION@0..4568 + 0: JS_BINARY_EXPRESSION@0..4563 + 0: JS_BINARY_EXPRESSION@0..4558 + 0: JS_BINARY_EXPRESSION@0..4553 + 0: JS_BINARY_EXPRESSION@0..4548 + 0: JS_BINARY_EXPRESSION@0..4543 + 0: JS_BINARY_EXPRESSION@0..4538 + 0: JS_BINARY_EXPRESSION@0..4533 + 0: JS_BINARY_EXPRESSION@0..4528 + 0: JS_BINARY_EXPRESSION@0..4523 + 0: JS_BINARY_EXPRESSION@0..4518 + 0: JS_BINARY_EXPRESSION@0..4513 + 0: JS_BINARY_EXPRESSION@0..4508 + 0: JS_BINARY_EXPRESSION@0..4503 + 0: JS_BINARY_EXPRESSION@0..4498 + 0: JS_BINARY_EXPRESSION@0..4493 + 0: JS_BINARY_EXPRESSION@0..4488 + 0: JS_BINARY_EXPRESSION@0..4483 + 0: JS_BINARY_EXPRESSION@0..4478 + 0: JS_BINARY_EXPRESSION@0..4473 + 0: JS_BINARY_EXPRESSION@0..4468 + 0: JS_BINARY_EXPRESSION@0..4463 + 0: JS_BINARY_EXPRESSION@0..4458 + 0: JS_BINARY_EXPRESSION@0..4453 + 0: JS_BINARY_EXPRESSION@0..4448 + 0: JS_BINARY_EXPRESSION@0..4443 + 0: JS_BINARY_EXPRESSION@0..4438 + 0: JS_BINARY_EXPRESSION@0..4433 + 0: JS_BINARY_EXPRESSION@0..4428 + 0: JS_BINARY_EXPRESSION@0..4423 + 0: JS_BINARY_EXPRESSION@0..4418 + 0: JS_BINARY_EXPRESSION@0..4413 + 0: JS_BINARY_EXPRESSION@0..4408 + 0: JS_BINARY_EXPRESSION@0..4403 + 0: JS_BINARY_EXPRESSION@0..4398 + 0: JS_BINARY_EXPRESSION@0..4393 + 0: JS_BINARY_EXPRESSION@0..4388 + 0: JS_BINARY_EXPRESSION@0..4383 + 0: JS_BINARY_EXPRESSION@0..4378 + 0: JS_BINARY_EXPRESSION@0..4373 + 0: JS_BINARY_EXPRESSION@0..4368 + 0: JS_BINARY_EXPRESSION@0..4363 + 0: JS_BINARY_EXPRESSION@0..4358 + 0: JS_BINARY_EXPRESSION@0..4353 + 0: JS_BINARY_EXPRESSION@0..4348 + 0: JS_BINARY_EXPRESSION@0..4343 + 0: JS_BINARY_EXPRESSION@0..4338 + 0: JS_BINARY_EXPRESSION@0..4333 + 0: JS_BINARY_EXPRESSION@0..4328 + 0: JS_BINARY_EXPRESSION@0..4323 + 0: JS_BINARY_EXPRESSION@0..4318 + 0: JS_BINARY_EXPRESSION@0..4313 + 0: JS_BINARY_EXPRESSION@0..4308 + 0: JS_BINARY_EXPRESSION@0..4303 + 0: JS_BINARY_EXPRESSION@0..4298 + 0: JS_BINARY_EXPRESSION@0..4293 + 0: JS_BINARY_EXPRESSION@0..4288 + 0: JS_BINARY_EXPRESSION@0..4283 + 0: JS_BINARY_EXPRESSION@0..4278 + 0: JS_BINARY_EXPRESSION@0..4273 + 0: JS_BINARY_EXPRESSION@0..4268 + 0: JS_BINARY_EXPRESSION@0..4263 + 0: JS_BINARY_EXPRESSION@0..4258 + 0: JS_BINARY_EXPRESSION@0..4253 + 0: JS_BINARY_EXPRESSION@0..4248 + 0: JS_BINARY_EXPRESSION@0..4243 + 0: JS_BINARY_EXPRESSION@0..4238 + 0: JS_BINARY_EXPRESSION@0..4233 + 0: JS_BINARY_EXPRESSION@0..4228 + 0: JS_BINARY_EXPRESSION@0..4223 + 0: JS_BINARY_EXPRESSION@0..4218 + 0: JS_BINARY_EXPRESSION@0..4213 + 0: JS_BINARY_EXPRESSION@0..4208 + 0: JS_BINARY_EXPRESSION@0..4203 + 0: JS_BINARY_EXPRESSION@0..4198 + 0: JS_BINARY_EXPRESSION@0..4193 + 0: JS_BINARY_EXPRESSION@0..4188 + 0: JS_BINARY_EXPRESSION@0..4183 + 0: JS_BINARY_EXPRESSION@0..4178 + 0: JS_BINARY_EXPRESSION@0..4173 + 0: JS_BINARY_EXPRESSION@0..4168 + 0: JS_BINARY_EXPRESSION@0..4163 + 0: JS_BINARY_EXPRESSION@0..4158 + 0: JS_BINARY_EXPRESSION@0..4153 + 0: JS_BINARY_EXPRESSION@0..4148 + 0: JS_BINARY_EXPRESSION@0..4143 + 0: JS_BINARY_EXPRESSION@0..4138 + 0: JS_BINARY_EXPRESSION@0..4133 + 0: JS_BINARY_EXPRESSION@0..4128 + 0: JS_BINARY_EXPRESSION@0..4123 + 0: JS_BINARY_EXPRESSION@0..4118 + 0: JS_BINARY_EXPRESSION@0..4113 + 0: JS_BINARY_EXPRESSION@0..4108 + 0: JS_BINARY_EXPRESSION@0..4103 + 0: JS_BINARY_EXPRESSION@0..4098 + 0: JS_BINARY_EXPRESSION@0..4093 + 0: JS_BINARY_EXPRESSION@0..4088 + 0: JS_BINARY_EXPRESSION@0..4083 + 0: JS_BINARY_EXPRESSION@0..4078 + 0: JS_BINARY_EXPRESSION@0..4073 + 0: JS_BINARY_EXPRESSION@0..4068 + 0: JS_BINARY_EXPRESSION@0..4063 + 0: JS_BINARY_EXPRESSION@0..4058 + 0: JS_BINARY_EXPRESSION@0..4053 + 0: JS_BINARY_EXPRESSION@0..4048 + 0: JS_BINARY_EXPRESSION@0..4043 + 0: JS_BINARY_EXPRESSION@0..4038 + 0: JS_BINARY_EXPRESSION@0..4033 + 0: JS_BINARY_EXPRESSION@0..4028 + 0: JS_BINARY_EXPRESSION@0..4023 + 0: JS_BINARY_EXPRESSION@0..4018 + 0: JS_BINARY_EXPRESSION@0..4013 + 0: JS_BINARY_EXPRESSION@0..4008 + 0: JS_BINARY_EXPRESSION@0..4003 + 0: JS_BINARY_EXPRESSION@0..3998 + 0: JS_BINARY_EXPRESSION@0..3993 + 0: JS_BINARY_EXPRESSION@0..3988 + 0: JS_BINARY_EXPRESSION@0..3983 + 0: JS_BINARY_EXPRESSION@0..3978 + 0: JS_BINARY_EXPRESSION@0..3973 + 0: JS_BINARY_EXPRESSION@0..3968 + 0: JS_BINARY_EXPRESSION@0..3963 + 0: JS_BINARY_EXPRESSION@0..3958 + 0: JS_BINARY_EXPRESSION@0..3953 + 0: JS_BINARY_EXPRESSION@0..3948 + 0: JS_BINARY_EXPRESSION@0..3943 + 0: JS_BINARY_EXPRESSION@0..3938 + 0: JS_BINARY_EXPRESSION@0..3933 + 0: JS_BINARY_EXPRESSION@0..3928 + 0: JS_BINARY_EXPRESSION@0..3923 + 0: JS_BINARY_EXPRESSION@0..3918 + 0: JS_BINARY_EXPRESSION@0..3913 + 0: JS_BINARY_EXPRESSION@0..3908 + 0: JS_BINARY_EXPRESSION@0..3903 + 0: JS_BINARY_EXPRESSION@0..3898 + 0: JS_BINARY_EXPRESSION@0..3893 + 0: JS_BINARY_EXPRESSION@0..3888 + 0: JS_BINARY_EXPRESSION@0..3883 + 0: JS_BINARY_EXPRESSION@0..3878 + 0: JS_BINARY_EXPRESSION@0..3873 + 0: JS_BINARY_EXPRESSION@0..3868 + 0: JS_BINARY_EXPRESSION@0..3863 + 0: JS_BINARY_EXPRESSION@0..3858 + 0: JS_BINARY_EXPRESSION@0..3853 + 0: JS_BINARY_EXPRESSION@0..3848 + 0: JS_BINARY_EXPRESSION@0..3843 + 0: JS_BINARY_EXPRESSION@0..3838 + 0: JS_BINARY_EXPRESSION@0..3833 + 0: JS_BINARY_EXPRESSION@0..3828 + 0: JS_BINARY_EXPRESSION@0..3823 + 0: JS_BINARY_EXPRESSION@0..3818 + 0: JS_BINARY_EXPRESSION@0..3813 + 0: JS_BINARY_EXPRESSION@0..3808 + 0: JS_BINARY_EXPRESSION@0..3803 + 0: JS_BINARY_EXPRESSION@0..3798 + 0: JS_BINARY_EXPRESSION@0..3793 + 0: JS_BINARY_EXPRESSION@0..3788 + 0: JS_BINARY_EXPRESSION@0..3783 + 0: JS_BINARY_EXPRESSION@0..3778 + 0: JS_BINARY_EXPRESSION@0..3773 + 0: JS_BINARY_EXPRESSION@0..3768 + 0: JS_BINARY_EXPRESSION@0..3763 + 0: JS_BINARY_EXPRESSION@0..3758 + 0: JS_BINARY_EXPRESSION@0..3753 + 0: JS_BINARY_EXPRESSION@0..3748 + 0: JS_BINARY_EXPRESSION@0..3743 + 0: JS_BINARY_EXPRESSION@0..3738 + 0: JS_BINARY_EXPRESSION@0..3733 + 0: JS_BINARY_EXPRESSION@0..3728 + 0: JS_BINARY_EXPRESSION@0..3723 + 0: JS_BINARY_EXPRESSION@0..3718 + 0: JS_BINARY_EXPRESSION@0..3713 + 0: JS_BINARY_EXPRESSION@0..3708 + 0: JS_BINARY_EXPRESSION@0..3703 + 0: JS_BINARY_EXPRESSION@0..3698 + 0: JS_BINARY_EXPRESSION@0..3693 + 0: JS_BINARY_EXPRESSION@0..3688 + 0: JS_BINARY_EXPRESSION@0..3683 + 0: JS_BINARY_EXPRESSION@0..3678 + 0: JS_BINARY_EXPRESSION@0..3673 + 0: JS_BINARY_EXPRESSION@0..3668 + 0: JS_BINARY_EXPRESSION@0..3663 + 0: JS_BINARY_EXPRESSION@0..3658 + 0: JS_BINARY_EXPRESSION@0..3653 + 0: JS_BINARY_EXPRESSION@0..3648 + 0: JS_BINARY_EXPRESSION@0..3643 + 0: JS_BINARY_EXPRESSION@0..3638 + 0: JS_BINARY_EXPRESSION@0..3633 + 0: JS_BINARY_EXPRESSION@0..3628 + 0: JS_BINARY_EXPRESSION@0..3623 + 0: JS_BINARY_EXPRESSION@0..3618 + 0: JS_BINARY_EXPRESSION@0..3613 + 0: JS_BINARY_EXPRESSION@0..3608 + 0: JS_BINARY_EXPRESSION@0..3603 + 0: JS_BINARY_EXPRESSION@0..3598 + 0: JS_BINARY_EXPRESSION@0..3593 + 0: JS_BINARY_EXPRESSION@0..3588 + 0: JS_BINARY_EXPRESSION@0..3583 + 0: JS_BINARY_EXPRESSION@0..3578 + 0: JS_BINARY_EXPRESSION@0..3573 + 0: JS_BINARY_EXPRESSION@0..3568 + 0: JS_BINARY_EXPRESSION@0..3563 + 0: JS_BINARY_EXPRESSION@0..3558 + 0: JS_BINARY_EXPRESSION@0..3553 + 0: JS_BINARY_EXPRESSION@0..3548 + 0: JS_BINARY_EXPRESSION@0..3543 + 0: JS_BINARY_EXPRESSION@0..3538 + 0: JS_BINARY_EXPRESSION@0..3533 + 0: JS_BINARY_EXPRESSION@0..3528 + 0: JS_BINARY_EXPRESSION@0..3523 + 0: JS_BINARY_EXPRESSION@0..3518 + 0: JS_BINARY_EXPRESSION@0..3513 + 0: JS_BINARY_EXPRESSION@0..3508 + 0: JS_BINARY_EXPRESSION@0..3503 + 0: JS_BINARY_EXPRESSION@0..3498 + 0: JS_BINARY_EXPRESSION@0..3493 + 0: JS_BINARY_EXPRESSION@0..3488 + 0: JS_BINARY_EXPRESSION@0..3483 + 0: JS_BINARY_EXPRESSION@0..3478 + 0: JS_BINARY_EXPRESSION@0..3473 + 0: JS_BINARY_EXPRESSION@0..3468 + 0: JS_BINARY_EXPRESSION@0..3463 + 0: JS_BINARY_EXPRESSION@0..3458 + 0: JS_BINARY_EXPRESSION@0..3453 + 0: JS_BINARY_EXPRESSION@0..3448 + 0: JS_BINARY_EXPRESSION@0..3443 + 0: JS_BINARY_EXPRESSION@0..3438 + 0: JS_BINARY_EXPRESSION@0..3433 + 0: JS_BINARY_EXPRESSION@0..3428 + 0: JS_BINARY_EXPRESSION@0..3423 + 0: JS_BINARY_EXPRESSION@0..3418 + 0: JS_BINARY_EXPRESSION@0..3413 + 0: JS_BINARY_EXPRESSION@0..3408 + 0: JS_BINARY_EXPRESSION@0..3403 + 0: JS_BINARY_EXPRESSION@0..3398 + 0: JS_BINARY_EXPRESSION@0..3393 + 0: JS_BINARY_EXPRESSION@0..3388 + 0: JS_BINARY_EXPRESSION@0..3383 + 0: JS_BINARY_EXPRESSION@0..3378 + 0: JS_BINARY_EXPRESSION@0..3373 + 0: JS_BINARY_EXPRESSION@0..3368 + 0: JS_BINARY_EXPRESSION@0..3363 + 0: JS_BINARY_EXPRESSION@0..3358 + 0: JS_BINARY_EXPRESSION@0..3353 + 0: JS_BINARY_EXPRESSION@0..3348 + 0: JS_BINARY_EXPRESSION@0..3343 + 0: JS_BINARY_EXPRESSION@0..3338 + 0: JS_BINARY_EXPRESSION@0..3333 + 0: JS_BINARY_EXPRESSION@0..3328 + 0: JS_BINARY_EXPRESSION@0..3323 + 0: JS_BINARY_EXPRESSION@0..3318 + 0: JS_BINARY_EXPRESSION@0..3313 + 0: JS_BINARY_EXPRESSION@0..3308 + 0: JS_BINARY_EXPRESSION@0..3303 + 0: JS_BINARY_EXPRESSION@0..3298 + 0: JS_BINARY_EXPRESSION@0..3293 + 0: JS_BINARY_EXPRESSION@0..3288 + 0: JS_BINARY_EXPRESSION@0..3283 + 0: JS_BINARY_EXPRESSION@0..3278 + 0: JS_BINARY_EXPRESSION@0..3273 + 0: JS_BINARY_EXPRESSION@0..3268 + 0: JS_BINARY_EXPRESSION@0..3263 + 0: JS_BINARY_EXPRESSION@0..3258 + 0: JS_BINARY_EXPRESSION@0..3253 + 0: JS_BINARY_EXPRESSION@0..3248 + 0: JS_BINARY_EXPRESSION@0..3243 + 0: JS_BINARY_EXPRESSION@0..3238 + 0: JS_BINARY_EXPRESSION@0..3233 + 0: JS_BINARY_EXPRESSION@0..3228 + 0: JS_BINARY_EXPRESSION@0..3223 + 0: JS_BINARY_EXPRESSION@0..3218 + 0: JS_BINARY_EXPRESSION@0..3213 + 0: JS_BINARY_EXPRESSION@0..3208 + 0: JS_BINARY_EXPRESSION@0..3203 + 0: JS_BINARY_EXPRESSION@0..3198 + 0: JS_BINARY_EXPRESSION@0..3193 + 0: JS_BINARY_EXPRESSION@0..3188 + 0: JS_BINARY_EXPRESSION@0..3183 + 0: JS_BINARY_EXPRESSION@0..3178 + 0: JS_BINARY_EXPRESSION@0..3173 + 0: JS_BINARY_EXPRESSION@0..3168 + 0: JS_BINARY_EXPRESSION@0..3163 + 0: JS_BINARY_EXPRESSION@0..3158 + 0: JS_BINARY_EXPRESSION@0..3153 + 0: JS_BINARY_EXPRESSION@0..3148 + 0: JS_BINARY_EXPRESSION@0..3143 + 0: JS_BINARY_EXPRESSION@0..3138 + 0: JS_BINARY_EXPRESSION@0..3133 + 0: JS_BINARY_EXPRESSION@0..3128 + 0: JS_BINARY_EXPRESSION@0..3123 + 0: JS_BINARY_EXPRESSION@0..3118 + 0: JS_BINARY_EXPRESSION@0..3113 + 0: JS_BINARY_EXPRESSION@0..3108 + 0: JS_BINARY_EXPRESSION@0..3103 + 0: JS_BINARY_EXPRESSION@0..3098 + 0: JS_BINARY_EXPRESSION@0..3093 + 0: JS_BINARY_EXPRESSION@0..3088 + 0: JS_BINARY_EXPRESSION@0..3083 + 0: JS_BINARY_EXPRESSION@0..3078 + 0: JS_BINARY_EXPRESSION@0..3073 + 0: JS_BINARY_EXPRESSION@0..3068 + 0: JS_BINARY_EXPRESSION@0..3063 + 0: JS_BINARY_EXPRESSION@0..3058 + 0: JS_BINARY_EXPRESSION@0..3053 + 0: JS_BINARY_EXPRESSION@0..3048 + 0: JS_BINARY_EXPRESSION@0..3043 + 0: JS_BINARY_EXPRESSION@0..3038 + 0: JS_BINARY_EXPRESSION@0..3033 + 0: JS_BINARY_EXPRESSION@0..3028 + 0: JS_BINARY_EXPRESSION@0..3023 + 0: JS_BINARY_EXPRESSION@0..3018 + 0: JS_BINARY_EXPRESSION@0..3013 + 0: JS_BINARY_EXPRESSION@0..3008 + 0: JS_BINARY_EXPRESSION@0..3003 + 0: JS_BINARY_EXPRESSION@0..2998 + 0: JS_BINARY_EXPRESSION@0..2993 + 0: JS_BINARY_EXPRESSION@0..2988 + 0: JS_BINARY_EXPRESSION@0..2983 + 0: JS_BINARY_EXPRESSION@0..2978 + 0: JS_BINARY_EXPRESSION@0..2973 + 0: JS_BINARY_EXPRESSION@0..2968 + 0: JS_BINARY_EXPRESSION@0..2963 + 0: JS_BINARY_EXPRESSION@0..2958 + 0: JS_BINARY_EXPRESSION@0..2953 + 0: JS_BINARY_EXPRESSION@0..2948 + 0: JS_BINARY_EXPRESSION@0..2943 + 0: JS_BINARY_EXPRESSION@0..2938 + 0: JS_BINARY_EXPRESSION@0..2933 + 0: JS_BINARY_EXPRESSION@0..2928 + 0: JS_BINARY_EXPRESSION@0..2923 + 0: JS_BINARY_EXPRESSION@0..2918 + 0: JS_BINARY_EXPRESSION@0..2913 + 0: JS_BINARY_EXPRESSION@0..2908 + 0: JS_BINARY_EXPRESSION@0..2903 + 0: JS_BINARY_EXPRESSION@0..2898 + 0: JS_BINARY_EXPRESSION@0..2893 + 0: JS_BINARY_EXPRESSION@0..2888 + 0: JS_BINARY_EXPRESSION@0..2883 + 0: JS_BINARY_EXPRESSION@0..2878 + 0: JS_BINARY_EXPRESSION@0..2873 + 0: JS_BINARY_EXPRESSION@0..2868 + 0: JS_BINARY_EXPRESSION@0..2863 + 0: JS_BINARY_EXPRESSION@0..2858 + 0: JS_BINARY_EXPRESSION@0..2853 + 0: JS_BINARY_EXPRESSION@0..2848 + 0: JS_BINARY_EXPRESSION@0..2843 + 0: JS_BINARY_EXPRESSION@0..2838 + 0: JS_BINARY_EXPRESSION@0..2833 + 0: JS_BINARY_EXPRESSION@0..2828 + 0: JS_BINARY_EXPRESSION@0..2823 + 0: JS_BINARY_EXPRESSION@0..2818 + 0: JS_BINARY_EXPRESSION@0..2813 + 0: JS_BINARY_EXPRESSION@0..2808 + 0: JS_BINARY_EXPRESSION@0..2803 + 0: JS_BINARY_EXPRESSION@0..2798 + 0: JS_BINARY_EXPRESSION@0..2793 + 0: JS_BINARY_EXPRESSION@0..2788 + 0: JS_BINARY_EXPRESSION@0..2783 + 0: JS_BINARY_EXPRESSION@0..2778 + 0: JS_BINARY_EXPRESSION@0..2773 + 0: JS_BINARY_EXPRESSION@0..2768 + 0: JS_BINARY_EXPRESSION@0..2763 + 0: JS_BINARY_EXPRESSION@0..2758 + 0: JS_BINARY_EXPRESSION@0..2753 + 0: JS_BINARY_EXPRESSION@0..2748 + 0: JS_BINARY_EXPRESSION@0..2743 + 0: JS_BINARY_EXPRESSION@0..2738 + 0: JS_BINARY_EXPRESSION@0..2733 + 0: JS_BINARY_EXPRESSION@0..2728 + 0: JS_BINARY_EXPRESSION@0..2723 + 0: JS_BINARY_EXPRESSION@0..2718 + 0: JS_BINARY_EXPRESSION@0..2713 + 0: JS_BINARY_EXPRESSION@0..2708 + 0: JS_BINARY_EXPRESSION@0..2703 + 0: JS_BINARY_EXPRESSION@0..2698 + 0: JS_BINARY_EXPRESSION@0..2693 + 0: JS_BINARY_EXPRESSION@0..2688 + 0: JS_BINARY_EXPRESSION@0..2683 + 0: JS_BINARY_EXPRESSION@0..2678 + 0: JS_BINARY_EXPRESSION@0..2673 + 0: JS_BINARY_EXPRESSION@0..2668 + 0: JS_BINARY_EXPRESSION@0..2663 + 0: JS_BINARY_EXPRESSION@0..2658 + 0: JS_BINARY_EXPRESSION@0..2653 + 0: JS_BINARY_EXPRESSION@0..2648 + 0: JS_BINARY_EXPRESSION@0..2643 + 0: JS_BINARY_EXPRESSION@0..2638 + 0: JS_BINARY_EXPRESSION@0..2633 + 0: JS_BINARY_EXPRESSION@0..2628 + 0: JS_BINARY_EXPRESSION@0..2623 + 0: JS_BINARY_EXPRESSION@0..2618 + 0: JS_BINARY_EXPRESSION@0..2613 + 0: JS_BINARY_EXPRESSION@0..2608 + 0: JS_BINARY_EXPRESSION@0..2603 + 0: JS_BINARY_EXPRESSION@0..2598 + 0: JS_BINARY_EXPRESSION@0..2593 + 0: JS_BINARY_EXPRESSION@0..2588 + 0: JS_BINARY_EXPRESSION@0..2583 + 0: JS_BINARY_EXPRESSION@0..2578 + 0: JS_BINARY_EXPRESSION@0..2573 + 0: JS_BINARY_EXPRESSION@0..2568 + 0: JS_BINARY_EXPRESSION@0..2563 + 0: JS_BINARY_EXPRESSION@0..2558 + 0: JS_BINARY_EXPRESSION@0..2553 + 0: JS_BINARY_EXPRESSION@0..2548 + 0: JS_BINARY_EXPRESSION@0..2543 + 0: JS_BINARY_EXPRESSION@0..2538 + 0: JS_BINARY_EXPRESSION@0..2533 + 0: JS_BINARY_EXPRESSION@0..2528 + 0: JS_BINARY_EXPRESSION@0..2523 + 0: JS_BINARY_EXPRESSION@0..2518 + 0: JS_BINARY_EXPRESSION@0..2513 + 0: JS_BINARY_EXPRESSION@0..2508 + 0: JS_BINARY_EXPRESSION@0..2503 + 0: JS_BINARY_EXPRESSION@0..2498 + 0: JS_BINARY_EXPRESSION@0..2493 + 0: JS_BINARY_EXPRESSION@0..2488 + 0: JS_BINARY_EXPRESSION@0..2483 + 0: JS_BINARY_EXPRESSION@0..2478 + 0: JS_BINARY_EXPRESSION@0..2473 + 0: JS_BINARY_EXPRESSION@0..2468 + 0: JS_BINARY_EXPRESSION@0..2463 + 0: JS_BINARY_EXPRESSION@0..2458 + 0: JS_BINARY_EXPRESSION@0..2453 + 0: JS_BINARY_EXPRESSION@0..2448 + 0: JS_BINARY_EXPRESSION@0..2443 + 0: JS_BINARY_EXPRESSION@0..2438 + 0: JS_BINARY_EXPRESSION@0..2433 + 0: JS_BINARY_EXPRESSION@0..2428 + 0: JS_BINARY_EXPRESSION@0..2423 + 0: JS_BINARY_EXPRESSION@0..2418 + 0: JS_BINARY_EXPRESSION@0..2413 + 0: JS_BINARY_EXPRESSION@0..2408 + 0: JS_BINARY_EXPRESSION@0..2403 + 0: JS_BINARY_EXPRESSION@0..2398 + 0: JS_BINARY_EXPRESSION@0..2393 + 0: JS_BINARY_EXPRESSION@0..2388 + 0: JS_BINARY_EXPRESSION@0..2383 + 0: JS_BINARY_EXPRESSION@0..2378 + 0: JS_BINARY_EXPRESSION@0..2373 + 0: JS_BINARY_EXPRESSION@0..2368 + 0: JS_BINARY_EXPRESSION@0..2363 + 0: JS_BINARY_EXPRESSION@0..2358 + 0: JS_BINARY_EXPRESSION@0..2353 + 0: JS_BINARY_EXPRESSION@0..2348 + 0: JS_BINARY_EXPRESSION@0..2343 + 0: JS_BINARY_EXPRESSION@0..2338 + 0: JS_BINARY_EXPRESSION@0..2333 + 0: JS_BINARY_EXPRESSION@0..2328 + 0: JS_BINARY_EXPRESSION@0..2323 + 0: JS_BINARY_EXPRESSION@0..2318 + 0: JS_BINARY_EXPRESSION@0..2313 + 0: JS_BINARY_EXPRESSION@0..2308 + 0: JS_BINARY_EXPRESSION@0..2303 + 0: JS_BINARY_EXPRESSION@0..2298 + 0: JS_BINARY_EXPRESSION@0..2293 + 0: JS_BINARY_EXPRESSION@0..2288 + 0: JS_BINARY_EXPRESSION@0..2283 + 0: JS_BINARY_EXPRESSION@0..2278 + 0: JS_BINARY_EXPRESSION@0..2273 + 0: JS_BINARY_EXPRESSION@0..2268 + 0: JS_BINARY_EXPRESSION@0..2263 + 0: JS_BINARY_EXPRESSION@0..2258 + 0: JS_BINARY_EXPRESSION@0..2253 + 0: JS_BINARY_EXPRESSION@0..2248 + 0: JS_BINARY_EXPRESSION@0..2243 + 0: JS_BINARY_EXPRESSION@0..2238 + 0: JS_BINARY_EXPRESSION@0..2233 + 0: JS_BINARY_EXPRESSION@0..2228 + 0: JS_BINARY_EXPRESSION@0..2223 + 0: JS_BINARY_EXPRESSION@0..2218 + 0: JS_BINARY_EXPRESSION@0..2213 + 0: JS_BINARY_EXPRESSION@0..2208 + 0: JS_BINARY_EXPRESSION@0..2203 + 0: JS_BINARY_EXPRESSION@0..2198 + 0: JS_BINARY_EXPRESSION@0..2193 + 0: JS_BINARY_EXPRESSION@0..2188 + 0: JS_BINARY_EXPRESSION@0..2183 + 0: JS_BINARY_EXPRESSION@0..2178 + 0: JS_BINARY_EXPRESSION@0..2173 + 0: JS_BINARY_EXPRESSION@0..2168 + 0: JS_BINARY_EXPRESSION@0..2163 + 0: JS_BINARY_EXPRESSION@0..2158 + 0: JS_BINARY_EXPRESSION@0..2153 + 0: JS_BINARY_EXPRESSION@0..2148 + 0: JS_BINARY_EXPRESSION@0..2143 + 0: JS_BINARY_EXPRESSION@0..2138 + 0: JS_BINARY_EXPRESSION@0..2133 + 0: JS_BINARY_EXPRESSION@0..2128 + 0: JS_BINARY_EXPRESSION@0..2123 + 0: JS_BINARY_EXPRESSION@0..2118 + 0: JS_BINARY_EXPRESSION@0..2113 + 0: JS_BINARY_EXPRESSION@0..2108 + 0: JS_BINARY_EXPRESSION@0..2103 + 0: JS_BINARY_EXPRESSION@0..2098 + 0: JS_BINARY_EXPRESSION@0..2093 + 0: JS_BINARY_EXPRESSION@0..2088 + 0: JS_BINARY_EXPRESSION@0..2083 + 0: JS_BINARY_EXPRESSION@0..2078 + 0: JS_BINARY_EXPRESSION@0..2073 + 0: JS_BINARY_EXPRESSION@0..2068 + 0: JS_BINARY_EXPRESSION@0..2063 + 0: JS_BINARY_EXPRESSION@0..2058 + 0: JS_BINARY_EXPRESSION@0..2053 + 0: JS_BINARY_EXPRESSION@0..2048 + 0: JS_BINARY_EXPRESSION@0..2043 + 0: JS_BINARY_EXPRESSION@0..2038 + 0: JS_BINARY_EXPRESSION@0..2033 + 0: JS_BINARY_EXPRESSION@0..2028 + 0: JS_BINARY_EXPRESSION@0..2023 + 0: JS_BINARY_EXPRESSION@0..2018 + 0: JS_BINARY_EXPRESSION@0..2013 + 0: JS_BINARY_EXPRESSION@0..2008 + 0: JS_BINARY_EXPRESSION@0..2003 + 0: JS_BINARY_EXPRESSION@0..1998 + 0: JS_BINARY_EXPRESSION@0..1993 + 0: JS_BINARY_EXPRESSION@0..1988 + 0: JS_BINARY_EXPRESSION@0..1983 + 0: JS_BINARY_EXPRESSION@0..1978 + 0: JS_BINARY_EXPRESSION@0..1973 + 0: JS_BINARY_EXPRESSION@0..1968 + 0: JS_BINARY_EXPRESSION@0..1963 + 0: JS_BINARY_EXPRESSION@0..1958 + 0: JS_BINARY_EXPRESSION@0..1953 + 0: JS_BINARY_EXPRESSION@0..1948 + 0: JS_BINARY_EXPRESSION@0..1943 + 0: JS_BINARY_EXPRESSION@0..1938 + 0: JS_BINARY_EXPRESSION@0..1933 + 0: JS_BINARY_EXPRESSION@0..1928 + 0: JS_BINARY_EXPRESSION@0..1923 + 0: JS_BINARY_EXPRESSION@0..1918 + 0: JS_BINARY_EXPRESSION@0..1913 + 0: JS_BINARY_EXPRESSION@0..1908 + 0: JS_BINARY_EXPRESSION@0..1903 + 0: JS_BINARY_EXPRESSION@0..1898 + 0: JS_BINARY_EXPRESSION@0..1893 + 0: JS_BINARY_EXPRESSION@0..1888 + 0: JS_BINARY_EXPRESSION@0..1883 + 0: JS_BINARY_EXPRESSION@0..1878 + 0: JS_BINARY_EXPRESSION@0..1873 + 0: JS_BINARY_EXPRESSION@0..1868 + 0: JS_BINARY_EXPRESSION@0..1863 + 0: JS_BINARY_EXPRESSION@0..1858 + 0: JS_BINARY_EXPRESSION@0..1853 + 0: JS_BINARY_EXPRESSION@0..1848 + 0: JS_BINARY_EXPRESSION@0..1843 + 0: JS_BINARY_EXPRESSION@0..1838 + 0: JS_BINARY_EXPRESSION@0..1833 + 0: JS_BINARY_EXPRESSION@0..1828 + 0: JS_BINARY_EXPRESSION@0..1823 + 0: JS_BINARY_EXPRESSION@0..1818 + 0: JS_BINARY_EXPRESSION@0..1813 + 0: JS_BINARY_EXPRESSION@0..1808 + 0: JS_BINARY_EXPRESSION@0..1803 + 0: JS_BINARY_EXPRESSION@0..1798 + 0: JS_BINARY_EXPRESSION@0..1793 + 0: JS_BINARY_EXPRESSION@0..1788 + 0: JS_BINARY_EXPRESSION@0..1783 + 0: JS_BINARY_EXPRESSION@0..1778 + 0: JS_BINARY_EXPRESSION@0..1773 + 0: JS_BINARY_EXPRESSION@0..1768 + 0: JS_BINARY_EXPRESSION@0..1763 + 0: JS_BINARY_EXPRESSION@0..1758 + 0: JS_BINARY_EXPRESSION@0..1753 + 0: JS_BINARY_EXPRESSION@0..1748 + 0: JS_BINARY_EXPRESSION@0..1743 + 0: JS_BINARY_EXPRESSION@0..1738 + 0: JS_BINARY_EXPRESSION@0..1733 + 0: JS_BINARY_EXPRESSION@0..1728 + 0: JS_BINARY_EXPRESSION@0..1723 + 0: JS_BINARY_EXPRESSION@0..1718 + 0: JS_BINARY_EXPRESSION@0..1713 + 0: JS_BINARY_EXPRESSION@0..1708 + 0: JS_BINARY_EXPRESSION@0..1703 + 0: JS_BINARY_EXPRESSION@0..1698 + 0: JS_BINARY_EXPRESSION@0..1693 + 0: JS_BINARY_EXPRESSION@0..1688 + 0: JS_BINARY_EXPRESSION@0..1683 + 0: JS_BINARY_EXPRESSION@0..1678 + 0: JS_BINARY_EXPRESSION@0..1673 + 0: JS_BINARY_EXPRESSION@0..1668 + 0: JS_BINARY_EXPRESSION@0..1663 + 0: JS_BINARY_EXPRESSION@0..1658 + 0: JS_BINARY_EXPRESSION@0..1653 + 0: JS_BINARY_EXPRESSION@0..1648 + 0: JS_BINARY_EXPRESSION@0..1643 + 0: JS_BINARY_EXPRESSION@0..1638 + 0: JS_BINARY_EXPRESSION@0..1633 + 0: JS_BINARY_EXPRESSION@0..1628 + 0: JS_BINARY_EXPRESSION@0..1623 + 0: JS_BINARY_EXPRESSION@0..1618 + 0: JS_BINARY_EXPRESSION@0..1613 + 0: JS_BINARY_EXPRESSION@0..1608 + 0: JS_BINARY_EXPRESSION@0..1603 + 0: JS_BINARY_EXPRESSION@0..1598 + 0: JS_BINARY_EXPRESSION@0..1593 + 0: JS_BINARY_EXPRESSION@0..1588 + 0: JS_BINARY_EXPRESSION@0..1583 + 0: JS_BINARY_EXPRESSION@0..1578 + 0: JS_BINARY_EXPRESSION@0..1573 + 0: JS_BINARY_EXPRESSION@0..1568 + 0: JS_BINARY_EXPRESSION@0..1563 + 0: JS_BINARY_EXPRESSION@0..1558 + 0: JS_BINARY_EXPRESSION@0..1553 + 0: JS_BINARY_EXPRESSION@0..1548 + 0: JS_BINARY_EXPRESSION@0..1543 + 0: JS_BINARY_EXPRESSION@0..1538 + 0: JS_BINARY_EXPRESSION@0..1533 + 0: JS_BINARY_EXPRESSION@0..1528 + 0: JS_BINARY_EXPRESSION@0..1523 + 0: JS_BINARY_EXPRESSION@0..1518 + 0: JS_BINARY_EXPRESSION@0..1513 + 0: JS_BINARY_EXPRESSION@0..1508 + 0: JS_BINARY_EXPRESSION@0..1503 + 0: JS_BINARY_EXPRESSION@0..1498 + 0: JS_BINARY_EXPRESSION@0..1493 + 0: JS_BINARY_EXPRESSION@0..1488 + 0: JS_BINARY_EXPRESSION@0..1483 + 0: JS_BINARY_EXPRESSION@0..1478 + 0: JS_BINARY_EXPRESSION@0..1473 + 0: JS_BINARY_EXPRESSION@0..1468 + 0: JS_BINARY_EXPRESSION@0..1463 + 0: JS_BINARY_EXPRESSION@0..1458 + 0: JS_BINARY_EXPRESSION@0..1453 + 0: JS_BINARY_EXPRESSION@0..1448 + 0: JS_BINARY_EXPRESSION@0..1443 + 0: JS_BINARY_EXPRESSION@0..1438 + 0: JS_BINARY_EXPRESSION@0..1433 + 0: JS_BINARY_EXPRESSION@0..1428 + 0: JS_BINARY_EXPRESSION@0..1423 + 0: JS_BINARY_EXPRESSION@0..1418 + 0: JS_BINARY_EXPRESSION@0..1413 + 0: JS_BINARY_EXPRESSION@0..1408 + 0: JS_BINARY_EXPRESSION@0..1403 + 0: JS_BINARY_EXPRESSION@0..1398 + 0: JS_BINARY_EXPRESSION@0..1393 + 0: JS_BINARY_EXPRESSION@0..1388 + 0: JS_BINARY_EXPRESSION@0..1383 + 0: JS_BINARY_EXPRESSION@0..1378 + 0: JS_BINARY_EXPRESSION@0..1373 + 0: JS_BINARY_EXPRESSION@0..1368 + 0: JS_BINARY_EXPRESSION@0..1363 + 0: JS_BINARY_EXPRESSION@0..1358 + 0: JS_BINARY_EXPRESSION@0..1353 + 0: JS_BINARY_EXPRESSION@0..1348 + 0: JS_BINARY_EXPRESSION@0..1343 + 0: JS_BINARY_EXPRESSION@0..1338 + 0: JS_BINARY_EXPRESSION@0..1333 + 0: JS_BINARY_EXPRESSION@0..1328 + 0: JS_BINARY_EXPRESSION@0..1323 + 0: JS_BINARY_EXPRESSION@0..1318 + 0: JS_BINARY_EXPRESSION@0..1313 + 0: JS_BINARY_EXPRESSION@0..1308 + 0: JS_BINARY_EXPRESSION@0..1303 + 0: JS_BINARY_EXPRESSION@0..1298 + 0: JS_BINARY_EXPRESSION@0..1293 + 0: JS_BINARY_EXPRESSION@0..1288 + 0: JS_BINARY_EXPRESSION@0..1283 + 0: JS_BINARY_EXPRESSION@0..1278 + 0: JS_BINARY_EXPRESSION@0..1273 + 0: JS_BINARY_EXPRESSION@0..1268 + 0: JS_BINARY_EXPRESSION@0..1263 + 0: JS_BINARY_EXPRESSION@0..1258 + 0: JS_BINARY_EXPRESSION@0..1253 + 0: JS_BINARY_EXPRESSION@0..1248 + 0: JS_BINARY_EXPRESSION@0..1243 + 0: JS_BINARY_EXPRESSION@0..1238 + 0: JS_BINARY_EXPRESSION@0..1233 + 0: JS_BINARY_EXPRESSION@0..1228 + 0: JS_BINARY_EXPRESSION@0..1223 + 0: JS_BINARY_EXPRESSION@0..1218 + 0: JS_BINARY_EXPRESSION@0..1213 + 0: JS_BINARY_EXPRESSION@0..1208 + 0: JS_BINARY_EXPRESSION@0..1203 + 0: JS_BINARY_EXPRESSION@0..1198 + 0: JS_BINARY_EXPRESSION@0..1193 + 0: JS_BINARY_EXPRESSION@0..1188 + 0: JS_BINARY_EXPRESSION@0..1183 + 0: JS_BINARY_EXPRESSION@0..1178 + 0: JS_BINARY_EXPRESSION@0..1173 + 0: JS_BINARY_EXPRESSION@0..1168 + 0: JS_BINARY_EXPRESSION@0..1163 + 0: JS_BINARY_EXPRESSION@0..1158 + 0: JS_BINARY_EXPRESSION@0..1153 + 0: JS_BINARY_EXPRESSION@0..1148 + 0: JS_BINARY_EXPRESSION@0..1143 + 0: JS_BINARY_EXPRESSION@0..1138 + 0: JS_BINARY_EXPRESSION@0..1133 + 0: JS_BINARY_EXPRESSION@0..1128 + 0: JS_BINARY_EXPRESSION@0..1123 + 0: JS_BINARY_EXPRESSION@0..1118 + 0: JS_BINARY_EXPRESSION@0..1113 + 0: JS_BINARY_EXPRESSION@0..1108 + 0: JS_BINARY_EXPRESSION@0..1103 + 0: JS_BINARY_EXPRESSION@0..1098 + 0: JS_BINARY_EXPRESSION@0..1093 + 0: JS_BINARY_EXPRESSION@0..1088 + 0: JS_BINARY_EXPRESSION@0..1083 + 0: JS_BINARY_EXPRESSION@0..1078 + 0: JS_BINARY_EXPRESSION@0..1073 + 0: JS_BINARY_EXPRESSION@0..1068 + 0: JS_BINARY_EXPRESSION@0..1063 + 0: JS_BINARY_EXPRESSION@0..1058 + 0: JS_BINARY_EXPRESSION@0..1053 + 0: JS_BINARY_EXPRESSION@0..1048 + 0: JS_BINARY_EXPRESSION@0..1043 + 0: JS_BINARY_EXPRESSION@0..1038 + 0: JS_BINARY_EXPRESSION@0..1033 + 0: JS_BINARY_EXPRESSION@0..1028 + 0: JS_BINARY_EXPRESSION@0..1023 + 0: JS_BINARY_EXPRESSION@0..1018 + 0: JS_BINARY_EXPRESSION@0..1013 + 0: JS_BINARY_EXPRESSION@0..1008 + 0: JS_BINARY_EXPRESSION@0..1003 + 0: JS_BINARY_EXPRESSION@0..998 + 0: JS_BINARY_EXPRESSION@0..993 + 0: JS_BINARY_EXPRESSION@0..988 + 0: JS_BINARY_EXPRESSION@0..983 + 0: JS_BINARY_EXPRESSION@0..978 + 0: JS_BINARY_EXPRESSION@0..973 + 0: JS_BINARY_EXPRESSION@0..968 + 0: JS_BINARY_EXPRESSION@0..963 + 0: JS_BINARY_EXPRESSION@0..958 + 0: JS_BINARY_EXPRESSION@0..953 + 0: JS_BINARY_EXPRESSION@0..948 + 0: JS_BINARY_EXPRESSION@0..943 + 0: JS_BINARY_EXPRESSION@0..938 + 0: JS_BINARY_EXPRESSION@0..933 + 0: JS_BINARY_EXPRESSION@0..928 + 0: JS_BINARY_EXPRESSION@0..923 + 0: JS_BINARY_EXPRESSION@0..918 + 0: JS_BINARY_EXPRESSION@0..913 + 0: JS_BINARY_EXPRESSION@0..908 + 0: JS_BINARY_EXPRESSION@0..903 + 0: JS_BINARY_EXPRESSION@0..898 + 0: JS_BINARY_EXPRESSION@0..893 + 0: JS_BINARY_EXPRESSION@0..888 + 0: JS_BINARY_EXPRESSION@0..883 + 0: JS_BINARY_EXPRESSION@0..878 + 0: JS_BINARY_EXPRESSION@0..873 + 0: JS_BINARY_EXPRESSION@0..868 + 0: JS_BINARY_EXPRESSION@0..863 + 0: JS_BINARY_EXPRESSION@0..858 + 0: JS_BINARY_EXPRESSION@0..853 + 0: JS_BINARY_EXPRESSION@0..848 + 0: JS_BINARY_EXPRESSION@0..843 + 0: JS_BINARY_EXPRESSION@0..838 + 0: JS_BINARY_EXPRESSION@0..833 + 0: JS_BINARY_EXPRESSION@0..828 + 0: JS_BINARY_EXPRESSION@0..823 + 0: JS_BINARY_EXPRESSION@0..818 + 0: JS_BINARY_EXPRESSION@0..813 + 0: JS_BINARY_EXPRESSION@0..808 + 0: JS_BINARY_EXPRESSION@0..803 + 0: JS_BINARY_EXPRESSION@0..798 + 0: JS_BINARY_EXPRESSION@0..793 + 0: JS_BINARY_EXPRESSION@0..788 + 0: JS_BINARY_EXPRESSION@0..783 + 0: JS_BINARY_EXPRESSION@0..778 + 0: JS_BINARY_EXPRESSION@0..773 + 0: JS_BINARY_EXPRESSION@0..768 + 0: JS_BINARY_EXPRESSION@0..763 + 0: JS_BINARY_EXPRESSION@0..758 + 0: JS_BINARY_EXPRESSION@0..753 + 0: JS_BINARY_EXPRESSION@0..748 + 0: JS_BINARY_EXPRESSION@0..743 + 0: JS_BINARY_EXPRESSION@0..738 + 0: JS_BINARY_EXPRESSION@0..733 + 0: JS_BINARY_EXPRESSION@0..728 + 0: JS_BINARY_EXPRESSION@0..723 + 0: JS_BINARY_EXPRESSION@0..718 + 0: JS_BINARY_EXPRESSION@0..713 + 0: JS_BINARY_EXPRESSION@0..708 + 0: JS_BINARY_EXPRESSION@0..703 + 0: JS_BINARY_EXPRESSION@0..698 + 0: JS_BINARY_EXPRESSION@0..693 + 0: JS_BINARY_EXPRESSION@0..688 + 0: JS_BINARY_EXPRESSION@0..683 + 0: JS_BINARY_EXPRESSION@0..678 + 0: JS_BINARY_EXPRESSION@0..673 + 0: JS_BINARY_EXPRESSION@0..668 + 0: JS_BINARY_EXPRESSION@0..663 + 0: JS_BINARY_EXPRESSION@0..658 + 0: JS_BINARY_EXPRESSION@0..653 + 0: JS_BINARY_EXPRESSION@0..648 + 0: JS_BINARY_EXPRESSION@0..643 + 0: JS_BINARY_EXPRESSION@0..638 + 0: JS_BINARY_EXPRESSION@0..633 + 0: JS_BINARY_EXPRESSION@0..628 + 0: JS_BINARY_EXPRESSION@0..623 + 0: JS_BINARY_EXPRESSION@0..618 + 0: JS_BINARY_EXPRESSION@0..613 + 0: JS_BINARY_EXPRESSION@0..608 + 0: JS_BINARY_EXPRESSION@0..603 + 0: JS_BINARY_EXPRESSION@0..598 + 0: JS_BINARY_EXPRESSION@0..593 + 0: JS_BINARY_EXPRESSION@0..588 + 0: JS_BINARY_EXPRESSION@0..583 + 0: JS_BINARY_EXPRESSION@0..578 + 0: JS_BINARY_EXPRESSION@0..573 + 0: JS_BINARY_EXPRESSION@0..568 + 0: JS_BINARY_EXPRESSION@0..563 + 0: JS_BINARY_EXPRESSION@0..558 + 0: JS_BINARY_EXPRESSION@0..553 + 0: JS_BINARY_EXPRESSION@0..548 + 0: JS_BINARY_EXPRESSION@0..543 + 0: JS_BINARY_EXPRESSION@0..538 + 0: JS_BINARY_EXPRESSION@0..533 + 0: JS_BINARY_EXPRESSION@0..528 + 0: JS_BINARY_EXPRESSION@0..523 + 0: JS_BINARY_EXPRESSION@0..518 + 0: JS_BINARY_EXPRESSION@0..513 + 0: JS_BINARY_EXPRESSION@0..508 + 0: JS_BINARY_EXPRESSION@0..503 + 0: JS_BINARY_EXPRESSION@0..498 + 0: JS_BINARY_EXPRESSION@0..493 + 0: JS_BINARY_EXPRESSION@0..488 + 0: JS_BINARY_EXPRESSION@0..483 + 0: JS_BINARY_EXPRESSION@0..478 + 0: JS_BINARY_EXPRESSION@0..473 + 0: JS_BINARY_EXPRESSION@0..468 + 0: JS_BINARY_EXPRESSION@0..463 + 0: JS_BINARY_EXPRESSION@0..458 + 0: JS_BINARY_EXPRESSION@0..453 + 0: JS_BINARY_EXPRESSION@0..448 + 0: JS_BINARY_EXPRESSION@0..443 + 0: JS_BINARY_EXPRESSION@0..438 + 0: JS_BINARY_EXPRESSION@0..433 + 0: JS_BINARY_EXPRESSION@0..428 + 0: JS_BINARY_EXPRESSION@0..423 + 0: JS_BINARY_EXPRESSION@0..418 + 0: JS_BINARY_EXPRESSION@0..413 + 0: JS_BINARY_EXPRESSION@0..408 + 0: JS_BINARY_EXPRESSION@0..403 + 0: JS_BINARY_EXPRESSION@0..398 + 0: JS_BINARY_EXPRESSION@0..393 + 0: JS_BINARY_EXPRESSION@0..388 + 0: JS_BINARY_EXPRESSION@0..383 + 0: JS_BINARY_EXPRESSION@0..378 + 0: JS_BINARY_EXPRESSION@0..373 + 0: JS_BINARY_EXPRESSION@0..368 + 0: JS_BINARY_EXPRESSION@0..363 + 0: JS_BINARY_EXPRESSION@0..358 + 0: JS_BINARY_EXPRESSION@0..353 + 0: JS_BINARY_EXPRESSION@0..348 + 0: JS_BINARY_EXPRESSION@0..343 + 0: JS_BINARY_EXPRESSION@0..338 + 0: JS_BINARY_EXPRESSION@0..333 + 0: JS_BINARY_EXPRESSION@0..328 + 0: JS_BINARY_EXPRESSION@0..323 + 0: JS_BINARY_EXPRESSION@0..318 + 0: JS_BINARY_EXPRESSION@0..313 + 0: JS_BINARY_EXPRESSION@0..308 + 0: JS_BINARY_EXPRESSION@0..303 + 0: JS_BINARY_EXPRESSION@0..298 + 0: JS_BINARY_EXPRESSION@0..293 + 0: JS_BINARY_EXPRESSION@0..288 + 0: JS_BINARY_EXPRESSION@0..283 + 0: JS_BINARY_EXPRESSION@0..278 + 0: JS_BINARY_EXPRESSION@0..273 + 0: JS_BINARY_EXPRESSION@0..268 + 0: JS_BINARY_EXPRESSION@0..263 + 0: JS_BINARY_EXPRESSION@0..258 + 0: JS_BINARY_EXPRESSION@0..253 + 0: JS_BINARY_EXPRESSION@0..248 + 0: JS_BINARY_EXPRESSION@0..243 + 0: JS_BINARY_EXPRESSION@0..238 + 0: JS_BINARY_EXPRESSION@0..233 + 0: JS_BINARY_EXPRESSION@0..228 + 0: JS_BINARY_EXPRESSION@0..223 + 0: JS_BINARY_EXPRESSION@0..218 + 0: JS_BINARY_EXPRESSION@0..213 + 0: JS_BINARY_EXPRESSION@0..208 + 0: JS_BINARY_EXPRESSION@0..203 + 0: JS_BINARY_EXPRESSION@0..198 + 0: JS_BINARY_EXPRESSION@0..193 + 0: JS_BINARY_EXPRESSION@0..188 + 0: JS_BINARY_EXPRESSION@0..183 + 0: JS_BINARY_EXPRESSION@0..178 + 0: JS_BINARY_EXPRESSION@0..173 + 0: JS_BINARY_EXPRESSION@0..168 + 0: JS_BINARY_EXPRESSION@0..163 + 0: JS_BINARY_EXPRESSION@0..158 + 0: JS_BINARY_EXPRESSION@0..153 + 0: JS_BINARY_EXPRESSION@0..148 + 0: JS_BINARY_EXPRESSION@0..143 + 0: JS_BINARY_EXPRESSION@0..138 + 0: JS_BINARY_EXPRESSION@0..133 + 0: JS_BINARY_EXPRESSION@0..128 + 0: JS_BINARY_EXPRESSION@0..123 + 0: JS_BINARY_EXPRESSION@0..118 + 0: JS_BINARY_EXPRESSION@0..113 + 0: JS_BINARY_EXPRESSION@0..108 + 0: JS_BINARY_EXPRESSION@0..103 + 0: JS_BINARY_EXPRESSION@0..98 + 0: JS_BINARY_EXPRESSION@0..93 + 0: JS_BINARY_EXPRESSION@0..88 + 0: JS_BINARY_EXPRESSION@0..83 + 0: JS_BINARY_EXPRESSION@0..78 + 0: JS_BINARY_EXPRESSION@0..73 + 0: JS_BINARY_EXPRESSION@0..68 + 0: JS_BINARY_EXPRESSION@0..63 + 0: JS_BINARY_EXPRESSION@0..58 + 0: JS_BINARY_EXPRESSION@0..53 + 0: JS_BINARY_EXPRESSION@0..48 + 0: JS_BINARY_EXPRESSION@0..43 + 0: JS_BINARY_EXPRESSION@0..38 + 0: JS_BINARY_EXPRESSION@0..33 + 0: JS_BINARY_EXPRESSION@0..28 + 0: JS_BINARY_EXPRESSION@0..23 + 0: JS_BINARY_EXPRESSION@0..18 + 0: JS_BINARY_EXPRESSION@0..13 + 0: JS_BINARY_EXPRESSION@0..8 + 0: JS_STRING_LITERAL_EXPRESSION@0..3 + 0: JS_STRING_LITERAL@0..3 "''" [] [Whitespace(" ")] + 1: PLUS@3..4 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4..8 + 0: JS_STRING_LITERAL@4..8 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8..9 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9..13 + 0: JS_STRING_LITERAL@9..13 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@13..14 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@14..18 + 0: JS_STRING_LITERAL@14..18 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@18..19 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@19..23 + 0: JS_STRING_LITERAL@19..23 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@23..24 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@24..28 + 0: JS_STRING_LITERAL@24..28 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@28..29 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@29..33 + 0: JS_STRING_LITERAL@29..33 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@33..34 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@34..38 + 0: JS_STRING_LITERAL@34..38 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@38..39 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@39..43 + 0: JS_STRING_LITERAL@39..43 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@43..44 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@44..48 + 0: JS_STRING_LITERAL@44..48 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@48..49 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@49..53 + 0: JS_STRING_LITERAL@49..53 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@53..54 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@54..58 + 0: JS_STRING_LITERAL@54..58 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@58..59 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@59..63 + 0: JS_STRING_LITERAL@59..63 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@63..64 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@64..68 + 0: JS_STRING_LITERAL@64..68 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@68..69 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@69..73 + 0: JS_STRING_LITERAL@69..73 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@73..74 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@74..78 + 0: JS_STRING_LITERAL@74..78 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@78..79 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@79..83 + 0: JS_STRING_LITERAL@79..83 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@83..84 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@84..88 + 0: JS_STRING_LITERAL@84..88 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@88..89 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@89..93 + 0: JS_STRING_LITERAL@89..93 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@93..94 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@94..98 + 0: JS_STRING_LITERAL@94..98 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@98..99 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@99..103 + 0: JS_STRING_LITERAL@99..103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@103..104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@104..108 + 0: JS_STRING_LITERAL@104..108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@108..109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@109..113 + 0: JS_STRING_LITERAL@109..113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@113..114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@114..118 + 0: JS_STRING_LITERAL@114..118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@118..119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@119..123 + 0: JS_STRING_LITERAL@119..123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@123..124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@124..128 + 0: JS_STRING_LITERAL@124..128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@128..129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@129..133 + 0: JS_STRING_LITERAL@129..133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@133..134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@134..138 + 0: JS_STRING_LITERAL@134..138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@138..139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@139..143 + 0: JS_STRING_LITERAL@139..143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@143..144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@144..148 + 0: JS_STRING_LITERAL@144..148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@148..149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@149..153 + 0: JS_STRING_LITERAL@149..153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@153..154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@154..158 + 0: JS_STRING_LITERAL@154..158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@158..159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@159..163 + 0: JS_STRING_LITERAL@159..163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@163..164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@164..168 + 0: JS_STRING_LITERAL@164..168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@168..169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@169..173 + 0: JS_STRING_LITERAL@169..173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@173..174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@174..178 + 0: JS_STRING_LITERAL@174..178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@178..179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@179..183 + 0: JS_STRING_LITERAL@179..183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@183..184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@184..188 + 0: JS_STRING_LITERAL@184..188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@188..189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@189..193 + 0: JS_STRING_LITERAL@189..193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@193..194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@194..198 + 0: JS_STRING_LITERAL@194..198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@198..199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@199..203 + 0: JS_STRING_LITERAL@199..203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@203..204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@204..208 + 0: JS_STRING_LITERAL@204..208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@208..209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@209..213 + 0: JS_STRING_LITERAL@209..213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@213..214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@214..218 + 0: JS_STRING_LITERAL@214..218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@218..219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@219..223 + 0: JS_STRING_LITERAL@219..223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@223..224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@224..228 + 0: JS_STRING_LITERAL@224..228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@228..229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@229..233 + 0: JS_STRING_LITERAL@229..233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@233..234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@234..238 + 0: JS_STRING_LITERAL@234..238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@238..239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@239..243 + 0: JS_STRING_LITERAL@239..243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@243..244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@244..248 + 0: JS_STRING_LITERAL@244..248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@248..249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@249..253 + 0: JS_STRING_LITERAL@249..253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@253..254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@254..258 + 0: JS_STRING_LITERAL@254..258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@258..259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@259..263 + 0: JS_STRING_LITERAL@259..263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@263..264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@264..268 + 0: JS_STRING_LITERAL@264..268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@268..269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@269..273 + 0: JS_STRING_LITERAL@269..273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@273..274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@274..278 + 0: JS_STRING_LITERAL@274..278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@278..279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@279..283 + 0: JS_STRING_LITERAL@279..283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@283..284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@284..288 + 0: JS_STRING_LITERAL@284..288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@288..289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@289..293 + 0: JS_STRING_LITERAL@289..293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@293..294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@294..298 + 0: JS_STRING_LITERAL@294..298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@298..299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@299..303 + 0: JS_STRING_LITERAL@299..303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@303..304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@304..308 + 0: JS_STRING_LITERAL@304..308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@308..309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@309..313 + 0: JS_STRING_LITERAL@309..313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@313..314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@314..318 + 0: JS_STRING_LITERAL@314..318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@318..319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@319..323 + 0: JS_STRING_LITERAL@319..323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@323..324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@324..328 + 0: JS_STRING_LITERAL@324..328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@328..329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@329..333 + 0: JS_STRING_LITERAL@329..333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@333..334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@334..338 + 0: JS_STRING_LITERAL@334..338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@338..339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@339..343 + 0: JS_STRING_LITERAL@339..343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@343..344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@344..348 + 0: JS_STRING_LITERAL@344..348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@348..349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@349..353 + 0: JS_STRING_LITERAL@349..353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@353..354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@354..358 + 0: JS_STRING_LITERAL@354..358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@358..359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@359..363 + 0: JS_STRING_LITERAL@359..363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@363..364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@364..368 + 0: JS_STRING_LITERAL@364..368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@368..369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@369..373 + 0: JS_STRING_LITERAL@369..373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@373..374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@374..378 + 0: JS_STRING_LITERAL@374..378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@378..379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@379..383 + 0: JS_STRING_LITERAL@379..383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@383..384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@384..388 + 0: JS_STRING_LITERAL@384..388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@388..389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@389..393 + 0: JS_STRING_LITERAL@389..393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@393..394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@394..398 + 0: JS_STRING_LITERAL@394..398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@398..399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@399..403 + 0: JS_STRING_LITERAL@399..403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@403..404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@404..408 + 0: JS_STRING_LITERAL@404..408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@408..409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@409..413 + 0: JS_STRING_LITERAL@409..413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@413..414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@414..418 + 0: JS_STRING_LITERAL@414..418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@418..419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@419..423 + 0: JS_STRING_LITERAL@419..423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@423..424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@424..428 + 0: JS_STRING_LITERAL@424..428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@428..429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@429..433 + 0: JS_STRING_LITERAL@429..433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@433..434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@434..438 + 0: JS_STRING_LITERAL@434..438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@438..439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@439..443 + 0: JS_STRING_LITERAL@439..443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@443..444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@444..448 + 0: JS_STRING_LITERAL@444..448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@448..449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@449..453 + 0: JS_STRING_LITERAL@449..453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@453..454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@454..458 + 0: JS_STRING_LITERAL@454..458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@458..459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@459..463 + 0: JS_STRING_LITERAL@459..463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@463..464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@464..468 + 0: JS_STRING_LITERAL@464..468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@468..469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@469..473 + 0: JS_STRING_LITERAL@469..473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@473..474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@474..478 + 0: JS_STRING_LITERAL@474..478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@478..479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@479..483 + 0: JS_STRING_LITERAL@479..483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@483..484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@484..488 + 0: JS_STRING_LITERAL@484..488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@488..489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@489..493 + 0: JS_STRING_LITERAL@489..493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@493..494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@494..498 + 0: JS_STRING_LITERAL@494..498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@498..499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@499..503 + 0: JS_STRING_LITERAL@499..503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@503..504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@504..508 + 0: JS_STRING_LITERAL@504..508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@508..509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@509..513 + 0: JS_STRING_LITERAL@509..513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@513..514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@514..518 + 0: JS_STRING_LITERAL@514..518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@518..519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@519..523 + 0: JS_STRING_LITERAL@519..523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@523..524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@524..528 + 0: JS_STRING_LITERAL@524..528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@528..529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@529..533 + 0: JS_STRING_LITERAL@529..533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@533..534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@534..538 + 0: JS_STRING_LITERAL@534..538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@538..539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@539..543 + 0: JS_STRING_LITERAL@539..543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@543..544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@544..548 + 0: JS_STRING_LITERAL@544..548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@548..549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@549..553 + 0: JS_STRING_LITERAL@549..553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@553..554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@554..558 + 0: JS_STRING_LITERAL@554..558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@558..559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@559..563 + 0: JS_STRING_LITERAL@559..563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@563..564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@564..568 + 0: JS_STRING_LITERAL@564..568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@568..569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@569..573 + 0: JS_STRING_LITERAL@569..573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@573..574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@574..578 + 0: JS_STRING_LITERAL@574..578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@578..579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@579..583 + 0: JS_STRING_LITERAL@579..583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@583..584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@584..588 + 0: JS_STRING_LITERAL@584..588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@588..589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@589..593 + 0: JS_STRING_LITERAL@589..593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@593..594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@594..598 + 0: JS_STRING_LITERAL@594..598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@598..599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@599..603 + 0: JS_STRING_LITERAL@599..603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@603..604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@604..608 + 0: JS_STRING_LITERAL@604..608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@608..609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@609..613 + 0: JS_STRING_LITERAL@609..613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@613..614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@614..618 + 0: JS_STRING_LITERAL@614..618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@618..619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@619..623 + 0: JS_STRING_LITERAL@619..623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@623..624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@624..628 + 0: JS_STRING_LITERAL@624..628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@628..629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@629..633 + 0: JS_STRING_LITERAL@629..633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@633..634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@634..638 + 0: JS_STRING_LITERAL@634..638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@638..639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@639..643 + 0: JS_STRING_LITERAL@639..643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@643..644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@644..648 + 0: JS_STRING_LITERAL@644..648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@648..649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@649..653 + 0: JS_STRING_LITERAL@649..653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@653..654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@654..658 + 0: JS_STRING_LITERAL@654..658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@658..659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@659..663 + 0: JS_STRING_LITERAL@659..663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@663..664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@664..668 + 0: JS_STRING_LITERAL@664..668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@668..669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@669..673 + 0: JS_STRING_LITERAL@669..673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@673..674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@674..678 + 0: JS_STRING_LITERAL@674..678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@678..679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@679..683 + 0: JS_STRING_LITERAL@679..683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@683..684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@684..688 + 0: JS_STRING_LITERAL@684..688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@688..689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@689..693 + 0: JS_STRING_LITERAL@689..693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@693..694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@694..698 + 0: JS_STRING_LITERAL@694..698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@698..699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@699..703 + 0: JS_STRING_LITERAL@699..703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@703..704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@704..708 + 0: JS_STRING_LITERAL@704..708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@708..709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@709..713 + 0: JS_STRING_LITERAL@709..713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@713..714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@714..718 + 0: JS_STRING_LITERAL@714..718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@718..719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@719..723 + 0: JS_STRING_LITERAL@719..723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@723..724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@724..728 + 0: JS_STRING_LITERAL@724..728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@728..729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@729..733 + 0: JS_STRING_LITERAL@729..733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@733..734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@734..738 + 0: JS_STRING_LITERAL@734..738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@738..739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@739..743 + 0: JS_STRING_LITERAL@739..743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@743..744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@744..748 + 0: JS_STRING_LITERAL@744..748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@748..749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@749..753 + 0: JS_STRING_LITERAL@749..753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@753..754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@754..758 + 0: JS_STRING_LITERAL@754..758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@758..759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@759..763 + 0: JS_STRING_LITERAL@759..763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@763..764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@764..768 + 0: JS_STRING_LITERAL@764..768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@768..769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@769..773 + 0: JS_STRING_LITERAL@769..773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@773..774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@774..778 + 0: JS_STRING_LITERAL@774..778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@778..779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@779..783 + 0: JS_STRING_LITERAL@779..783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@783..784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@784..788 + 0: JS_STRING_LITERAL@784..788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@788..789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@789..793 + 0: JS_STRING_LITERAL@789..793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@793..794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@794..798 + 0: JS_STRING_LITERAL@794..798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@798..799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@799..803 + 0: JS_STRING_LITERAL@799..803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@803..804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@804..808 + 0: JS_STRING_LITERAL@804..808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@808..809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@809..813 + 0: JS_STRING_LITERAL@809..813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@813..814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@814..818 + 0: JS_STRING_LITERAL@814..818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@818..819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@819..823 + 0: JS_STRING_LITERAL@819..823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@823..824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@824..828 + 0: JS_STRING_LITERAL@824..828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@828..829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@829..833 + 0: JS_STRING_LITERAL@829..833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@833..834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@834..838 + 0: JS_STRING_LITERAL@834..838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@838..839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@839..843 + 0: JS_STRING_LITERAL@839..843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@843..844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@844..848 + 0: JS_STRING_LITERAL@844..848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@848..849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@849..853 + 0: JS_STRING_LITERAL@849..853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@853..854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@854..858 + 0: JS_STRING_LITERAL@854..858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@858..859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@859..863 + 0: JS_STRING_LITERAL@859..863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@863..864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@864..868 + 0: JS_STRING_LITERAL@864..868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@868..869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@869..873 + 0: JS_STRING_LITERAL@869..873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@873..874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@874..878 + 0: JS_STRING_LITERAL@874..878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@878..879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@879..883 + 0: JS_STRING_LITERAL@879..883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@883..884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@884..888 + 0: JS_STRING_LITERAL@884..888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@888..889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@889..893 + 0: JS_STRING_LITERAL@889..893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@893..894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@894..898 + 0: JS_STRING_LITERAL@894..898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@898..899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@899..903 + 0: JS_STRING_LITERAL@899..903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@903..904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@904..908 + 0: JS_STRING_LITERAL@904..908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@908..909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@909..913 + 0: JS_STRING_LITERAL@909..913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@913..914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@914..918 + 0: JS_STRING_LITERAL@914..918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@918..919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@919..923 + 0: JS_STRING_LITERAL@919..923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@923..924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@924..928 + 0: JS_STRING_LITERAL@924..928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@928..929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@929..933 + 0: JS_STRING_LITERAL@929..933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@933..934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@934..938 + 0: JS_STRING_LITERAL@934..938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@938..939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@939..943 + 0: JS_STRING_LITERAL@939..943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@943..944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@944..948 + 0: JS_STRING_LITERAL@944..948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@948..949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@949..953 + 0: JS_STRING_LITERAL@949..953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@953..954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@954..958 + 0: JS_STRING_LITERAL@954..958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@958..959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@959..963 + 0: JS_STRING_LITERAL@959..963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@963..964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@964..968 + 0: JS_STRING_LITERAL@964..968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@968..969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@969..973 + 0: JS_STRING_LITERAL@969..973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@973..974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@974..978 + 0: JS_STRING_LITERAL@974..978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@978..979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@979..983 + 0: JS_STRING_LITERAL@979..983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@983..984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@984..988 + 0: JS_STRING_LITERAL@984..988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@988..989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@989..993 + 0: JS_STRING_LITERAL@989..993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@993..994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@994..998 + 0: JS_STRING_LITERAL@994..998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@998..999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@999..1003 + 0: JS_STRING_LITERAL@999..1003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1003..1004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1004..1008 + 0: JS_STRING_LITERAL@1004..1008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1008..1009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1009..1013 + 0: JS_STRING_LITERAL@1009..1013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1013..1014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1014..1018 + 0: JS_STRING_LITERAL@1014..1018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1018..1019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1019..1023 + 0: JS_STRING_LITERAL@1019..1023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1023..1024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1024..1028 + 0: JS_STRING_LITERAL@1024..1028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1028..1029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1029..1033 + 0: JS_STRING_LITERAL@1029..1033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1033..1034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1034..1038 + 0: JS_STRING_LITERAL@1034..1038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1038..1039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1039..1043 + 0: JS_STRING_LITERAL@1039..1043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1043..1044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1044..1048 + 0: JS_STRING_LITERAL@1044..1048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1048..1049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1049..1053 + 0: JS_STRING_LITERAL@1049..1053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1053..1054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1054..1058 + 0: JS_STRING_LITERAL@1054..1058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1058..1059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1059..1063 + 0: JS_STRING_LITERAL@1059..1063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1063..1064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1064..1068 + 0: JS_STRING_LITERAL@1064..1068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1068..1069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1069..1073 + 0: JS_STRING_LITERAL@1069..1073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1073..1074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1074..1078 + 0: JS_STRING_LITERAL@1074..1078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1078..1079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1079..1083 + 0: JS_STRING_LITERAL@1079..1083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1083..1084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1084..1088 + 0: JS_STRING_LITERAL@1084..1088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1088..1089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1089..1093 + 0: JS_STRING_LITERAL@1089..1093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1093..1094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1094..1098 + 0: JS_STRING_LITERAL@1094..1098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1098..1099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1099..1103 + 0: JS_STRING_LITERAL@1099..1103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1103..1104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1104..1108 + 0: JS_STRING_LITERAL@1104..1108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1108..1109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1109..1113 + 0: JS_STRING_LITERAL@1109..1113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1113..1114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1114..1118 + 0: JS_STRING_LITERAL@1114..1118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1118..1119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1119..1123 + 0: JS_STRING_LITERAL@1119..1123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1123..1124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1124..1128 + 0: JS_STRING_LITERAL@1124..1128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1128..1129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1129..1133 + 0: JS_STRING_LITERAL@1129..1133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1133..1134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1134..1138 + 0: JS_STRING_LITERAL@1134..1138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1138..1139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1139..1143 + 0: JS_STRING_LITERAL@1139..1143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1143..1144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1144..1148 + 0: JS_STRING_LITERAL@1144..1148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1148..1149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1149..1153 + 0: JS_STRING_LITERAL@1149..1153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1153..1154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1154..1158 + 0: JS_STRING_LITERAL@1154..1158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1158..1159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1159..1163 + 0: JS_STRING_LITERAL@1159..1163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1163..1164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1164..1168 + 0: JS_STRING_LITERAL@1164..1168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1168..1169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1169..1173 + 0: JS_STRING_LITERAL@1169..1173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1173..1174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1174..1178 + 0: JS_STRING_LITERAL@1174..1178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1178..1179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1179..1183 + 0: JS_STRING_LITERAL@1179..1183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1183..1184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1184..1188 + 0: JS_STRING_LITERAL@1184..1188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1188..1189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1189..1193 + 0: JS_STRING_LITERAL@1189..1193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1193..1194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1194..1198 + 0: JS_STRING_LITERAL@1194..1198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1198..1199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1199..1203 + 0: JS_STRING_LITERAL@1199..1203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1203..1204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1204..1208 + 0: JS_STRING_LITERAL@1204..1208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1208..1209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1209..1213 + 0: JS_STRING_LITERAL@1209..1213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1213..1214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1214..1218 + 0: JS_STRING_LITERAL@1214..1218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1218..1219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1219..1223 + 0: JS_STRING_LITERAL@1219..1223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1223..1224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1224..1228 + 0: JS_STRING_LITERAL@1224..1228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1228..1229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1229..1233 + 0: JS_STRING_LITERAL@1229..1233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1233..1234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1234..1238 + 0: JS_STRING_LITERAL@1234..1238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1238..1239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1239..1243 + 0: JS_STRING_LITERAL@1239..1243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1243..1244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1244..1248 + 0: JS_STRING_LITERAL@1244..1248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1248..1249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1249..1253 + 0: JS_STRING_LITERAL@1249..1253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1253..1254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1254..1258 + 0: JS_STRING_LITERAL@1254..1258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1258..1259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1259..1263 + 0: JS_STRING_LITERAL@1259..1263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1263..1264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1264..1268 + 0: JS_STRING_LITERAL@1264..1268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1268..1269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1269..1273 + 0: JS_STRING_LITERAL@1269..1273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1273..1274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1274..1278 + 0: JS_STRING_LITERAL@1274..1278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1278..1279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1279..1283 + 0: JS_STRING_LITERAL@1279..1283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1283..1284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1284..1288 + 0: JS_STRING_LITERAL@1284..1288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1288..1289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1289..1293 + 0: JS_STRING_LITERAL@1289..1293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1293..1294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1294..1298 + 0: JS_STRING_LITERAL@1294..1298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1298..1299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1299..1303 + 0: JS_STRING_LITERAL@1299..1303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1303..1304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1304..1308 + 0: JS_STRING_LITERAL@1304..1308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1308..1309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1309..1313 + 0: JS_STRING_LITERAL@1309..1313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1313..1314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1314..1318 + 0: JS_STRING_LITERAL@1314..1318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1318..1319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1319..1323 + 0: JS_STRING_LITERAL@1319..1323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1323..1324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1324..1328 + 0: JS_STRING_LITERAL@1324..1328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1328..1329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1329..1333 + 0: JS_STRING_LITERAL@1329..1333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1333..1334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1334..1338 + 0: JS_STRING_LITERAL@1334..1338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1338..1339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1339..1343 + 0: JS_STRING_LITERAL@1339..1343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1343..1344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1344..1348 + 0: JS_STRING_LITERAL@1344..1348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1348..1349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1349..1353 + 0: JS_STRING_LITERAL@1349..1353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1353..1354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1354..1358 + 0: JS_STRING_LITERAL@1354..1358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1358..1359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1359..1363 + 0: JS_STRING_LITERAL@1359..1363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1363..1364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1364..1368 + 0: JS_STRING_LITERAL@1364..1368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1368..1369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1369..1373 + 0: JS_STRING_LITERAL@1369..1373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1373..1374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1374..1378 + 0: JS_STRING_LITERAL@1374..1378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1378..1379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1379..1383 + 0: JS_STRING_LITERAL@1379..1383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1383..1384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1384..1388 + 0: JS_STRING_LITERAL@1384..1388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1388..1389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1389..1393 + 0: JS_STRING_LITERAL@1389..1393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1393..1394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1394..1398 + 0: JS_STRING_LITERAL@1394..1398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1398..1399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1399..1403 + 0: JS_STRING_LITERAL@1399..1403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1403..1404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1404..1408 + 0: JS_STRING_LITERAL@1404..1408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1408..1409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1409..1413 + 0: JS_STRING_LITERAL@1409..1413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1413..1414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1414..1418 + 0: JS_STRING_LITERAL@1414..1418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1418..1419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1419..1423 + 0: JS_STRING_LITERAL@1419..1423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1423..1424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1424..1428 + 0: JS_STRING_LITERAL@1424..1428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1428..1429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1429..1433 + 0: JS_STRING_LITERAL@1429..1433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1433..1434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1434..1438 + 0: JS_STRING_LITERAL@1434..1438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1438..1439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1439..1443 + 0: JS_STRING_LITERAL@1439..1443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1443..1444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1444..1448 + 0: JS_STRING_LITERAL@1444..1448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1448..1449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1449..1453 + 0: JS_STRING_LITERAL@1449..1453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1453..1454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1454..1458 + 0: JS_STRING_LITERAL@1454..1458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1458..1459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1459..1463 + 0: JS_STRING_LITERAL@1459..1463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1463..1464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1464..1468 + 0: JS_STRING_LITERAL@1464..1468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1468..1469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1469..1473 + 0: JS_STRING_LITERAL@1469..1473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1473..1474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1474..1478 + 0: JS_STRING_LITERAL@1474..1478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1478..1479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1479..1483 + 0: JS_STRING_LITERAL@1479..1483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1483..1484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1484..1488 + 0: JS_STRING_LITERAL@1484..1488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1488..1489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1489..1493 + 0: JS_STRING_LITERAL@1489..1493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1493..1494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1494..1498 + 0: JS_STRING_LITERAL@1494..1498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1498..1499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1499..1503 + 0: JS_STRING_LITERAL@1499..1503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1503..1504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1504..1508 + 0: JS_STRING_LITERAL@1504..1508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1508..1509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1509..1513 + 0: JS_STRING_LITERAL@1509..1513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1513..1514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1514..1518 + 0: JS_STRING_LITERAL@1514..1518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1518..1519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1519..1523 + 0: JS_STRING_LITERAL@1519..1523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1523..1524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1524..1528 + 0: JS_STRING_LITERAL@1524..1528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1528..1529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1529..1533 + 0: JS_STRING_LITERAL@1529..1533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1533..1534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1534..1538 + 0: JS_STRING_LITERAL@1534..1538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1538..1539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1539..1543 + 0: JS_STRING_LITERAL@1539..1543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1543..1544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1544..1548 + 0: JS_STRING_LITERAL@1544..1548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1548..1549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1549..1553 + 0: JS_STRING_LITERAL@1549..1553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1553..1554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1554..1558 + 0: JS_STRING_LITERAL@1554..1558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1558..1559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1559..1563 + 0: JS_STRING_LITERAL@1559..1563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1563..1564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1564..1568 + 0: JS_STRING_LITERAL@1564..1568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1568..1569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1569..1573 + 0: JS_STRING_LITERAL@1569..1573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1573..1574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1574..1578 + 0: JS_STRING_LITERAL@1574..1578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1578..1579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1579..1583 + 0: JS_STRING_LITERAL@1579..1583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1583..1584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1584..1588 + 0: JS_STRING_LITERAL@1584..1588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1588..1589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1589..1593 + 0: JS_STRING_LITERAL@1589..1593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1593..1594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1594..1598 + 0: JS_STRING_LITERAL@1594..1598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1598..1599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1599..1603 + 0: JS_STRING_LITERAL@1599..1603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1603..1604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1604..1608 + 0: JS_STRING_LITERAL@1604..1608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1608..1609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1609..1613 + 0: JS_STRING_LITERAL@1609..1613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1613..1614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1614..1618 + 0: JS_STRING_LITERAL@1614..1618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1618..1619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1619..1623 + 0: JS_STRING_LITERAL@1619..1623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1623..1624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1624..1628 + 0: JS_STRING_LITERAL@1624..1628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1628..1629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1629..1633 + 0: JS_STRING_LITERAL@1629..1633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1633..1634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1634..1638 + 0: JS_STRING_LITERAL@1634..1638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1638..1639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1639..1643 + 0: JS_STRING_LITERAL@1639..1643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1643..1644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1644..1648 + 0: JS_STRING_LITERAL@1644..1648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1648..1649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1649..1653 + 0: JS_STRING_LITERAL@1649..1653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1653..1654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1654..1658 + 0: JS_STRING_LITERAL@1654..1658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1658..1659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1659..1663 + 0: JS_STRING_LITERAL@1659..1663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1663..1664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1664..1668 + 0: JS_STRING_LITERAL@1664..1668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1668..1669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1669..1673 + 0: JS_STRING_LITERAL@1669..1673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1673..1674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1674..1678 + 0: JS_STRING_LITERAL@1674..1678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1678..1679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1679..1683 + 0: JS_STRING_LITERAL@1679..1683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1683..1684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1684..1688 + 0: JS_STRING_LITERAL@1684..1688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1688..1689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1689..1693 + 0: JS_STRING_LITERAL@1689..1693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1693..1694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1694..1698 + 0: JS_STRING_LITERAL@1694..1698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1698..1699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1699..1703 + 0: JS_STRING_LITERAL@1699..1703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1703..1704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1704..1708 + 0: JS_STRING_LITERAL@1704..1708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1708..1709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1709..1713 + 0: JS_STRING_LITERAL@1709..1713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1713..1714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1714..1718 + 0: JS_STRING_LITERAL@1714..1718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1718..1719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1719..1723 + 0: JS_STRING_LITERAL@1719..1723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1723..1724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1724..1728 + 0: JS_STRING_LITERAL@1724..1728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1728..1729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1729..1733 + 0: JS_STRING_LITERAL@1729..1733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1733..1734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1734..1738 + 0: JS_STRING_LITERAL@1734..1738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1738..1739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1739..1743 + 0: JS_STRING_LITERAL@1739..1743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1743..1744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1744..1748 + 0: JS_STRING_LITERAL@1744..1748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1748..1749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1749..1753 + 0: JS_STRING_LITERAL@1749..1753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1753..1754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1754..1758 + 0: JS_STRING_LITERAL@1754..1758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1758..1759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1759..1763 + 0: JS_STRING_LITERAL@1759..1763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1763..1764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1764..1768 + 0: JS_STRING_LITERAL@1764..1768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1768..1769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1769..1773 + 0: JS_STRING_LITERAL@1769..1773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1773..1774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1774..1778 + 0: JS_STRING_LITERAL@1774..1778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1778..1779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1779..1783 + 0: JS_STRING_LITERAL@1779..1783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1783..1784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1784..1788 + 0: JS_STRING_LITERAL@1784..1788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1788..1789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1789..1793 + 0: JS_STRING_LITERAL@1789..1793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1793..1794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1794..1798 + 0: JS_STRING_LITERAL@1794..1798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1798..1799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1799..1803 + 0: JS_STRING_LITERAL@1799..1803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1803..1804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1804..1808 + 0: JS_STRING_LITERAL@1804..1808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1808..1809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1809..1813 + 0: JS_STRING_LITERAL@1809..1813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1813..1814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1814..1818 + 0: JS_STRING_LITERAL@1814..1818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1818..1819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1819..1823 + 0: JS_STRING_LITERAL@1819..1823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1823..1824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1824..1828 + 0: JS_STRING_LITERAL@1824..1828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1828..1829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1829..1833 + 0: JS_STRING_LITERAL@1829..1833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1833..1834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1834..1838 + 0: JS_STRING_LITERAL@1834..1838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1838..1839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1839..1843 + 0: JS_STRING_LITERAL@1839..1843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1843..1844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1844..1848 + 0: JS_STRING_LITERAL@1844..1848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1848..1849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1849..1853 + 0: JS_STRING_LITERAL@1849..1853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1853..1854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1854..1858 + 0: JS_STRING_LITERAL@1854..1858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1858..1859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1859..1863 + 0: JS_STRING_LITERAL@1859..1863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1863..1864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1864..1868 + 0: JS_STRING_LITERAL@1864..1868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1868..1869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1869..1873 + 0: JS_STRING_LITERAL@1869..1873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1873..1874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1874..1878 + 0: JS_STRING_LITERAL@1874..1878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1878..1879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1879..1883 + 0: JS_STRING_LITERAL@1879..1883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1883..1884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1884..1888 + 0: JS_STRING_LITERAL@1884..1888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1888..1889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1889..1893 + 0: JS_STRING_LITERAL@1889..1893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1893..1894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1894..1898 + 0: JS_STRING_LITERAL@1894..1898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1898..1899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1899..1903 + 0: JS_STRING_LITERAL@1899..1903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1903..1904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1904..1908 + 0: JS_STRING_LITERAL@1904..1908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1908..1909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1909..1913 + 0: JS_STRING_LITERAL@1909..1913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1913..1914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1914..1918 + 0: JS_STRING_LITERAL@1914..1918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1918..1919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1919..1923 + 0: JS_STRING_LITERAL@1919..1923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1923..1924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1924..1928 + 0: JS_STRING_LITERAL@1924..1928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1928..1929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1929..1933 + 0: JS_STRING_LITERAL@1929..1933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1933..1934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1934..1938 + 0: JS_STRING_LITERAL@1934..1938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1938..1939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1939..1943 + 0: JS_STRING_LITERAL@1939..1943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1943..1944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1944..1948 + 0: JS_STRING_LITERAL@1944..1948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1948..1949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1949..1953 + 0: JS_STRING_LITERAL@1949..1953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1953..1954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1954..1958 + 0: JS_STRING_LITERAL@1954..1958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1958..1959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1959..1963 + 0: JS_STRING_LITERAL@1959..1963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1963..1964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1964..1968 + 0: JS_STRING_LITERAL@1964..1968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1968..1969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1969..1973 + 0: JS_STRING_LITERAL@1969..1973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1973..1974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1974..1978 + 0: JS_STRING_LITERAL@1974..1978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1978..1979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1979..1983 + 0: JS_STRING_LITERAL@1979..1983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1983..1984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1984..1988 + 0: JS_STRING_LITERAL@1984..1988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1988..1989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1989..1993 + 0: JS_STRING_LITERAL@1989..1993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1993..1994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1994..1998 + 0: JS_STRING_LITERAL@1994..1998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@1998..1999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@1999..2003 + 0: JS_STRING_LITERAL@1999..2003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2003..2004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2004..2008 + 0: JS_STRING_LITERAL@2004..2008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2008..2009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2009..2013 + 0: JS_STRING_LITERAL@2009..2013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2013..2014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2014..2018 + 0: JS_STRING_LITERAL@2014..2018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2018..2019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2019..2023 + 0: JS_STRING_LITERAL@2019..2023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2023..2024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2024..2028 + 0: JS_STRING_LITERAL@2024..2028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2028..2029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2029..2033 + 0: JS_STRING_LITERAL@2029..2033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2033..2034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2034..2038 + 0: JS_STRING_LITERAL@2034..2038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2038..2039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2039..2043 + 0: JS_STRING_LITERAL@2039..2043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2043..2044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2044..2048 + 0: JS_STRING_LITERAL@2044..2048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2048..2049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2049..2053 + 0: JS_STRING_LITERAL@2049..2053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2053..2054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2054..2058 + 0: JS_STRING_LITERAL@2054..2058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2058..2059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2059..2063 + 0: JS_STRING_LITERAL@2059..2063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2063..2064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2064..2068 + 0: JS_STRING_LITERAL@2064..2068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2068..2069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2069..2073 + 0: JS_STRING_LITERAL@2069..2073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2073..2074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2074..2078 + 0: JS_STRING_LITERAL@2074..2078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2078..2079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2079..2083 + 0: JS_STRING_LITERAL@2079..2083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2083..2084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2084..2088 + 0: JS_STRING_LITERAL@2084..2088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2088..2089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2089..2093 + 0: JS_STRING_LITERAL@2089..2093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2093..2094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2094..2098 + 0: JS_STRING_LITERAL@2094..2098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2098..2099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2099..2103 + 0: JS_STRING_LITERAL@2099..2103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2103..2104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2104..2108 + 0: JS_STRING_LITERAL@2104..2108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2108..2109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2109..2113 + 0: JS_STRING_LITERAL@2109..2113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2113..2114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2114..2118 + 0: JS_STRING_LITERAL@2114..2118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2118..2119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2119..2123 + 0: JS_STRING_LITERAL@2119..2123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2123..2124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2124..2128 + 0: JS_STRING_LITERAL@2124..2128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2128..2129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2129..2133 + 0: JS_STRING_LITERAL@2129..2133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2133..2134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2134..2138 + 0: JS_STRING_LITERAL@2134..2138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2138..2139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2139..2143 + 0: JS_STRING_LITERAL@2139..2143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2143..2144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2144..2148 + 0: JS_STRING_LITERAL@2144..2148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2148..2149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2149..2153 + 0: JS_STRING_LITERAL@2149..2153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2153..2154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2154..2158 + 0: JS_STRING_LITERAL@2154..2158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2158..2159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2159..2163 + 0: JS_STRING_LITERAL@2159..2163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2163..2164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2164..2168 + 0: JS_STRING_LITERAL@2164..2168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2168..2169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2169..2173 + 0: JS_STRING_LITERAL@2169..2173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2173..2174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2174..2178 + 0: JS_STRING_LITERAL@2174..2178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2178..2179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2179..2183 + 0: JS_STRING_LITERAL@2179..2183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2183..2184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2184..2188 + 0: JS_STRING_LITERAL@2184..2188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2188..2189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2189..2193 + 0: JS_STRING_LITERAL@2189..2193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2193..2194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2194..2198 + 0: JS_STRING_LITERAL@2194..2198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2198..2199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2199..2203 + 0: JS_STRING_LITERAL@2199..2203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2203..2204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2204..2208 + 0: JS_STRING_LITERAL@2204..2208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2208..2209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2209..2213 + 0: JS_STRING_LITERAL@2209..2213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2213..2214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2214..2218 + 0: JS_STRING_LITERAL@2214..2218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2218..2219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2219..2223 + 0: JS_STRING_LITERAL@2219..2223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2223..2224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2224..2228 + 0: JS_STRING_LITERAL@2224..2228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2228..2229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2229..2233 + 0: JS_STRING_LITERAL@2229..2233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2233..2234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2234..2238 + 0: JS_STRING_LITERAL@2234..2238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2238..2239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2239..2243 + 0: JS_STRING_LITERAL@2239..2243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2243..2244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2244..2248 + 0: JS_STRING_LITERAL@2244..2248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2248..2249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2249..2253 + 0: JS_STRING_LITERAL@2249..2253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2253..2254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2254..2258 + 0: JS_STRING_LITERAL@2254..2258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2258..2259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2259..2263 + 0: JS_STRING_LITERAL@2259..2263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2263..2264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2264..2268 + 0: JS_STRING_LITERAL@2264..2268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2268..2269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2269..2273 + 0: JS_STRING_LITERAL@2269..2273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2273..2274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2274..2278 + 0: JS_STRING_LITERAL@2274..2278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2278..2279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2279..2283 + 0: JS_STRING_LITERAL@2279..2283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2283..2284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2284..2288 + 0: JS_STRING_LITERAL@2284..2288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2288..2289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2289..2293 + 0: JS_STRING_LITERAL@2289..2293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2293..2294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2294..2298 + 0: JS_STRING_LITERAL@2294..2298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2298..2299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2299..2303 + 0: JS_STRING_LITERAL@2299..2303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2303..2304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2304..2308 + 0: JS_STRING_LITERAL@2304..2308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2308..2309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2309..2313 + 0: JS_STRING_LITERAL@2309..2313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2313..2314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2314..2318 + 0: JS_STRING_LITERAL@2314..2318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2318..2319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2319..2323 + 0: JS_STRING_LITERAL@2319..2323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2323..2324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2324..2328 + 0: JS_STRING_LITERAL@2324..2328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2328..2329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2329..2333 + 0: JS_STRING_LITERAL@2329..2333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2333..2334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2334..2338 + 0: JS_STRING_LITERAL@2334..2338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2338..2339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2339..2343 + 0: JS_STRING_LITERAL@2339..2343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2343..2344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2344..2348 + 0: JS_STRING_LITERAL@2344..2348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2348..2349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2349..2353 + 0: JS_STRING_LITERAL@2349..2353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2353..2354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2354..2358 + 0: JS_STRING_LITERAL@2354..2358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2358..2359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2359..2363 + 0: JS_STRING_LITERAL@2359..2363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2363..2364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2364..2368 + 0: JS_STRING_LITERAL@2364..2368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2368..2369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2369..2373 + 0: JS_STRING_LITERAL@2369..2373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2373..2374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2374..2378 + 0: JS_STRING_LITERAL@2374..2378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2378..2379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2379..2383 + 0: JS_STRING_LITERAL@2379..2383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2383..2384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2384..2388 + 0: JS_STRING_LITERAL@2384..2388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2388..2389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2389..2393 + 0: JS_STRING_LITERAL@2389..2393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2393..2394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2394..2398 + 0: JS_STRING_LITERAL@2394..2398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2398..2399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2399..2403 + 0: JS_STRING_LITERAL@2399..2403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2403..2404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2404..2408 + 0: JS_STRING_LITERAL@2404..2408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2408..2409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2409..2413 + 0: JS_STRING_LITERAL@2409..2413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2413..2414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2414..2418 + 0: JS_STRING_LITERAL@2414..2418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2418..2419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2419..2423 + 0: JS_STRING_LITERAL@2419..2423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2423..2424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2424..2428 + 0: JS_STRING_LITERAL@2424..2428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2428..2429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2429..2433 + 0: JS_STRING_LITERAL@2429..2433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2433..2434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2434..2438 + 0: JS_STRING_LITERAL@2434..2438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2438..2439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2439..2443 + 0: JS_STRING_LITERAL@2439..2443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2443..2444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2444..2448 + 0: JS_STRING_LITERAL@2444..2448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2448..2449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2449..2453 + 0: JS_STRING_LITERAL@2449..2453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2453..2454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2454..2458 + 0: JS_STRING_LITERAL@2454..2458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2458..2459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2459..2463 + 0: JS_STRING_LITERAL@2459..2463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2463..2464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2464..2468 + 0: JS_STRING_LITERAL@2464..2468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2468..2469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2469..2473 + 0: JS_STRING_LITERAL@2469..2473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2473..2474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2474..2478 + 0: JS_STRING_LITERAL@2474..2478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2478..2479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2479..2483 + 0: JS_STRING_LITERAL@2479..2483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2483..2484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2484..2488 + 0: JS_STRING_LITERAL@2484..2488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2488..2489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2489..2493 + 0: JS_STRING_LITERAL@2489..2493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2493..2494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2494..2498 + 0: JS_STRING_LITERAL@2494..2498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2498..2499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2499..2503 + 0: JS_STRING_LITERAL@2499..2503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2503..2504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2504..2508 + 0: JS_STRING_LITERAL@2504..2508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2508..2509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2509..2513 + 0: JS_STRING_LITERAL@2509..2513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2513..2514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2514..2518 + 0: JS_STRING_LITERAL@2514..2518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2518..2519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2519..2523 + 0: JS_STRING_LITERAL@2519..2523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2523..2524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2524..2528 + 0: JS_STRING_LITERAL@2524..2528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2528..2529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2529..2533 + 0: JS_STRING_LITERAL@2529..2533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2533..2534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2534..2538 + 0: JS_STRING_LITERAL@2534..2538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2538..2539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2539..2543 + 0: JS_STRING_LITERAL@2539..2543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2543..2544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2544..2548 + 0: JS_STRING_LITERAL@2544..2548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2548..2549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2549..2553 + 0: JS_STRING_LITERAL@2549..2553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2553..2554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2554..2558 + 0: JS_STRING_LITERAL@2554..2558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2558..2559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2559..2563 + 0: JS_STRING_LITERAL@2559..2563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2563..2564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2564..2568 + 0: JS_STRING_LITERAL@2564..2568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2568..2569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2569..2573 + 0: JS_STRING_LITERAL@2569..2573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2573..2574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2574..2578 + 0: JS_STRING_LITERAL@2574..2578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2578..2579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2579..2583 + 0: JS_STRING_LITERAL@2579..2583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2583..2584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2584..2588 + 0: JS_STRING_LITERAL@2584..2588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2588..2589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2589..2593 + 0: JS_STRING_LITERAL@2589..2593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2593..2594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2594..2598 + 0: JS_STRING_LITERAL@2594..2598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2598..2599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2599..2603 + 0: JS_STRING_LITERAL@2599..2603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2603..2604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2604..2608 + 0: JS_STRING_LITERAL@2604..2608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2608..2609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2609..2613 + 0: JS_STRING_LITERAL@2609..2613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2613..2614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2614..2618 + 0: JS_STRING_LITERAL@2614..2618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2618..2619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2619..2623 + 0: JS_STRING_LITERAL@2619..2623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2623..2624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2624..2628 + 0: JS_STRING_LITERAL@2624..2628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2628..2629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2629..2633 + 0: JS_STRING_LITERAL@2629..2633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2633..2634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2634..2638 + 0: JS_STRING_LITERAL@2634..2638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2638..2639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2639..2643 + 0: JS_STRING_LITERAL@2639..2643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2643..2644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2644..2648 + 0: JS_STRING_LITERAL@2644..2648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2648..2649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2649..2653 + 0: JS_STRING_LITERAL@2649..2653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2653..2654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2654..2658 + 0: JS_STRING_LITERAL@2654..2658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2658..2659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2659..2663 + 0: JS_STRING_LITERAL@2659..2663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2663..2664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2664..2668 + 0: JS_STRING_LITERAL@2664..2668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2668..2669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2669..2673 + 0: JS_STRING_LITERAL@2669..2673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2673..2674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2674..2678 + 0: JS_STRING_LITERAL@2674..2678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2678..2679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2679..2683 + 0: JS_STRING_LITERAL@2679..2683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2683..2684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2684..2688 + 0: JS_STRING_LITERAL@2684..2688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2688..2689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2689..2693 + 0: JS_STRING_LITERAL@2689..2693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2693..2694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2694..2698 + 0: JS_STRING_LITERAL@2694..2698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2698..2699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2699..2703 + 0: JS_STRING_LITERAL@2699..2703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2703..2704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2704..2708 + 0: JS_STRING_LITERAL@2704..2708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2708..2709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2709..2713 + 0: JS_STRING_LITERAL@2709..2713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2713..2714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2714..2718 + 0: JS_STRING_LITERAL@2714..2718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2718..2719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2719..2723 + 0: JS_STRING_LITERAL@2719..2723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2723..2724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2724..2728 + 0: JS_STRING_LITERAL@2724..2728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2728..2729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2729..2733 + 0: JS_STRING_LITERAL@2729..2733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2733..2734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2734..2738 + 0: JS_STRING_LITERAL@2734..2738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2738..2739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2739..2743 + 0: JS_STRING_LITERAL@2739..2743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2743..2744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2744..2748 + 0: JS_STRING_LITERAL@2744..2748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2748..2749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2749..2753 + 0: JS_STRING_LITERAL@2749..2753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2753..2754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2754..2758 + 0: JS_STRING_LITERAL@2754..2758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2758..2759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2759..2763 + 0: JS_STRING_LITERAL@2759..2763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2763..2764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2764..2768 + 0: JS_STRING_LITERAL@2764..2768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2768..2769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2769..2773 + 0: JS_STRING_LITERAL@2769..2773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2773..2774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2774..2778 + 0: JS_STRING_LITERAL@2774..2778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2778..2779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2779..2783 + 0: JS_STRING_LITERAL@2779..2783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2783..2784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2784..2788 + 0: JS_STRING_LITERAL@2784..2788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2788..2789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2789..2793 + 0: JS_STRING_LITERAL@2789..2793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2793..2794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2794..2798 + 0: JS_STRING_LITERAL@2794..2798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2798..2799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2799..2803 + 0: JS_STRING_LITERAL@2799..2803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2803..2804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2804..2808 + 0: JS_STRING_LITERAL@2804..2808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2808..2809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2809..2813 + 0: JS_STRING_LITERAL@2809..2813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2813..2814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2814..2818 + 0: JS_STRING_LITERAL@2814..2818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2818..2819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2819..2823 + 0: JS_STRING_LITERAL@2819..2823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2823..2824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2824..2828 + 0: JS_STRING_LITERAL@2824..2828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2828..2829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2829..2833 + 0: JS_STRING_LITERAL@2829..2833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2833..2834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2834..2838 + 0: JS_STRING_LITERAL@2834..2838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2838..2839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2839..2843 + 0: JS_STRING_LITERAL@2839..2843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2843..2844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2844..2848 + 0: JS_STRING_LITERAL@2844..2848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2848..2849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2849..2853 + 0: JS_STRING_LITERAL@2849..2853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2853..2854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2854..2858 + 0: JS_STRING_LITERAL@2854..2858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2858..2859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2859..2863 + 0: JS_STRING_LITERAL@2859..2863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2863..2864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2864..2868 + 0: JS_STRING_LITERAL@2864..2868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2868..2869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2869..2873 + 0: JS_STRING_LITERAL@2869..2873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2873..2874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2874..2878 + 0: JS_STRING_LITERAL@2874..2878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2878..2879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2879..2883 + 0: JS_STRING_LITERAL@2879..2883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2883..2884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2884..2888 + 0: JS_STRING_LITERAL@2884..2888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2888..2889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2889..2893 + 0: JS_STRING_LITERAL@2889..2893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2893..2894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2894..2898 + 0: JS_STRING_LITERAL@2894..2898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2898..2899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2899..2903 + 0: JS_STRING_LITERAL@2899..2903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2903..2904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2904..2908 + 0: JS_STRING_LITERAL@2904..2908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2908..2909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2909..2913 + 0: JS_STRING_LITERAL@2909..2913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2913..2914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2914..2918 + 0: JS_STRING_LITERAL@2914..2918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2918..2919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2919..2923 + 0: JS_STRING_LITERAL@2919..2923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2923..2924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2924..2928 + 0: JS_STRING_LITERAL@2924..2928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2928..2929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2929..2933 + 0: JS_STRING_LITERAL@2929..2933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2933..2934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2934..2938 + 0: JS_STRING_LITERAL@2934..2938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2938..2939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2939..2943 + 0: JS_STRING_LITERAL@2939..2943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2943..2944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2944..2948 + 0: JS_STRING_LITERAL@2944..2948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2948..2949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2949..2953 + 0: JS_STRING_LITERAL@2949..2953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2953..2954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2954..2958 + 0: JS_STRING_LITERAL@2954..2958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2958..2959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2959..2963 + 0: JS_STRING_LITERAL@2959..2963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2963..2964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2964..2968 + 0: JS_STRING_LITERAL@2964..2968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2968..2969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2969..2973 + 0: JS_STRING_LITERAL@2969..2973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2973..2974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2974..2978 + 0: JS_STRING_LITERAL@2974..2978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2978..2979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2979..2983 + 0: JS_STRING_LITERAL@2979..2983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2983..2984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2984..2988 + 0: JS_STRING_LITERAL@2984..2988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2988..2989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2989..2993 + 0: JS_STRING_LITERAL@2989..2993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2993..2994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2994..2998 + 0: JS_STRING_LITERAL@2994..2998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@2998..2999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@2999..3003 + 0: JS_STRING_LITERAL@2999..3003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3003..3004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3004..3008 + 0: JS_STRING_LITERAL@3004..3008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3008..3009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3009..3013 + 0: JS_STRING_LITERAL@3009..3013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3013..3014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3014..3018 + 0: JS_STRING_LITERAL@3014..3018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3018..3019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3019..3023 + 0: JS_STRING_LITERAL@3019..3023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3023..3024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3024..3028 + 0: JS_STRING_LITERAL@3024..3028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3028..3029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3029..3033 + 0: JS_STRING_LITERAL@3029..3033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3033..3034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3034..3038 + 0: JS_STRING_LITERAL@3034..3038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3038..3039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3039..3043 + 0: JS_STRING_LITERAL@3039..3043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3043..3044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3044..3048 + 0: JS_STRING_LITERAL@3044..3048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3048..3049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3049..3053 + 0: JS_STRING_LITERAL@3049..3053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3053..3054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3054..3058 + 0: JS_STRING_LITERAL@3054..3058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3058..3059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3059..3063 + 0: JS_STRING_LITERAL@3059..3063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3063..3064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3064..3068 + 0: JS_STRING_LITERAL@3064..3068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3068..3069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3069..3073 + 0: JS_STRING_LITERAL@3069..3073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3073..3074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3074..3078 + 0: JS_STRING_LITERAL@3074..3078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3078..3079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3079..3083 + 0: JS_STRING_LITERAL@3079..3083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3083..3084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3084..3088 + 0: JS_STRING_LITERAL@3084..3088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3088..3089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3089..3093 + 0: JS_STRING_LITERAL@3089..3093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3093..3094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3094..3098 + 0: JS_STRING_LITERAL@3094..3098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3098..3099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3099..3103 + 0: JS_STRING_LITERAL@3099..3103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3103..3104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3104..3108 + 0: JS_STRING_LITERAL@3104..3108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3108..3109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3109..3113 + 0: JS_STRING_LITERAL@3109..3113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3113..3114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3114..3118 + 0: JS_STRING_LITERAL@3114..3118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3118..3119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3119..3123 + 0: JS_STRING_LITERAL@3119..3123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3123..3124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3124..3128 + 0: JS_STRING_LITERAL@3124..3128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3128..3129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3129..3133 + 0: JS_STRING_LITERAL@3129..3133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3133..3134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3134..3138 + 0: JS_STRING_LITERAL@3134..3138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3138..3139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3139..3143 + 0: JS_STRING_LITERAL@3139..3143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3143..3144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3144..3148 + 0: JS_STRING_LITERAL@3144..3148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3148..3149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3149..3153 + 0: JS_STRING_LITERAL@3149..3153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3153..3154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3154..3158 + 0: JS_STRING_LITERAL@3154..3158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3158..3159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3159..3163 + 0: JS_STRING_LITERAL@3159..3163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3163..3164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3164..3168 + 0: JS_STRING_LITERAL@3164..3168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3168..3169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3169..3173 + 0: JS_STRING_LITERAL@3169..3173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3173..3174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3174..3178 + 0: JS_STRING_LITERAL@3174..3178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3178..3179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3179..3183 + 0: JS_STRING_LITERAL@3179..3183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3183..3184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3184..3188 + 0: JS_STRING_LITERAL@3184..3188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3188..3189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3189..3193 + 0: JS_STRING_LITERAL@3189..3193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3193..3194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3194..3198 + 0: JS_STRING_LITERAL@3194..3198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3198..3199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3199..3203 + 0: JS_STRING_LITERAL@3199..3203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3203..3204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3204..3208 + 0: JS_STRING_LITERAL@3204..3208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3208..3209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3209..3213 + 0: JS_STRING_LITERAL@3209..3213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3213..3214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3214..3218 + 0: JS_STRING_LITERAL@3214..3218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3218..3219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3219..3223 + 0: JS_STRING_LITERAL@3219..3223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3223..3224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3224..3228 + 0: JS_STRING_LITERAL@3224..3228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3228..3229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3229..3233 + 0: JS_STRING_LITERAL@3229..3233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3233..3234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3234..3238 + 0: JS_STRING_LITERAL@3234..3238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3238..3239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3239..3243 + 0: JS_STRING_LITERAL@3239..3243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3243..3244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3244..3248 + 0: JS_STRING_LITERAL@3244..3248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3248..3249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3249..3253 + 0: JS_STRING_LITERAL@3249..3253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3253..3254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3254..3258 + 0: JS_STRING_LITERAL@3254..3258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3258..3259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3259..3263 + 0: JS_STRING_LITERAL@3259..3263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3263..3264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3264..3268 + 0: JS_STRING_LITERAL@3264..3268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3268..3269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3269..3273 + 0: JS_STRING_LITERAL@3269..3273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3273..3274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3274..3278 + 0: JS_STRING_LITERAL@3274..3278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3278..3279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3279..3283 + 0: JS_STRING_LITERAL@3279..3283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3283..3284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3284..3288 + 0: JS_STRING_LITERAL@3284..3288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3288..3289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3289..3293 + 0: JS_STRING_LITERAL@3289..3293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3293..3294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3294..3298 + 0: JS_STRING_LITERAL@3294..3298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3298..3299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3299..3303 + 0: JS_STRING_LITERAL@3299..3303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3303..3304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3304..3308 + 0: JS_STRING_LITERAL@3304..3308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3308..3309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3309..3313 + 0: JS_STRING_LITERAL@3309..3313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3313..3314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3314..3318 + 0: JS_STRING_LITERAL@3314..3318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3318..3319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3319..3323 + 0: JS_STRING_LITERAL@3319..3323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3323..3324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3324..3328 + 0: JS_STRING_LITERAL@3324..3328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3328..3329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3329..3333 + 0: JS_STRING_LITERAL@3329..3333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3333..3334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3334..3338 + 0: JS_STRING_LITERAL@3334..3338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3338..3339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3339..3343 + 0: JS_STRING_LITERAL@3339..3343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3343..3344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3344..3348 + 0: JS_STRING_LITERAL@3344..3348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3348..3349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3349..3353 + 0: JS_STRING_LITERAL@3349..3353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3353..3354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3354..3358 + 0: JS_STRING_LITERAL@3354..3358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3358..3359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3359..3363 + 0: JS_STRING_LITERAL@3359..3363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3363..3364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3364..3368 + 0: JS_STRING_LITERAL@3364..3368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3368..3369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3369..3373 + 0: JS_STRING_LITERAL@3369..3373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3373..3374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3374..3378 + 0: JS_STRING_LITERAL@3374..3378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3378..3379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3379..3383 + 0: JS_STRING_LITERAL@3379..3383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3383..3384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3384..3388 + 0: JS_STRING_LITERAL@3384..3388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3388..3389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3389..3393 + 0: JS_STRING_LITERAL@3389..3393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3393..3394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3394..3398 + 0: JS_STRING_LITERAL@3394..3398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3398..3399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3399..3403 + 0: JS_STRING_LITERAL@3399..3403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3403..3404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3404..3408 + 0: JS_STRING_LITERAL@3404..3408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3408..3409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3409..3413 + 0: JS_STRING_LITERAL@3409..3413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3413..3414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3414..3418 + 0: JS_STRING_LITERAL@3414..3418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3418..3419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3419..3423 + 0: JS_STRING_LITERAL@3419..3423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3423..3424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3424..3428 + 0: JS_STRING_LITERAL@3424..3428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3428..3429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3429..3433 + 0: JS_STRING_LITERAL@3429..3433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3433..3434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3434..3438 + 0: JS_STRING_LITERAL@3434..3438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3438..3439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3439..3443 + 0: JS_STRING_LITERAL@3439..3443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3443..3444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3444..3448 + 0: JS_STRING_LITERAL@3444..3448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3448..3449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3449..3453 + 0: JS_STRING_LITERAL@3449..3453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3453..3454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3454..3458 + 0: JS_STRING_LITERAL@3454..3458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3458..3459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3459..3463 + 0: JS_STRING_LITERAL@3459..3463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3463..3464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3464..3468 + 0: JS_STRING_LITERAL@3464..3468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3468..3469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3469..3473 + 0: JS_STRING_LITERAL@3469..3473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3473..3474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3474..3478 + 0: JS_STRING_LITERAL@3474..3478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3478..3479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3479..3483 + 0: JS_STRING_LITERAL@3479..3483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3483..3484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3484..3488 + 0: JS_STRING_LITERAL@3484..3488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3488..3489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3489..3493 + 0: JS_STRING_LITERAL@3489..3493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3493..3494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3494..3498 + 0: JS_STRING_LITERAL@3494..3498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3498..3499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3499..3503 + 0: JS_STRING_LITERAL@3499..3503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3503..3504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3504..3508 + 0: JS_STRING_LITERAL@3504..3508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3508..3509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3509..3513 + 0: JS_STRING_LITERAL@3509..3513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3513..3514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3514..3518 + 0: JS_STRING_LITERAL@3514..3518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3518..3519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3519..3523 + 0: JS_STRING_LITERAL@3519..3523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3523..3524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3524..3528 + 0: JS_STRING_LITERAL@3524..3528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3528..3529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3529..3533 + 0: JS_STRING_LITERAL@3529..3533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3533..3534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3534..3538 + 0: JS_STRING_LITERAL@3534..3538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3538..3539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3539..3543 + 0: JS_STRING_LITERAL@3539..3543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3543..3544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3544..3548 + 0: JS_STRING_LITERAL@3544..3548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3548..3549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3549..3553 + 0: JS_STRING_LITERAL@3549..3553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3553..3554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3554..3558 + 0: JS_STRING_LITERAL@3554..3558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3558..3559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3559..3563 + 0: JS_STRING_LITERAL@3559..3563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3563..3564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3564..3568 + 0: JS_STRING_LITERAL@3564..3568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3568..3569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3569..3573 + 0: JS_STRING_LITERAL@3569..3573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3573..3574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3574..3578 + 0: JS_STRING_LITERAL@3574..3578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3578..3579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3579..3583 + 0: JS_STRING_LITERAL@3579..3583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3583..3584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3584..3588 + 0: JS_STRING_LITERAL@3584..3588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3588..3589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3589..3593 + 0: JS_STRING_LITERAL@3589..3593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3593..3594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3594..3598 + 0: JS_STRING_LITERAL@3594..3598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3598..3599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3599..3603 + 0: JS_STRING_LITERAL@3599..3603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3603..3604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3604..3608 + 0: JS_STRING_LITERAL@3604..3608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3608..3609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3609..3613 + 0: JS_STRING_LITERAL@3609..3613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3613..3614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3614..3618 + 0: JS_STRING_LITERAL@3614..3618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3618..3619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3619..3623 + 0: JS_STRING_LITERAL@3619..3623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3623..3624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3624..3628 + 0: JS_STRING_LITERAL@3624..3628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3628..3629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3629..3633 + 0: JS_STRING_LITERAL@3629..3633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3633..3634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3634..3638 + 0: JS_STRING_LITERAL@3634..3638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3638..3639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3639..3643 + 0: JS_STRING_LITERAL@3639..3643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3643..3644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3644..3648 + 0: JS_STRING_LITERAL@3644..3648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3648..3649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3649..3653 + 0: JS_STRING_LITERAL@3649..3653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3653..3654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3654..3658 + 0: JS_STRING_LITERAL@3654..3658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3658..3659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3659..3663 + 0: JS_STRING_LITERAL@3659..3663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3663..3664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3664..3668 + 0: JS_STRING_LITERAL@3664..3668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3668..3669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3669..3673 + 0: JS_STRING_LITERAL@3669..3673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3673..3674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3674..3678 + 0: JS_STRING_LITERAL@3674..3678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3678..3679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3679..3683 + 0: JS_STRING_LITERAL@3679..3683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3683..3684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3684..3688 + 0: JS_STRING_LITERAL@3684..3688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3688..3689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3689..3693 + 0: JS_STRING_LITERAL@3689..3693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3693..3694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3694..3698 + 0: JS_STRING_LITERAL@3694..3698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3698..3699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3699..3703 + 0: JS_STRING_LITERAL@3699..3703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3703..3704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3704..3708 + 0: JS_STRING_LITERAL@3704..3708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3708..3709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3709..3713 + 0: JS_STRING_LITERAL@3709..3713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3713..3714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3714..3718 + 0: JS_STRING_LITERAL@3714..3718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3718..3719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3719..3723 + 0: JS_STRING_LITERAL@3719..3723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3723..3724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3724..3728 + 0: JS_STRING_LITERAL@3724..3728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3728..3729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3729..3733 + 0: JS_STRING_LITERAL@3729..3733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3733..3734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3734..3738 + 0: JS_STRING_LITERAL@3734..3738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3738..3739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3739..3743 + 0: JS_STRING_LITERAL@3739..3743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3743..3744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3744..3748 + 0: JS_STRING_LITERAL@3744..3748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3748..3749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3749..3753 + 0: JS_STRING_LITERAL@3749..3753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3753..3754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3754..3758 + 0: JS_STRING_LITERAL@3754..3758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3758..3759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3759..3763 + 0: JS_STRING_LITERAL@3759..3763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3763..3764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3764..3768 + 0: JS_STRING_LITERAL@3764..3768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3768..3769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3769..3773 + 0: JS_STRING_LITERAL@3769..3773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3773..3774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3774..3778 + 0: JS_STRING_LITERAL@3774..3778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3778..3779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3779..3783 + 0: JS_STRING_LITERAL@3779..3783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3783..3784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3784..3788 + 0: JS_STRING_LITERAL@3784..3788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3788..3789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3789..3793 + 0: JS_STRING_LITERAL@3789..3793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3793..3794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3794..3798 + 0: JS_STRING_LITERAL@3794..3798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3798..3799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3799..3803 + 0: JS_STRING_LITERAL@3799..3803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3803..3804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3804..3808 + 0: JS_STRING_LITERAL@3804..3808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3808..3809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3809..3813 + 0: JS_STRING_LITERAL@3809..3813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3813..3814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3814..3818 + 0: JS_STRING_LITERAL@3814..3818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3818..3819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3819..3823 + 0: JS_STRING_LITERAL@3819..3823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3823..3824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3824..3828 + 0: JS_STRING_LITERAL@3824..3828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3828..3829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3829..3833 + 0: JS_STRING_LITERAL@3829..3833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3833..3834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3834..3838 + 0: JS_STRING_LITERAL@3834..3838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3838..3839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3839..3843 + 0: JS_STRING_LITERAL@3839..3843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3843..3844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3844..3848 + 0: JS_STRING_LITERAL@3844..3848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3848..3849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3849..3853 + 0: JS_STRING_LITERAL@3849..3853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3853..3854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3854..3858 + 0: JS_STRING_LITERAL@3854..3858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3858..3859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3859..3863 + 0: JS_STRING_LITERAL@3859..3863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3863..3864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3864..3868 + 0: JS_STRING_LITERAL@3864..3868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3868..3869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3869..3873 + 0: JS_STRING_LITERAL@3869..3873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3873..3874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3874..3878 + 0: JS_STRING_LITERAL@3874..3878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3878..3879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3879..3883 + 0: JS_STRING_LITERAL@3879..3883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3883..3884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3884..3888 + 0: JS_STRING_LITERAL@3884..3888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3888..3889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3889..3893 + 0: JS_STRING_LITERAL@3889..3893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3893..3894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3894..3898 + 0: JS_STRING_LITERAL@3894..3898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3898..3899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3899..3903 + 0: JS_STRING_LITERAL@3899..3903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3903..3904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3904..3908 + 0: JS_STRING_LITERAL@3904..3908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3908..3909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3909..3913 + 0: JS_STRING_LITERAL@3909..3913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3913..3914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3914..3918 + 0: JS_STRING_LITERAL@3914..3918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3918..3919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3919..3923 + 0: JS_STRING_LITERAL@3919..3923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3923..3924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3924..3928 + 0: JS_STRING_LITERAL@3924..3928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3928..3929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3929..3933 + 0: JS_STRING_LITERAL@3929..3933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3933..3934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3934..3938 + 0: JS_STRING_LITERAL@3934..3938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3938..3939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3939..3943 + 0: JS_STRING_LITERAL@3939..3943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3943..3944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3944..3948 + 0: JS_STRING_LITERAL@3944..3948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3948..3949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3949..3953 + 0: JS_STRING_LITERAL@3949..3953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3953..3954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3954..3958 + 0: JS_STRING_LITERAL@3954..3958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3958..3959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3959..3963 + 0: JS_STRING_LITERAL@3959..3963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3963..3964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3964..3968 + 0: JS_STRING_LITERAL@3964..3968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3968..3969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3969..3973 + 0: JS_STRING_LITERAL@3969..3973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3973..3974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3974..3978 + 0: JS_STRING_LITERAL@3974..3978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3978..3979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3979..3983 + 0: JS_STRING_LITERAL@3979..3983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3983..3984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3984..3988 + 0: JS_STRING_LITERAL@3984..3988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3988..3989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3989..3993 + 0: JS_STRING_LITERAL@3989..3993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3993..3994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3994..3998 + 0: JS_STRING_LITERAL@3994..3998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@3998..3999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@3999..4003 + 0: JS_STRING_LITERAL@3999..4003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4003..4004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4004..4008 + 0: JS_STRING_LITERAL@4004..4008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4008..4009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4009..4013 + 0: JS_STRING_LITERAL@4009..4013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4013..4014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4014..4018 + 0: JS_STRING_LITERAL@4014..4018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4018..4019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4019..4023 + 0: JS_STRING_LITERAL@4019..4023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4023..4024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4024..4028 + 0: JS_STRING_LITERAL@4024..4028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4028..4029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4029..4033 + 0: JS_STRING_LITERAL@4029..4033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4033..4034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4034..4038 + 0: JS_STRING_LITERAL@4034..4038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4038..4039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4039..4043 + 0: JS_STRING_LITERAL@4039..4043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4043..4044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4044..4048 + 0: JS_STRING_LITERAL@4044..4048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4048..4049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4049..4053 + 0: JS_STRING_LITERAL@4049..4053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4053..4054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4054..4058 + 0: JS_STRING_LITERAL@4054..4058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4058..4059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4059..4063 + 0: JS_STRING_LITERAL@4059..4063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4063..4064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4064..4068 + 0: JS_STRING_LITERAL@4064..4068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4068..4069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4069..4073 + 0: JS_STRING_LITERAL@4069..4073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4073..4074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4074..4078 + 0: JS_STRING_LITERAL@4074..4078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4078..4079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4079..4083 + 0: JS_STRING_LITERAL@4079..4083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4083..4084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4084..4088 + 0: JS_STRING_LITERAL@4084..4088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4088..4089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4089..4093 + 0: JS_STRING_LITERAL@4089..4093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4093..4094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4094..4098 + 0: JS_STRING_LITERAL@4094..4098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4098..4099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4099..4103 + 0: JS_STRING_LITERAL@4099..4103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4103..4104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4104..4108 + 0: JS_STRING_LITERAL@4104..4108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4108..4109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4109..4113 + 0: JS_STRING_LITERAL@4109..4113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4113..4114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4114..4118 + 0: JS_STRING_LITERAL@4114..4118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4118..4119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4119..4123 + 0: JS_STRING_LITERAL@4119..4123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4123..4124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4124..4128 + 0: JS_STRING_LITERAL@4124..4128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4128..4129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4129..4133 + 0: JS_STRING_LITERAL@4129..4133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4133..4134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4134..4138 + 0: JS_STRING_LITERAL@4134..4138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4138..4139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4139..4143 + 0: JS_STRING_LITERAL@4139..4143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4143..4144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4144..4148 + 0: JS_STRING_LITERAL@4144..4148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4148..4149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4149..4153 + 0: JS_STRING_LITERAL@4149..4153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4153..4154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4154..4158 + 0: JS_STRING_LITERAL@4154..4158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4158..4159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4159..4163 + 0: JS_STRING_LITERAL@4159..4163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4163..4164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4164..4168 + 0: JS_STRING_LITERAL@4164..4168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4168..4169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4169..4173 + 0: JS_STRING_LITERAL@4169..4173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4173..4174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4174..4178 + 0: JS_STRING_LITERAL@4174..4178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4178..4179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4179..4183 + 0: JS_STRING_LITERAL@4179..4183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4183..4184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4184..4188 + 0: JS_STRING_LITERAL@4184..4188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4188..4189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4189..4193 + 0: JS_STRING_LITERAL@4189..4193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4193..4194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4194..4198 + 0: JS_STRING_LITERAL@4194..4198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4198..4199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4199..4203 + 0: JS_STRING_LITERAL@4199..4203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4203..4204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4204..4208 + 0: JS_STRING_LITERAL@4204..4208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4208..4209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4209..4213 + 0: JS_STRING_LITERAL@4209..4213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4213..4214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4214..4218 + 0: JS_STRING_LITERAL@4214..4218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4218..4219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4219..4223 + 0: JS_STRING_LITERAL@4219..4223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4223..4224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4224..4228 + 0: JS_STRING_LITERAL@4224..4228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4228..4229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4229..4233 + 0: JS_STRING_LITERAL@4229..4233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4233..4234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4234..4238 + 0: JS_STRING_LITERAL@4234..4238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4238..4239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4239..4243 + 0: JS_STRING_LITERAL@4239..4243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4243..4244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4244..4248 + 0: JS_STRING_LITERAL@4244..4248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4248..4249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4249..4253 + 0: JS_STRING_LITERAL@4249..4253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4253..4254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4254..4258 + 0: JS_STRING_LITERAL@4254..4258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4258..4259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4259..4263 + 0: JS_STRING_LITERAL@4259..4263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4263..4264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4264..4268 + 0: JS_STRING_LITERAL@4264..4268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4268..4269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4269..4273 + 0: JS_STRING_LITERAL@4269..4273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4273..4274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4274..4278 + 0: JS_STRING_LITERAL@4274..4278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4278..4279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4279..4283 + 0: JS_STRING_LITERAL@4279..4283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4283..4284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4284..4288 + 0: JS_STRING_LITERAL@4284..4288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4288..4289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4289..4293 + 0: JS_STRING_LITERAL@4289..4293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4293..4294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4294..4298 + 0: JS_STRING_LITERAL@4294..4298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4298..4299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4299..4303 + 0: JS_STRING_LITERAL@4299..4303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4303..4304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4304..4308 + 0: JS_STRING_LITERAL@4304..4308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4308..4309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4309..4313 + 0: JS_STRING_LITERAL@4309..4313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4313..4314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4314..4318 + 0: JS_STRING_LITERAL@4314..4318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4318..4319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4319..4323 + 0: JS_STRING_LITERAL@4319..4323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4323..4324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4324..4328 + 0: JS_STRING_LITERAL@4324..4328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4328..4329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4329..4333 + 0: JS_STRING_LITERAL@4329..4333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4333..4334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4334..4338 + 0: JS_STRING_LITERAL@4334..4338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4338..4339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4339..4343 + 0: JS_STRING_LITERAL@4339..4343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4343..4344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4344..4348 + 0: JS_STRING_LITERAL@4344..4348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4348..4349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4349..4353 + 0: JS_STRING_LITERAL@4349..4353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4353..4354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4354..4358 + 0: JS_STRING_LITERAL@4354..4358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4358..4359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4359..4363 + 0: JS_STRING_LITERAL@4359..4363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4363..4364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4364..4368 + 0: JS_STRING_LITERAL@4364..4368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4368..4369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4369..4373 + 0: JS_STRING_LITERAL@4369..4373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4373..4374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4374..4378 + 0: JS_STRING_LITERAL@4374..4378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4378..4379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4379..4383 + 0: JS_STRING_LITERAL@4379..4383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4383..4384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4384..4388 + 0: JS_STRING_LITERAL@4384..4388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4388..4389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4389..4393 + 0: JS_STRING_LITERAL@4389..4393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4393..4394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4394..4398 + 0: JS_STRING_LITERAL@4394..4398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4398..4399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4399..4403 + 0: JS_STRING_LITERAL@4399..4403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4403..4404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4404..4408 + 0: JS_STRING_LITERAL@4404..4408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4408..4409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4409..4413 + 0: JS_STRING_LITERAL@4409..4413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4413..4414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4414..4418 + 0: JS_STRING_LITERAL@4414..4418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4418..4419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4419..4423 + 0: JS_STRING_LITERAL@4419..4423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4423..4424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4424..4428 + 0: JS_STRING_LITERAL@4424..4428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4428..4429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4429..4433 + 0: JS_STRING_LITERAL@4429..4433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4433..4434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4434..4438 + 0: JS_STRING_LITERAL@4434..4438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4438..4439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4439..4443 + 0: JS_STRING_LITERAL@4439..4443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4443..4444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4444..4448 + 0: JS_STRING_LITERAL@4444..4448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4448..4449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4449..4453 + 0: JS_STRING_LITERAL@4449..4453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4453..4454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4454..4458 + 0: JS_STRING_LITERAL@4454..4458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4458..4459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4459..4463 + 0: JS_STRING_LITERAL@4459..4463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4463..4464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4464..4468 + 0: JS_STRING_LITERAL@4464..4468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4468..4469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4469..4473 + 0: JS_STRING_LITERAL@4469..4473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4473..4474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4474..4478 + 0: JS_STRING_LITERAL@4474..4478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4478..4479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4479..4483 + 0: JS_STRING_LITERAL@4479..4483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4483..4484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4484..4488 + 0: JS_STRING_LITERAL@4484..4488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4488..4489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4489..4493 + 0: JS_STRING_LITERAL@4489..4493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4493..4494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4494..4498 + 0: JS_STRING_LITERAL@4494..4498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4498..4499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4499..4503 + 0: JS_STRING_LITERAL@4499..4503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4503..4504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4504..4508 + 0: JS_STRING_LITERAL@4504..4508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4508..4509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4509..4513 + 0: JS_STRING_LITERAL@4509..4513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4513..4514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4514..4518 + 0: JS_STRING_LITERAL@4514..4518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4518..4519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4519..4523 + 0: JS_STRING_LITERAL@4519..4523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4523..4524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4524..4528 + 0: JS_STRING_LITERAL@4524..4528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4528..4529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4529..4533 + 0: JS_STRING_LITERAL@4529..4533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4533..4534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4534..4538 + 0: JS_STRING_LITERAL@4534..4538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4538..4539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4539..4543 + 0: JS_STRING_LITERAL@4539..4543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4543..4544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4544..4548 + 0: JS_STRING_LITERAL@4544..4548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4548..4549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4549..4553 + 0: JS_STRING_LITERAL@4549..4553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4553..4554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4554..4558 + 0: JS_STRING_LITERAL@4554..4558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4558..4559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4559..4563 + 0: JS_STRING_LITERAL@4559..4563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4563..4564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4564..4568 + 0: JS_STRING_LITERAL@4564..4568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4568..4569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4569..4573 + 0: JS_STRING_LITERAL@4569..4573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4573..4574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4574..4578 + 0: JS_STRING_LITERAL@4574..4578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4578..4579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4579..4583 + 0: JS_STRING_LITERAL@4579..4583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4583..4584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4584..4588 + 0: JS_STRING_LITERAL@4584..4588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4588..4589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4589..4593 + 0: JS_STRING_LITERAL@4589..4593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4593..4594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4594..4598 + 0: JS_STRING_LITERAL@4594..4598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4598..4599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4599..4603 + 0: JS_STRING_LITERAL@4599..4603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4603..4604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4604..4608 + 0: JS_STRING_LITERAL@4604..4608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4608..4609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4609..4613 + 0: JS_STRING_LITERAL@4609..4613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4613..4614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4614..4618 + 0: JS_STRING_LITERAL@4614..4618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4618..4619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4619..4623 + 0: JS_STRING_LITERAL@4619..4623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4623..4624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4624..4628 + 0: JS_STRING_LITERAL@4624..4628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4628..4629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4629..4633 + 0: JS_STRING_LITERAL@4629..4633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4633..4634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4634..4638 + 0: JS_STRING_LITERAL@4634..4638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4638..4639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4639..4643 + 0: JS_STRING_LITERAL@4639..4643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4643..4644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4644..4648 + 0: JS_STRING_LITERAL@4644..4648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4648..4649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4649..4653 + 0: JS_STRING_LITERAL@4649..4653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4653..4654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4654..4658 + 0: JS_STRING_LITERAL@4654..4658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4658..4659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4659..4663 + 0: JS_STRING_LITERAL@4659..4663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4663..4664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4664..4668 + 0: JS_STRING_LITERAL@4664..4668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4668..4669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4669..4673 + 0: JS_STRING_LITERAL@4669..4673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4673..4674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4674..4678 + 0: JS_STRING_LITERAL@4674..4678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4678..4679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4679..4683 + 0: JS_STRING_LITERAL@4679..4683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4683..4684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4684..4688 + 0: JS_STRING_LITERAL@4684..4688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4688..4689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4689..4693 + 0: JS_STRING_LITERAL@4689..4693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4693..4694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4694..4698 + 0: JS_STRING_LITERAL@4694..4698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4698..4699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4699..4703 + 0: JS_STRING_LITERAL@4699..4703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4703..4704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4704..4708 + 0: JS_STRING_LITERAL@4704..4708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4708..4709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4709..4713 + 0: JS_STRING_LITERAL@4709..4713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4713..4714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4714..4718 + 0: JS_STRING_LITERAL@4714..4718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4718..4719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4719..4723 + 0: JS_STRING_LITERAL@4719..4723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4723..4724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4724..4728 + 0: JS_STRING_LITERAL@4724..4728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4728..4729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4729..4733 + 0: JS_STRING_LITERAL@4729..4733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4733..4734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4734..4738 + 0: JS_STRING_LITERAL@4734..4738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4738..4739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4739..4743 + 0: JS_STRING_LITERAL@4739..4743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4743..4744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4744..4748 + 0: JS_STRING_LITERAL@4744..4748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4748..4749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4749..4753 + 0: JS_STRING_LITERAL@4749..4753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4753..4754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4754..4758 + 0: JS_STRING_LITERAL@4754..4758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4758..4759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4759..4763 + 0: JS_STRING_LITERAL@4759..4763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4763..4764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4764..4768 + 0: JS_STRING_LITERAL@4764..4768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4768..4769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4769..4773 + 0: JS_STRING_LITERAL@4769..4773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4773..4774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4774..4778 + 0: JS_STRING_LITERAL@4774..4778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4778..4779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4779..4783 + 0: JS_STRING_LITERAL@4779..4783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4783..4784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4784..4788 + 0: JS_STRING_LITERAL@4784..4788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4788..4789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4789..4793 + 0: JS_STRING_LITERAL@4789..4793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4793..4794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4794..4798 + 0: JS_STRING_LITERAL@4794..4798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4798..4799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4799..4803 + 0: JS_STRING_LITERAL@4799..4803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4803..4804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4804..4808 + 0: JS_STRING_LITERAL@4804..4808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4808..4809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4809..4813 + 0: JS_STRING_LITERAL@4809..4813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4813..4814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4814..4818 + 0: JS_STRING_LITERAL@4814..4818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4818..4819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4819..4823 + 0: JS_STRING_LITERAL@4819..4823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4823..4824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4824..4828 + 0: JS_STRING_LITERAL@4824..4828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4828..4829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4829..4833 + 0: JS_STRING_LITERAL@4829..4833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4833..4834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4834..4838 + 0: JS_STRING_LITERAL@4834..4838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4838..4839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4839..4843 + 0: JS_STRING_LITERAL@4839..4843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4843..4844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4844..4848 + 0: JS_STRING_LITERAL@4844..4848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4848..4849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4849..4853 + 0: JS_STRING_LITERAL@4849..4853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4853..4854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4854..4858 + 0: JS_STRING_LITERAL@4854..4858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4858..4859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4859..4863 + 0: JS_STRING_LITERAL@4859..4863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4863..4864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4864..4868 + 0: JS_STRING_LITERAL@4864..4868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4868..4869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4869..4873 + 0: JS_STRING_LITERAL@4869..4873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4873..4874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4874..4878 + 0: JS_STRING_LITERAL@4874..4878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4878..4879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4879..4883 + 0: JS_STRING_LITERAL@4879..4883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4883..4884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4884..4888 + 0: JS_STRING_LITERAL@4884..4888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4888..4889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4889..4893 + 0: JS_STRING_LITERAL@4889..4893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4893..4894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4894..4898 + 0: JS_STRING_LITERAL@4894..4898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4898..4899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4899..4903 + 0: JS_STRING_LITERAL@4899..4903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4903..4904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4904..4908 + 0: JS_STRING_LITERAL@4904..4908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4908..4909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4909..4913 + 0: JS_STRING_LITERAL@4909..4913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4913..4914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4914..4918 + 0: JS_STRING_LITERAL@4914..4918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4918..4919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4919..4923 + 0: JS_STRING_LITERAL@4919..4923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4923..4924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4924..4928 + 0: JS_STRING_LITERAL@4924..4928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4928..4929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4929..4933 + 0: JS_STRING_LITERAL@4929..4933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4933..4934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4934..4938 + 0: JS_STRING_LITERAL@4934..4938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4938..4939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4939..4943 + 0: JS_STRING_LITERAL@4939..4943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4943..4944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4944..4948 + 0: JS_STRING_LITERAL@4944..4948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4948..4949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4949..4953 + 0: JS_STRING_LITERAL@4949..4953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4953..4954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4954..4958 + 0: JS_STRING_LITERAL@4954..4958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4958..4959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4959..4963 + 0: JS_STRING_LITERAL@4959..4963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4963..4964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4964..4968 + 0: JS_STRING_LITERAL@4964..4968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4968..4969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4969..4973 + 0: JS_STRING_LITERAL@4969..4973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4973..4974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4974..4978 + 0: JS_STRING_LITERAL@4974..4978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4978..4979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4979..4983 + 0: JS_STRING_LITERAL@4979..4983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4983..4984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4984..4988 + 0: JS_STRING_LITERAL@4984..4988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4988..4989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4989..4993 + 0: JS_STRING_LITERAL@4989..4993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4993..4994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4994..4998 + 0: JS_STRING_LITERAL@4994..4998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@4998..4999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@4999..5003 + 0: JS_STRING_LITERAL@4999..5003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5003..5004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5004..5008 + 0: JS_STRING_LITERAL@5004..5008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5008..5009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5009..5013 + 0: JS_STRING_LITERAL@5009..5013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5013..5014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5014..5018 + 0: JS_STRING_LITERAL@5014..5018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5018..5019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5019..5023 + 0: JS_STRING_LITERAL@5019..5023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5023..5024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5024..5028 + 0: JS_STRING_LITERAL@5024..5028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5028..5029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5029..5033 + 0: JS_STRING_LITERAL@5029..5033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5033..5034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5034..5038 + 0: JS_STRING_LITERAL@5034..5038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5038..5039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5039..5043 + 0: JS_STRING_LITERAL@5039..5043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5043..5044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5044..5048 + 0: JS_STRING_LITERAL@5044..5048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5048..5049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5049..5053 + 0: JS_STRING_LITERAL@5049..5053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5053..5054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5054..5058 + 0: JS_STRING_LITERAL@5054..5058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5058..5059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5059..5063 + 0: JS_STRING_LITERAL@5059..5063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5063..5064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5064..5068 + 0: JS_STRING_LITERAL@5064..5068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5068..5069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5069..5073 + 0: JS_STRING_LITERAL@5069..5073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5073..5074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5074..5078 + 0: JS_STRING_LITERAL@5074..5078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5078..5079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5079..5083 + 0: JS_STRING_LITERAL@5079..5083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5083..5084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5084..5088 + 0: JS_STRING_LITERAL@5084..5088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5088..5089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5089..5093 + 0: JS_STRING_LITERAL@5089..5093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5093..5094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5094..5098 + 0: JS_STRING_LITERAL@5094..5098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5098..5099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5099..5103 + 0: JS_STRING_LITERAL@5099..5103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5103..5104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5104..5108 + 0: JS_STRING_LITERAL@5104..5108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5108..5109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5109..5113 + 0: JS_STRING_LITERAL@5109..5113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5113..5114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5114..5118 + 0: JS_STRING_LITERAL@5114..5118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5118..5119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5119..5123 + 0: JS_STRING_LITERAL@5119..5123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5123..5124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5124..5128 + 0: JS_STRING_LITERAL@5124..5128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5128..5129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5129..5133 + 0: JS_STRING_LITERAL@5129..5133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5133..5134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5134..5138 + 0: JS_STRING_LITERAL@5134..5138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5138..5139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5139..5143 + 0: JS_STRING_LITERAL@5139..5143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5143..5144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5144..5148 + 0: JS_STRING_LITERAL@5144..5148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5148..5149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5149..5153 + 0: JS_STRING_LITERAL@5149..5153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5153..5154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5154..5158 + 0: JS_STRING_LITERAL@5154..5158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5158..5159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5159..5163 + 0: JS_STRING_LITERAL@5159..5163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5163..5164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5164..5168 + 0: JS_STRING_LITERAL@5164..5168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5168..5169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5169..5173 + 0: JS_STRING_LITERAL@5169..5173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5173..5174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5174..5178 + 0: JS_STRING_LITERAL@5174..5178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5178..5179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5179..5183 + 0: JS_STRING_LITERAL@5179..5183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5183..5184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5184..5188 + 0: JS_STRING_LITERAL@5184..5188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5188..5189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5189..5193 + 0: JS_STRING_LITERAL@5189..5193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5193..5194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5194..5198 + 0: JS_STRING_LITERAL@5194..5198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5198..5199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5199..5203 + 0: JS_STRING_LITERAL@5199..5203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5203..5204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5204..5208 + 0: JS_STRING_LITERAL@5204..5208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5208..5209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5209..5213 + 0: JS_STRING_LITERAL@5209..5213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5213..5214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5214..5218 + 0: JS_STRING_LITERAL@5214..5218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5218..5219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5219..5223 + 0: JS_STRING_LITERAL@5219..5223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5223..5224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5224..5228 + 0: JS_STRING_LITERAL@5224..5228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5228..5229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5229..5233 + 0: JS_STRING_LITERAL@5229..5233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5233..5234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5234..5238 + 0: JS_STRING_LITERAL@5234..5238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5238..5239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5239..5243 + 0: JS_STRING_LITERAL@5239..5243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5243..5244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5244..5248 + 0: JS_STRING_LITERAL@5244..5248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5248..5249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5249..5253 + 0: JS_STRING_LITERAL@5249..5253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5253..5254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5254..5258 + 0: JS_STRING_LITERAL@5254..5258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5258..5259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5259..5263 + 0: JS_STRING_LITERAL@5259..5263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5263..5264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5264..5268 + 0: JS_STRING_LITERAL@5264..5268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5268..5269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5269..5273 + 0: JS_STRING_LITERAL@5269..5273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5273..5274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5274..5278 + 0: JS_STRING_LITERAL@5274..5278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5278..5279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5279..5283 + 0: JS_STRING_LITERAL@5279..5283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5283..5284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5284..5288 + 0: JS_STRING_LITERAL@5284..5288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5288..5289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5289..5293 + 0: JS_STRING_LITERAL@5289..5293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5293..5294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5294..5298 + 0: JS_STRING_LITERAL@5294..5298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5298..5299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5299..5303 + 0: JS_STRING_LITERAL@5299..5303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5303..5304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5304..5308 + 0: JS_STRING_LITERAL@5304..5308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5308..5309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5309..5313 + 0: JS_STRING_LITERAL@5309..5313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5313..5314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5314..5318 + 0: JS_STRING_LITERAL@5314..5318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5318..5319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5319..5323 + 0: JS_STRING_LITERAL@5319..5323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5323..5324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5324..5328 + 0: JS_STRING_LITERAL@5324..5328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5328..5329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5329..5333 + 0: JS_STRING_LITERAL@5329..5333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5333..5334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5334..5338 + 0: JS_STRING_LITERAL@5334..5338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5338..5339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5339..5343 + 0: JS_STRING_LITERAL@5339..5343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5343..5344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5344..5348 + 0: JS_STRING_LITERAL@5344..5348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5348..5349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5349..5353 + 0: JS_STRING_LITERAL@5349..5353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5353..5354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5354..5358 + 0: JS_STRING_LITERAL@5354..5358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5358..5359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5359..5363 + 0: JS_STRING_LITERAL@5359..5363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5363..5364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5364..5368 + 0: JS_STRING_LITERAL@5364..5368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5368..5369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5369..5373 + 0: JS_STRING_LITERAL@5369..5373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5373..5374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5374..5378 + 0: JS_STRING_LITERAL@5374..5378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5378..5379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5379..5383 + 0: JS_STRING_LITERAL@5379..5383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5383..5384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5384..5388 + 0: JS_STRING_LITERAL@5384..5388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5388..5389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5389..5393 + 0: JS_STRING_LITERAL@5389..5393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5393..5394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5394..5398 + 0: JS_STRING_LITERAL@5394..5398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5398..5399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5399..5403 + 0: JS_STRING_LITERAL@5399..5403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5403..5404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5404..5408 + 0: JS_STRING_LITERAL@5404..5408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5408..5409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5409..5413 + 0: JS_STRING_LITERAL@5409..5413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5413..5414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5414..5418 + 0: JS_STRING_LITERAL@5414..5418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5418..5419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5419..5423 + 0: JS_STRING_LITERAL@5419..5423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5423..5424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5424..5428 + 0: JS_STRING_LITERAL@5424..5428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5428..5429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5429..5433 + 0: JS_STRING_LITERAL@5429..5433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5433..5434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5434..5438 + 0: JS_STRING_LITERAL@5434..5438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5438..5439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5439..5443 + 0: JS_STRING_LITERAL@5439..5443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5443..5444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5444..5448 + 0: JS_STRING_LITERAL@5444..5448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5448..5449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5449..5453 + 0: JS_STRING_LITERAL@5449..5453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5453..5454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5454..5458 + 0: JS_STRING_LITERAL@5454..5458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5458..5459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5459..5463 + 0: JS_STRING_LITERAL@5459..5463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5463..5464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5464..5468 + 0: JS_STRING_LITERAL@5464..5468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5468..5469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5469..5473 + 0: JS_STRING_LITERAL@5469..5473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5473..5474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5474..5478 + 0: JS_STRING_LITERAL@5474..5478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5478..5479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5479..5483 + 0: JS_STRING_LITERAL@5479..5483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5483..5484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5484..5488 + 0: JS_STRING_LITERAL@5484..5488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5488..5489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5489..5493 + 0: JS_STRING_LITERAL@5489..5493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5493..5494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5494..5498 + 0: JS_STRING_LITERAL@5494..5498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5498..5499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5499..5503 + 0: JS_STRING_LITERAL@5499..5503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5503..5504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5504..5508 + 0: JS_STRING_LITERAL@5504..5508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5508..5509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5509..5513 + 0: JS_STRING_LITERAL@5509..5513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5513..5514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5514..5518 + 0: JS_STRING_LITERAL@5514..5518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5518..5519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5519..5523 + 0: JS_STRING_LITERAL@5519..5523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5523..5524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5524..5528 + 0: JS_STRING_LITERAL@5524..5528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5528..5529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5529..5533 + 0: JS_STRING_LITERAL@5529..5533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5533..5534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5534..5538 + 0: JS_STRING_LITERAL@5534..5538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5538..5539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5539..5543 + 0: JS_STRING_LITERAL@5539..5543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5543..5544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5544..5548 + 0: JS_STRING_LITERAL@5544..5548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5548..5549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5549..5553 + 0: JS_STRING_LITERAL@5549..5553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5553..5554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5554..5558 + 0: JS_STRING_LITERAL@5554..5558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5558..5559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5559..5563 + 0: JS_STRING_LITERAL@5559..5563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5563..5564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5564..5568 + 0: JS_STRING_LITERAL@5564..5568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5568..5569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5569..5573 + 0: JS_STRING_LITERAL@5569..5573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5573..5574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5574..5578 + 0: JS_STRING_LITERAL@5574..5578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5578..5579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5579..5583 + 0: JS_STRING_LITERAL@5579..5583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5583..5584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5584..5588 + 0: JS_STRING_LITERAL@5584..5588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5588..5589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5589..5593 + 0: JS_STRING_LITERAL@5589..5593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5593..5594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5594..5598 + 0: JS_STRING_LITERAL@5594..5598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5598..5599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5599..5603 + 0: JS_STRING_LITERAL@5599..5603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5603..5604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5604..5608 + 0: JS_STRING_LITERAL@5604..5608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5608..5609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5609..5613 + 0: JS_STRING_LITERAL@5609..5613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5613..5614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5614..5618 + 0: JS_STRING_LITERAL@5614..5618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5618..5619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5619..5623 + 0: JS_STRING_LITERAL@5619..5623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5623..5624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5624..5628 + 0: JS_STRING_LITERAL@5624..5628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5628..5629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5629..5633 + 0: JS_STRING_LITERAL@5629..5633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5633..5634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5634..5638 + 0: JS_STRING_LITERAL@5634..5638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5638..5639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5639..5643 + 0: JS_STRING_LITERAL@5639..5643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5643..5644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5644..5648 + 0: JS_STRING_LITERAL@5644..5648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5648..5649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5649..5653 + 0: JS_STRING_LITERAL@5649..5653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5653..5654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5654..5658 + 0: JS_STRING_LITERAL@5654..5658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5658..5659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5659..5663 + 0: JS_STRING_LITERAL@5659..5663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5663..5664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5664..5668 + 0: JS_STRING_LITERAL@5664..5668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5668..5669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5669..5673 + 0: JS_STRING_LITERAL@5669..5673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5673..5674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5674..5678 + 0: JS_STRING_LITERAL@5674..5678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5678..5679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5679..5683 + 0: JS_STRING_LITERAL@5679..5683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5683..5684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5684..5688 + 0: JS_STRING_LITERAL@5684..5688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5688..5689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5689..5693 + 0: JS_STRING_LITERAL@5689..5693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5693..5694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5694..5698 + 0: JS_STRING_LITERAL@5694..5698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5698..5699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5699..5703 + 0: JS_STRING_LITERAL@5699..5703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5703..5704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5704..5708 + 0: JS_STRING_LITERAL@5704..5708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5708..5709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5709..5713 + 0: JS_STRING_LITERAL@5709..5713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5713..5714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5714..5718 + 0: JS_STRING_LITERAL@5714..5718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5718..5719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5719..5723 + 0: JS_STRING_LITERAL@5719..5723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5723..5724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5724..5728 + 0: JS_STRING_LITERAL@5724..5728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5728..5729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5729..5733 + 0: JS_STRING_LITERAL@5729..5733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5733..5734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5734..5738 + 0: JS_STRING_LITERAL@5734..5738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5738..5739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5739..5743 + 0: JS_STRING_LITERAL@5739..5743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5743..5744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5744..5748 + 0: JS_STRING_LITERAL@5744..5748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5748..5749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5749..5753 + 0: JS_STRING_LITERAL@5749..5753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5753..5754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5754..5758 + 0: JS_STRING_LITERAL@5754..5758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5758..5759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5759..5763 + 0: JS_STRING_LITERAL@5759..5763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5763..5764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5764..5768 + 0: JS_STRING_LITERAL@5764..5768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5768..5769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5769..5773 + 0: JS_STRING_LITERAL@5769..5773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5773..5774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5774..5778 + 0: JS_STRING_LITERAL@5774..5778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5778..5779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5779..5783 + 0: JS_STRING_LITERAL@5779..5783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5783..5784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5784..5788 + 0: JS_STRING_LITERAL@5784..5788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5788..5789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5789..5793 + 0: JS_STRING_LITERAL@5789..5793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5793..5794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5794..5798 + 0: JS_STRING_LITERAL@5794..5798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5798..5799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5799..5803 + 0: JS_STRING_LITERAL@5799..5803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5803..5804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5804..5808 + 0: JS_STRING_LITERAL@5804..5808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5808..5809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5809..5813 + 0: JS_STRING_LITERAL@5809..5813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5813..5814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5814..5818 + 0: JS_STRING_LITERAL@5814..5818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5818..5819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5819..5823 + 0: JS_STRING_LITERAL@5819..5823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5823..5824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5824..5828 + 0: JS_STRING_LITERAL@5824..5828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5828..5829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5829..5833 + 0: JS_STRING_LITERAL@5829..5833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5833..5834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5834..5838 + 0: JS_STRING_LITERAL@5834..5838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5838..5839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5839..5843 + 0: JS_STRING_LITERAL@5839..5843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5843..5844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5844..5848 + 0: JS_STRING_LITERAL@5844..5848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5848..5849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5849..5853 + 0: JS_STRING_LITERAL@5849..5853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5853..5854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5854..5858 + 0: JS_STRING_LITERAL@5854..5858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5858..5859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5859..5863 + 0: JS_STRING_LITERAL@5859..5863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5863..5864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5864..5868 + 0: JS_STRING_LITERAL@5864..5868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5868..5869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5869..5873 + 0: JS_STRING_LITERAL@5869..5873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5873..5874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5874..5878 + 0: JS_STRING_LITERAL@5874..5878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5878..5879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5879..5883 + 0: JS_STRING_LITERAL@5879..5883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5883..5884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5884..5888 + 0: JS_STRING_LITERAL@5884..5888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5888..5889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5889..5893 + 0: JS_STRING_LITERAL@5889..5893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5893..5894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5894..5898 + 0: JS_STRING_LITERAL@5894..5898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5898..5899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5899..5903 + 0: JS_STRING_LITERAL@5899..5903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5903..5904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5904..5908 + 0: JS_STRING_LITERAL@5904..5908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5908..5909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5909..5913 + 0: JS_STRING_LITERAL@5909..5913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5913..5914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5914..5918 + 0: JS_STRING_LITERAL@5914..5918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5918..5919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5919..5923 + 0: JS_STRING_LITERAL@5919..5923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5923..5924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5924..5928 + 0: JS_STRING_LITERAL@5924..5928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5928..5929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5929..5933 + 0: JS_STRING_LITERAL@5929..5933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5933..5934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5934..5938 + 0: JS_STRING_LITERAL@5934..5938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5938..5939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5939..5943 + 0: JS_STRING_LITERAL@5939..5943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5943..5944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5944..5948 + 0: JS_STRING_LITERAL@5944..5948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5948..5949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5949..5953 + 0: JS_STRING_LITERAL@5949..5953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5953..5954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5954..5958 + 0: JS_STRING_LITERAL@5954..5958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5958..5959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5959..5963 + 0: JS_STRING_LITERAL@5959..5963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5963..5964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5964..5968 + 0: JS_STRING_LITERAL@5964..5968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5968..5969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5969..5973 + 0: JS_STRING_LITERAL@5969..5973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5973..5974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5974..5978 + 0: JS_STRING_LITERAL@5974..5978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5978..5979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5979..5983 + 0: JS_STRING_LITERAL@5979..5983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5983..5984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5984..5988 + 0: JS_STRING_LITERAL@5984..5988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5988..5989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5989..5993 + 0: JS_STRING_LITERAL@5989..5993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5993..5994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5994..5998 + 0: JS_STRING_LITERAL@5994..5998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@5998..5999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@5999..6003 + 0: JS_STRING_LITERAL@5999..6003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6003..6004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6004..6008 + 0: JS_STRING_LITERAL@6004..6008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6008..6009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6009..6013 + 0: JS_STRING_LITERAL@6009..6013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6013..6014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6014..6018 + 0: JS_STRING_LITERAL@6014..6018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6018..6019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6019..6023 + 0: JS_STRING_LITERAL@6019..6023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6023..6024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6024..6028 + 0: JS_STRING_LITERAL@6024..6028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6028..6029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6029..6033 + 0: JS_STRING_LITERAL@6029..6033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6033..6034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6034..6038 + 0: JS_STRING_LITERAL@6034..6038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6038..6039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6039..6043 + 0: JS_STRING_LITERAL@6039..6043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6043..6044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6044..6048 + 0: JS_STRING_LITERAL@6044..6048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6048..6049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6049..6053 + 0: JS_STRING_LITERAL@6049..6053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6053..6054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6054..6058 + 0: JS_STRING_LITERAL@6054..6058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6058..6059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6059..6063 + 0: JS_STRING_LITERAL@6059..6063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6063..6064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6064..6068 + 0: JS_STRING_LITERAL@6064..6068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6068..6069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6069..6073 + 0: JS_STRING_LITERAL@6069..6073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6073..6074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6074..6078 + 0: JS_STRING_LITERAL@6074..6078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6078..6079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6079..6083 + 0: JS_STRING_LITERAL@6079..6083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6083..6084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6084..6088 + 0: JS_STRING_LITERAL@6084..6088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6088..6089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6089..6093 + 0: JS_STRING_LITERAL@6089..6093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6093..6094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6094..6098 + 0: JS_STRING_LITERAL@6094..6098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6098..6099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6099..6103 + 0: JS_STRING_LITERAL@6099..6103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6103..6104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6104..6108 + 0: JS_STRING_LITERAL@6104..6108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6108..6109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6109..6113 + 0: JS_STRING_LITERAL@6109..6113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6113..6114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6114..6118 + 0: JS_STRING_LITERAL@6114..6118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6118..6119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6119..6123 + 0: JS_STRING_LITERAL@6119..6123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6123..6124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6124..6128 + 0: JS_STRING_LITERAL@6124..6128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6128..6129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6129..6133 + 0: JS_STRING_LITERAL@6129..6133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6133..6134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6134..6138 + 0: JS_STRING_LITERAL@6134..6138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6138..6139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6139..6143 + 0: JS_STRING_LITERAL@6139..6143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6143..6144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6144..6148 + 0: JS_STRING_LITERAL@6144..6148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6148..6149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6149..6153 + 0: JS_STRING_LITERAL@6149..6153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6153..6154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6154..6158 + 0: JS_STRING_LITERAL@6154..6158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6158..6159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6159..6163 + 0: JS_STRING_LITERAL@6159..6163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6163..6164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6164..6168 + 0: JS_STRING_LITERAL@6164..6168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6168..6169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6169..6173 + 0: JS_STRING_LITERAL@6169..6173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6173..6174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6174..6178 + 0: JS_STRING_LITERAL@6174..6178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6178..6179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6179..6183 + 0: JS_STRING_LITERAL@6179..6183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6183..6184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6184..6188 + 0: JS_STRING_LITERAL@6184..6188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6188..6189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6189..6193 + 0: JS_STRING_LITERAL@6189..6193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6193..6194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6194..6198 + 0: JS_STRING_LITERAL@6194..6198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6198..6199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6199..6203 + 0: JS_STRING_LITERAL@6199..6203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6203..6204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6204..6208 + 0: JS_STRING_LITERAL@6204..6208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6208..6209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6209..6213 + 0: JS_STRING_LITERAL@6209..6213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6213..6214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6214..6218 + 0: JS_STRING_LITERAL@6214..6218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6218..6219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6219..6223 + 0: JS_STRING_LITERAL@6219..6223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6223..6224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6224..6228 + 0: JS_STRING_LITERAL@6224..6228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6228..6229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6229..6233 + 0: JS_STRING_LITERAL@6229..6233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6233..6234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6234..6238 + 0: JS_STRING_LITERAL@6234..6238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6238..6239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6239..6243 + 0: JS_STRING_LITERAL@6239..6243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6243..6244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6244..6248 + 0: JS_STRING_LITERAL@6244..6248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6248..6249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6249..6253 + 0: JS_STRING_LITERAL@6249..6253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6253..6254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6254..6258 + 0: JS_STRING_LITERAL@6254..6258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6258..6259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6259..6263 + 0: JS_STRING_LITERAL@6259..6263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6263..6264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6264..6268 + 0: JS_STRING_LITERAL@6264..6268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6268..6269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6269..6273 + 0: JS_STRING_LITERAL@6269..6273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6273..6274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6274..6278 + 0: JS_STRING_LITERAL@6274..6278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6278..6279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6279..6283 + 0: JS_STRING_LITERAL@6279..6283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6283..6284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6284..6288 + 0: JS_STRING_LITERAL@6284..6288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6288..6289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6289..6293 + 0: JS_STRING_LITERAL@6289..6293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6293..6294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6294..6298 + 0: JS_STRING_LITERAL@6294..6298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6298..6299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6299..6303 + 0: JS_STRING_LITERAL@6299..6303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6303..6304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6304..6308 + 0: JS_STRING_LITERAL@6304..6308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6308..6309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6309..6313 + 0: JS_STRING_LITERAL@6309..6313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6313..6314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6314..6318 + 0: JS_STRING_LITERAL@6314..6318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6318..6319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6319..6323 + 0: JS_STRING_LITERAL@6319..6323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6323..6324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6324..6328 + 0: JS_STRING_LITERAL@6324..6328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6328..6329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6329..6333 + 0: JS_STRING_LITERAL@6329..6333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6333..6334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6334..6338 + 0: JS_STRING_LITERAL@6334..6338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6338..6339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6339..6343 + 0: JS_STRING_LITERAL@6339..6343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6343..6344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6344..6348 + 0: JS_STRING_LITERAL@6344..6348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6348..6349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6349..6353 + 0: JS_STRING_LITERAL@6349..6353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6353..6354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6354..6358 + 0: JS_STRING_LITERAL@6354..6358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6358..6359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6359..6363 + 0: JS_STRING_LITERAL@6359..6363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6363..6364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6364..6368 + 0: JS_STRING_LITERAL@6364..6368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6368..6369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6369..6373 + 0: JS_STRING_LITERAL@6369..6373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6373..6374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6374..6378 + 0: JS_STRING_LITERAL@6374..6378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6378..6379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6379..6383 + 0: JS_STRING_LITERAL@6379..6383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6383..6384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6384..6388 + 0: JS_STRING_LITERAL@6384..6388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6388..6389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6389..6393 + 0: JS_STRING_LITERAL@6389..6393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6393..6394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6394..6398 + 0: JS_STRING_LITERAL@6394..6398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6398..6399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6399..6403 + 0: JS_STRING_LITERAL@6399..6403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6403..6404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6404..6408 + 0: JS_STRING_LITERAL@6404..6408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6408..6409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6409..6413 + 0: JS_STRING_LITERAL@6409..6413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6413..6414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6414..6418 + 0: JS_STRING_LITERAL@6414..6418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6418..6419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6419..6423 + 0: JS_STRING_LITERAL@6419..6423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6423..6424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6424..6428 + 0: JS_STRING_LITERAL@6424..6428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6428..6429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6429..6433 + 0: JS_STRING_LITERAL@6429..6433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6433..6434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6434..6438 + 0: JS_STRING_LITERAL@6434..6438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6438..6439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6439..6443 + 0: JS_STRING_LITERAL@6439..6443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6443..6444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6444..6448 + 0: JS_STRING_LITERAL@6444..6448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6448..6449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6449..6453 + 0: JS_STRING_LITERAL@6449..6453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6453..6454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6454..6458 + 0: JS_STRING_LITERAL@6454..6458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6458..6459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6459..6463 + 0: JS_STRING_LITERAL@6459..6463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6463..6464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6464..6468 + 0: JS_STRING_LITERAL@6464..6468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6468..6469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6469..6473 + 0: JS_STRING_LITERAL@6469..6473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6473..6474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6474..6478 + 0: JS_STRING_LITERAL@6474..6478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6478..6479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6479..6483 + 0: JS_STRING_LITERAL@6479..6483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6483..6484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6484..6488 + 0: JS_STRING_LITERAL@6484..6488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6488..6489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6489..6493 + 0: JS_STRING_LITERAL@6489..6493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6493..6494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6494..6498 + 0: JS_STRING_LITERAL@6494..6498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6498..6499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6499..6503 + 0: JS_STRING_LITERAL@6499..6503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6503..6504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6504..6508 + 0: JS_STRING_LITERAL@6504..6508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6508..6509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6509..6513 + 0: JS_STRING_LITERAL@6509..6513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6513..6514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6514..6518 + 0: JS_STRING_LITERAL@6514..6518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6518..6519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6519..6523 + 0: JS_STRING_LITERAL@6519..6523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6523..6524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6524..6528 + 0: JS_STRING_LITERAL@6524..6528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6528..6529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6529..6533 + 0: JS_STRING_LITERAL@6529..6533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6533..6534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6534..6538 + 0: JS_STRING_LITERAL@6534..6538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6538..6539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6539..6543 + 0: JS_STRING_LITERAL@6539..6543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6543..6544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6544..6548 + 0: JS_STRING_LITERAL@6544..6548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6548..6549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6549..6553 + 0: JS_STRING_LITERAL@6549..6553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6553..6554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6554..6558 + 0: JS_STRING_LITERAL@6554..6558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6558..6559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6559..6563 + 0: JS_STRING_LITERAL@6559..6563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6563..6564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6564..6568 + 0: JS_STRING_LITERAL@6564..6568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6568..6569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6569..6573 + 0: JS_STRING_LITERAL@6569..6573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6573..6574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6574..6578 + 0: JS_STRING_LITERAL@6574..6578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6578..6579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6579..6583 + 0: JS_STRING_LITERAL@6579..6583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6583..6584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6584..6588 + 0: JS_STRING_LITERAL@6584..6588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6588..6589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6589..6593 + 0: JS_STRING_LITERAL@6589..6593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6593..6594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6594..6598 + 0: JS_STRING_LITERAL@6594..6598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6598..6599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6599..6603 + 0: JS_STRING_LITERAL@6599..6603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6603..6604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6604..6608 + 0: JS_STRING_LITERAL@6604..6608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6608..6609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6609..6613 + 0: JS_STRING_LITERAL@6609..6613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6613..6614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6614..6618 + 0: JS_STRING_LITERAL@6614..6618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6618..6619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6619..6623 + 0: JS_STRING_LITERAL@6619..6623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6623..6624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6624..6628 + 0: JS_STRING_LITERAL@6624..6628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6628..6629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6629..6633 + 0: JS_STRING_LITERAL@6629..6633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6633..6634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6634..6638 + 0: JS_STRING_LITERAL@6634..6638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6638..6639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6639..6643 + 0: JS_STRING_LITERAL@6639..6643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6643..6644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6644..6648 + 0: JS_STRING_LITERAL@6644..6648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6648..6649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6649..6653 + 0: JS_STRING_LITERAL@6649..6653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6653..6654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6654..6658 + 0: JS_STRING_LITERAL@6654..6658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6658..6659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6659..6663 + 0: JS_STRING_LITERAL@6659..6663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6663..6664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6664..6668 + 0: JS_STRING_LITERAL@6664..6668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6668..6669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6669..6673 + 0: JS_STRING_LITERAL@6669..6673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6673..6674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6674..6678 + 0: JS_STRING_LITERAL@6674..6678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6678..6679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6679..6683 + 0: JS_STRING_LITERAL@6679..6683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6683..6684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6684..6688 + 0: JS_STRING_LITERAL@6684..6688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6688..6689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6689..6693 + 0: JS_STRING_LITERAL@6689..6693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6693..6694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6694..6698 + 0: JS_STRING_LITERAL@6694..6698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6698..6699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6699..6703 + 0: JS_STRING_LITERAL@6699..6703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6703..6704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6704..6708 + 0: JS_STRING_LITERAL@6704..6708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6708..6709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6709..6713 + 0: JS_STRING_LITERAL@6709..6713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6713..6714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6714..6718 + 0: JS_STRING_LITERAL@6714..6718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6718..6719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6719..6723 + 0: JS_STRING_LITERAL@6719..6723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6723..6724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6724..6728 + 0: JS_STRING_LITERAL@6724..6728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6728..6729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6729..6733 + 0: JS_STRING_LITERAL@6729..6733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6733..6734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6734..6738 + 0: JS_STRING_LITERAL@6734..6738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6738..6739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6739..6743 + 0: JS_STRING_LITERAL@6739..6743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6743..6744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6744..6748 + 0: JS_STRING_LITERAL@6744..6748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6748..6749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6749..6753 + 0: JS_STRING_LITERAL@6749..6753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6753..6754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6754..6758 + 0: JS_STRING_LITERAL@6754..6758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6758..6759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6759..6763 + 0: JS_STRING_LITERAL@6759..6763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6763..6764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6764..6768 + 0: JS_STRING_LITERAL@6764..6768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6768..6769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6769..6773 + 0: JS_STRING_LITERAL@6769..6773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6773..6774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6774..6778 + 0: JS_STRING_LITERAL@6774..6778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6778..6779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6779..6783 + 0: JS_STRING_LITERAL@6779..6783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6783..6784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6784..6788 + 0: JS_STRING_LITERAL@6784..6788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6788..6789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6789..6793 + 0: JS_STRING_LITERAL@6789..6793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6793..6794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6794..6798 + 0: JS_STRING_LITERAL@6794..6798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6798..6799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6799..6803 + 0: JS_STRING_LITERAL@6799..6803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6803..6804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6804..6808 + 0: JS_STRING_LITERAL@6804..6808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6808..6809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6809..6813 + 0: JS_STRING_LITERAL@6809..6813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6813..6814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6814..6818 + 0: JS_STRING_LITERAL@6814..6818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6818..6819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6819..6823 + 0: JS_STRING_LITERAL@6819..6823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6823..6824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6824..6828 + 0: JS_STRING_LITERAL@6824..6828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6828..6829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6829..6833 + 0: JS_STRING_LITERAL@6829..6833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6833..6834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6834..6838 + 0: JS_STRING_LITERAL@6834..6838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6838..6839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6839..6843 + 0: JS_STRING_LITERAL@6839..6843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6843..6844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6844..6848 + 0: JS_STRING_LITERAL@6844..6848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6848..6849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6849..6853 + 0: JS_STRING_LITERAL@6849..6853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6853..6854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6854..6858 + 0: JS_STRING_LITERAL@6854..6858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6858..6859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6859..6863 + 0: JS_STRING_LITERAL@6859..6863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6863..6864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6864..6868 + 0: JS_STRING_LITERAL@6864..6868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6868..6869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6869..6873 + 0: JS_STRING_LITERAL@6869..6873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6873..6874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6874..6878 + 0: JS_STRING_LITERAL@6874..6878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6878..6879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6879..6883 + 0: JS_STRING_LITERAL@6879..6883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6883..6884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6884..6888 + 0: JS_STRING_LITERAL@6884..6888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6888..6889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6889..6893 + 0: JS_STRING_LITERAL@6889..6893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6893..6894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6894..6898 + 0: JS_STRING_LITERAL@6894..6898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6898..6899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6899..6903 + 0: JS_STRING_LITERAL@6899..6903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6903..6904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6904..6908 + 0: JS_STRING_LITERAL@6904..6908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6908..6909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6909..6913 + 0: JS_STRING_LITERAL@6909..6913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6913..6914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6914..6918 + 0: JS_STRING_LITERAL@6914..6918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6918..6919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6919..6923 + 0: JS_STRING_LITERAL@6919..6923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6923..6924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6924..6928 + 0: JS_STRING_LITERAL@6924..6928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6928..6929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6929..6933 + 0: JS_STRING_LITERAL@6929..6933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6933..6934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6934..6938 + 0: JS_STRING_LITERAL@6934..6938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6938..6939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6939..6943 + 0: JS_STRING_LITERAL@6939..6943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6943..6944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6944..6948 + 0: JS_STRING_LITERAL@6944..6948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6948..6949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6949..6953 + 0: JS_STRING_LITERAL@6949..6953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6953..6954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6954..6958 + 0: JS_STRING_LITERAL@6954..6958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6958..6959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6959..6963 + 0: JS_STRING_LITERAL@6959..6963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6963..6964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6964..6968 + 0: JS_STRING_LITERAL@6964..6968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6968..6969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6969..6973 + 0: JS_STRING_LITERAL@6969..6973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6973..6974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6974..6978 + 0: JS_STRING_LITERAL@6974..6978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6978..6979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6979..6983 + 0: JS_STRING_LITERAL@6979..6983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6983..6984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6984..6988 + 0: JS_STRING_LITERAL@6984..6988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6988..6989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6989..6993 + 0: JS_STRING_LITERAL@6989..6993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6993..6994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6994..6998 + 0: JS_STRING_LITERAL@6994..6998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@6998..6999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@6999..7003 + 0: JS_STRING_LITERAL@6999..7003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7003..7004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7004..7008 + 0: JS_STRING_LITERAL@7004..7008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7008..7009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7009..7013 + 0: JS_STRING_LITERAL@7009..7013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7013..7014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7014..7018 + 0: JS_STRING_LITERAL@7014..7018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7018..7019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7019..7023 + 0: JS_STRING_LITERAL@7019..7023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7023..7024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7024..7028 + 0: JS_STRING_LITERAL@7024..7028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7028..7029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7029..7033 + 0: JS_STRING_LITERAL@7029..7033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7033..7034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7034..7038 + 0: JS_STRING_LITERAL@7034..7038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7038..7039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7039..7043 + 0: JS_STRING_LITERAL@7039..7043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7043..7044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7044..7048 + 0: JS_STRING_LITERAL@7044..7048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7048..7049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7049..7053 + 0: JS_STRING_LITERAL@7049..7053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7053..7054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7054..7058 + 0: JS_STRING_LITERAL@7054..7058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7058..7059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7059..7063 + 0: JS_STRING_LITERAL@7059..7063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7063..7064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7064..7068 + 0: JS_STRING_LITERAL@7064..7068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7068..7069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7069..7073 + 0: JS_STRING_LITERAL@7069..7073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7073..7074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7074..7078 + 0: JS_STRING_LITERAL@7074..7078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7078..7079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7079..7083 + 0: JS_STRING_LITERAL@7079..7083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7083..7084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7084..7088 + 0: JS_STRING_LITERAL@7084..7088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7088..7089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7089..7093 + 0: JS_STRING_LITERAL@7089..7093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7093..7094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7094..7098 + 0: JS_STRING_LITERAL@7094..7098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7098..7099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7099..7103 + 0: JS_STRING_LITERAL@7099..7103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7103..7104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7104..7108 + 0: JS_STRING_LITERAL@7104..7108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7108..7109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7109..7113 + 0: JS_STRING_LITERAL@7109..7113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7113..7114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7114..7118 + 0: JS_STRING_LITERAL@7114..7118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7118..7119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7119..7123 + 0: JS_STRING_LITERAL@7119..7123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7123..7124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7124..7128 + 0: JS_STRING_LITERAL@7124..7128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7128..7129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7129..7133 + 0: JS_STRING_LITERAL@7129..7133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7133..7134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7134..7138 + 0: JS_STRING_LITERAL@7134..7138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7138..7139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7139..7143 + 0: JS_STRING_LITERAL@7139..7143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7143..7144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7144..7148 + 0: JS_STRING_LITERAL@7144..7148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7148..7149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7149..7153 + 0: JS_STRING_LITERAL@7149..7153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7153..7154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7154..7158 + 0: JS_STRING_LITERAL@7154..7158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7158..7159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7159..7163 + 0: JS_STRING_LITERAL@7159..7163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7163..7164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7164..7168 + 0: JS_STRING_LITERAL@7164..7168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7168..7169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7169..7173 + 0: JS_STRING_LITERAL@7169..7173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7173..7174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7174..7178 + 0: JS_STRING_LITERAL@7174..7178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7178..7179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7179..7183 + 0: JS_STRING_LITERAL@7179..7183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7183..7184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7184..7188 + 0: JS_STRING_LITERAL@7184..7188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7188..7189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7189..7193 + 0: JS_STRING_LITERAL@7189..7193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7193..7194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7194..7198 + 0: JS_STRING_LITERAL@7194..7198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7198..7199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7199..7203 + 0: JS_STRING_LITERAL@7199..7203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7203..7204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7204..7208 + 0: JS_STRING_LITERAL@7204..7208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7208..7209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7209..7213 + 0: JS_STRING_LITERAL@7209..7213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7213..7214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7214..7218 + 0: JS_STRING_LITERAL@7214..7218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7218..7219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7219..7223 + 0: JS_STRING_LITERAL@7219..7223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7223..7224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7224..7228 + 0: JS_STRING_LITERAL@7224..7228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7228..7229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7229..7233 + 0: JS_STRING_LITERAL@7229..7233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7233..7234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7234..7238 + 0: JS_STRING_LITERAL@7234..7238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7238..7239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7239..7243 + 0: JS_STRING_LITERAL@7239..7243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7243..7244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7244..7248 + 0: JS_STRING_LITERAL@7244..7248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7248..7249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7249..7253 + 0: JS_STRING_LITERAL@7249..7253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7253..7254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7254..7258 + 0: JS_STRING_LITERAL@7254..7258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7258..7259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7259..7263 + 0: JS_STRING_LITERAL@7259..7263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7263..7264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7264..7268 + 0: JS_STRING_LITERAL@7264..7268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7268..7269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7269..7273 + 0: JS_STRING_LITERAL@7269..7273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7273..7274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7274..7278 + 0: JS_STRING_LITERAL@7274..7278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7278..7279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7279..7283 + 0: JS_STRING_LITERAL@7279..7283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7283..7284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7284..7288 + 0: JS_STRING_LITERAL@7284..7288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7288..7289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7289..7293 + 0: JS_STRING_LITERAL@7289..7293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7293..7294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7294..7298 + 0: JS_STRING_LITERAL@7294..7298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7298..7299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7299..7303 + 0: JS_STRING_LITERAL@7299..7303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7303..7304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7304..7308 + 0: JS_STRING_LITERAL@7304..7308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7308..7309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7309..7313 + 0: JS_STRING_LITERAL@7309..7313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7313..7314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7314..7318 + 0: JS_STRING_LITERAL@7314..7318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7318..7319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7319..7323 + 0: JS_STRING_LITERAL@7319..7323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7323..7324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7324..7328 + 0: JS_STRING_LITERAL@7324..7328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7328..7329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7329..7333 + 0: JS_STRING_LITERAL@7329..7333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7333..7334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7334..7338 + 0: JS_STRING_LITERAL@7334..7338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7338..7339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7339..7343 + 0: JS_STRING_LITERAL@7339..7343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7343..7344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7344..7348 + 0: JS_STRING_LITERAL@7344..7348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7348..7349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7349..7353 + 0: JS_STRING_LITERAL@7349..7353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7353..7354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7354..7358 + 0: JS_STRING_LITERAL@7354..7358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7358..7359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7359..7363 + 0: JS_STRING_LITERAL@7359..7363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7363..7364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7364..7368 + 0: JS_STRING_LITERAL@7364..7368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7368..7369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7369..7373 + 0: JS_STRING_LITERAL@7369..7373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7373..7374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7374..7378 + 0: JS_STRING_LITERAL@7374..7378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7378..7379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7379..7383 + 0: JS_STRING_LITERAL@7379..7383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7383..7384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7384..7388 + 0: JS_STRING_LITERAL@7384..7388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7388..7389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7389..7393 + 0: JS_STRING_LITERAL@7389..7393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7393..7394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7394..7398 + 0: JS_STRING_LITERAL@7394..7398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7398..7399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7399..7403 + 0: JS_STRING_LITERAL@7399..7403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7403..7404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7404..7408 + 0: JS_STRING_LITERAL@7404..7408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7408..7409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7409..7413 + 0: JS_STRING_LITERAL@7409..7413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7413..7414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7414..7418 + 0: JS_STRING_LITERAL@7414..7418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7418..7419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7419..7423 + 0: JS_STRING_LITERAL@7419..7423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7423..7424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7424..7428 + 0: JS_STRING_LITERAL@7424..7428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7428..7429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7429..7433 + 0: JS_STRING_LITERAL@7429..7433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7433..7434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7434..7438 + 0: JS_STRING_LITERAL@7434..7438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7438..7439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7439..7443 + 0: JS_STRING_LITERAL@7439..7443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7443..7444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7444..7448 + 0: JS_STRING_LITERAL@7444..7448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7448..7449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7449..7453 + 0: JS_STRING_LITERAL@7449..7453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7453..7454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7454..7458 + 0: JS_STRING_LITERAL@7454..7458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7458..7459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7459..7463 + 0: JS_STRING_LITERAL@7459..7463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7463..7464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7464..7468 + 0: JS_STRING_LITERAL@7464..7468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7468..7469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7469..7473 + 0: JS_STRING_LITERAL@7469..7473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7473..7474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7474..7478 + 0: JS_STRING_LITERAL@7474..7478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7478..7479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7479..7483 + 0: JS_STRING_LITERAL@7479..7483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7483..7484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7484..7488 + 0: JS_STRING_LITERAL@7484..7488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7488..7489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7489..7493 + 0: JS_STRING_LITERAL@7489..7493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7493..7494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7494..7498 + 0: JS_STRING_LITERAL@7494..7498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7498..7499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7499..7503 + 0: JS_STRING_LITERAL@7499..7503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7503..7504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7504..7508 + 0: JS_STRING_LITERAL@7504..7508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7508..7509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7509..7513 + 0: JS_STRING_LITERAL@7509..7513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7513..7514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7514..7518 + 0: JS_STRING_LITERAL@7514..7518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7518..7519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7519..7523 + 0: JS_STRING_LITERAL@7519..7523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7523..7524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7524..7528 + 0: JS_STRING_LITERAL@7524..7528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7528..7529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7529..7533 + 0: JS_STRING_LITERAL@7529..7533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7533..7534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7534..7538 + 0: JS_STRING_LITERAL@7534..7538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7538..7539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7539..7543 + 0: JS_STRING_LITERAL@7539..7543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7543..7544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7544..7548 + 0: JS_STRING_LITERAL@7544..7548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7548..7549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7549..7553 + 0: JS_STRING_LITERAL@7549..7553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7553..7554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7554..7558 + 0: JS_STRING_LITERAL@7554..7558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7558..7559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7559..7563 + 0: JS_STRING_LITERAL@7559..7563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7563..7564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7564..7568 + 0: JS_STRING_LITERAL@7564..7568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7568..7569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7569..7573 + 0: JS_STRING_LITERAL@7569..7573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7573..7574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7574..7578 + 0: JS_STRING_LITERAL@7574..7578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7578..7579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7579..7583 + 0: JS_STRING_LITERAL@7579..7583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7583..7584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7584..7588 + 0: JS_STRING_LITERAL@7584..7588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7588..7589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7589..7593 + 0: JS_STRING_LITERAL@7589..7593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7593..7594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7594..7598 + 0: JS_STRING_LITERAL@7594..7598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7598..7599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7599..7603 + 0: JS_STRING_LITERAL@7599..7603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7603..7604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7604..7608 + 0: JS_STRING_LITERAL@7604..7608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7608..7609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7609..7613 + 0: JS_STRING_LITERAL@7609..7613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7613..7614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7614..7618 + 0: JS_STRING_LITERAL@7614..7618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7618..7619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7619..7623 + 0: JS_STRING_LITERAL@7619..7623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7623..7624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7624..7628 + 0: JS_STRING_LITERAL@7624..7628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7628..7629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7629..7633 + 0: JS_STRING_LITERAL@7629..7633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7633..7634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7634..7638 + 0: JS_STRING_LITERAL@7634..7638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7638..7639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7639..7643 + 0: JS_STRING_LITERAL@7639..7643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7643..7644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7644..7648 + 0: JS_STRING_LITERAL@7644..7648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7648..7649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7649..7653 + 0: JS_STRING_LITERAL@7649..7653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7653..7654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7654..7658 + 0: JS_STRING_LITERAL@7654..7658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7658..7659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7659..7663 + 0: JS_STRING_LITERAL@7659..7663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7663..7664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7664..7668 + 0: JS_STRING_LITERAL@7664..7668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7668..7669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7669..7673 + 0: JS_STRING_LITERAL@7669..7673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7673..7674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7674..7678 + 0: JS_STRING_LITERAL@7674..7678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7678..7679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7679..7683 + 0: JS_STRING_LITERAL@7679..7683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7683..7684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7684..7688 + 0: JS_STRING_LITERAL@7684..7688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7688..7689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7689..7693 + 0: JS_STRING_LITERAL@7689..7693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7693..7694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7694..7698 + 0: JS_STRING_LITERAL@7694..7698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7698..7699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7699..7703 + 0: JS_STRING_LITERAL@7699..7703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7703..7704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7704..7708 + 0: JS_STRING_LITERAL@7704..7708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7708..7709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7709..7713 + 0: JS_STRING_LITERAL@7709..7713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7713..7714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7714..7718 + 0: JS_STRING_LITERAL@7714..7718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7718..7719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7719..7723 + 0: JS_STRING_LITERAL@7719..7723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7723..7724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7724..7728 + 0: JS_STRING_LITERAL@7724..7728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7728..7729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7729..7733 + 0: JS_STRING_LITERAL@7729..7733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7733..7734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7734..7738 + 0: JS_STRING_LITERAL@7734..7738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7738..7739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7739..7743 + 0: JS_STRING_LITERAL@7739..7743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7743..7744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7744..7748 + 0: JS_STRING_LITERAL@7744..7748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7748..7749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7749..7753 + 0: JS_STRING_LITERAL@7749..7753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7753..7754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7754..7758 + 0: JS_STRING_LITERAL@7754..7758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7758..7759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7759..7763 + 0: JS_STRING_LITERAL@7759..7763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7763..7764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7764..7768 + 0: JS_STRING_LITERAL@7764..7768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7768..7769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7769..7773 + 0: JS_STRING_LITERAL@7769..7773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7773..7774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7774..7778 + 0: JS_STRING_LITERAL@7774..7778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7778..7779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7779..7783 + 0: JS_STRING_LITERAL@7779..7783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7783..7784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7784..7788 + 0: JS_STRING_LITERAL@7784..7788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7788..7789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7789..7793 + 0: JS_STRING_LITERAL@7789..7793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7793..7794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7794..7798 + 0: JS_STRING_LITERAL@7794..7798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7798..7799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7799..7803 + 0: JS_STRING_LITERAL@7799..7803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7803..7804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7804..7808 + 0: JS_STRING_LITERAL@7804..7808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7808..7809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7809..7813 + 0: JS_STRING_LITERAL@7809..7813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7813..7814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7814..7818 + 0: JS_STRING_LITERAL@7814..7818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7818..7819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7819..7823 + 0: JS_STRING_LITERAL@7819..7823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7823..7824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7824..7828 + 0: JS_STRING_LITERAL@7824..7828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7828..7829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7829..7833 + 0: JS_STRING_LITERAL@7829..7833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7833..7834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7834..7838 + 0: JS_STRING_LITERAL@7834..7838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7838..7839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7839..7843 + 0: JS_STRING_LITERAL@7839..7843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7843..7844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7844..7848 + 0: JS_STRING_LITERAL@7844..7848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7848..7849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7849..7853 + 0: JS_STRING_LITERAL@7849..7853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7853..7854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7854..7858 + 0: JS_STRING_LITERAL@7854..7858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7858..7859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7859..7863 + 0: JS_STRING_LITERAL@7859..7863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7863..7864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7864..7868 + 0: JS_STRING_LITERAL@7864..7868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7868..7869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7869..7873 + 0: JS_STRING_LITERAL@7869..7873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7873..7874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7874..7878 + 0: JS_STRING_LITERAL@7874..7878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7878..7879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7879..7883 + 0: JS_STRING_LITERAL@7879..7883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7883..7884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7884..7888 + 0: JS_STRING_LITERAL@7884..7888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7888..7889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7889..7893 + 0: JS_STRING_LITERAL@7889..7893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7893..7894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7894..7898 + 0: JS_STRING_LITERAL@7894..7898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7898..7899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7899..7903 + 0: JS_STRING_LITERAL@7899..7903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7903..7904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7904..7908 + 0: JS_STRING_LITERAL@7904..7908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7908..7909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7909..7913 + 0: JS_STRING_LITERAL@7909..7913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7913..7914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7914..7918 + 0: JS_STRING_LITERAL@7914..7918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7918..7919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7919..7923 + 0: JS_STRING_LITERAL@7919..7923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7923..7924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7924..7928 + 0: JS_STRING_LITERAL@7924..7928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7928..7929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7929..7933 + 0: JS_STRING_LITERAL@7929..7933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7933..7934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7934..7938 + 0: JS_STRING_LITERAL@7934..7938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7938..7939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7939..7943 + 0: JS_STRING_LITERAL@7939..7943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7943..7944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7944..7948 + 0: JS_STRING_LITERAL@7944..7948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7948..7949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7949..7953 + 0: JS_STRING_LITERAL@7949..7953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7953..7954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7954..7958 + 0: JS_STRING_LITERAL@7954..7958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7958..7959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7959..7963 + 0: JS_STRING_LITERAL@7959..7963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7963..7964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7964..7968 + 0: JS_STRING_LITERAL@7964..7968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7968..7969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7969..7973 + 0: JS_STRING_LITERAL@7969..7973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7973..7974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7974..7978 + 0: JS_STRING_LITERAL@7974..7978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7978..7979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7979..7983 + 0: JS_STRING_LITERAL@7979..7983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7983..7984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7984..7988 + 0: JS_STRING_LITERAL@7984..7988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7988..7989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7989..7993 + 0: JS_STRING_LITERAL@7989..7993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7993..7994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7994..7998 + 0: JS_STRING_LITERAL@7994..7998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@7998..7999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@7999..8003 + 0: JS_STRING_LITERAL@7999..8003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8003..8004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8004..8008 + 0: JS_STRING_LITERAL@8004..8008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8008..8009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8009..8013 + 0: JS_STRING_LITERAL@8009..8013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8013..8014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8014..8018 + 0: JS_STRING_LITERAL@8014..8018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8018..8019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8019..8023 + 0: JS_STRING_LITERAL@8019..8023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8023..8024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8024..8028 + 0: JS_STRING_LITERAL@8024..8028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8028..8029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8029..8033 + 0: JS_STRING_LITERAL@8029..8033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8033..8034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8034..8038 + 0: JS_STRING_LITERAL@8034..8038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8038..8039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8039..8043 + 0: JS_STRING_LITERAL@8039..8043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8043..8044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8044..8048 + 0: JS_STRING_LITERAL@8044..8048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8048..8049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8049..8053 + 0: JS_STRING_LITERAL@8049..8053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8053..8054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8054..8058 + 0: JS_STRING_LITERAL@8054..8058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8058..8059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8059..8063 + 0: JS_STRING_LITERAL@8059..8063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8063..8064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8064..8068 + 0: JS_STRING_LITERAL@8064..8068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8068..8069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8069..8073 + 0: JS_STRING_LITERAL@8069..8073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8073..8074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8074..8078 + 0: JS_STRING_LITERAL@8074..8078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8078..8079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8079..8083 + 0: JS_STRING_LITERAL@8079..8083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8083..8084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8084..8088 + 0: JS_STRING_LITERAL@8084..8088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8088..8089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8089..8093 + 0: JS_STRING_LITERAL@8089..8093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8093..8094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8094..8098 + 0: JS_STRING_LITERAL@8094..8098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8098..8099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8099..8103 + 0: JS_STRING_LITERAL@8099..8103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8103..8104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8104..8108 + 0: JS_STRING_LITERAL@8104..8108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8108..8109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8109..8113 + 0: JS_STRING_LITERAL@8109..8113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8113..8114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8114..8118 + 0: JS_STRING_LITERAL@8114..8118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8118..8119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8119..8123 + 0: JS_STRING_LITERAL@8119..8123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8123..8124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8124..8128 + 0: JS_STRING_LITERAL@8124..8128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8128..8129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8129..8133 + 0: JS_STRING_LITERAL@8129..8133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8133..8134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8134..8138 + 0: JS_STRING_LITERAL@8134..8138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8138..8139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8139..8143 + 0: JS_STRING_LITERAL@8139..8143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8143..8144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8144..8148 + 0: JS_STRING_LITERAL@8144..8148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8148..8149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8149..8153 + 0: JS_STRING_LITERAL@8149..8153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8153..8154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8154..8158 + 0: JS_STRING_LITERAL@8154..8158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8158..8159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8159..8163 + 0: JS_STRING_LITERAL@8159..8163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8163..8164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8164..8168 + 0: JS_STRING_LITERAL@8164..8168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8168..8169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8169..8173 + 0: JS_STRING_LITERAL@8169..8173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8173..8174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8174..8178 + 0: JS_STRING_LITERAL@8174..8178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8178..8179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8179..8183 + 0: JS_STRING_LITERAL@8179..8183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8183..8184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8184..8188 + 0: JS_STRING_LITERAL@8184..8188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8188..8189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8189..8193 + 0: JS_STRING_LITERAL@8189..8193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8193..8194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8194..8198 + 0: JS_STRING_LITERAL@8194..8198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8198..8199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8199..8203 + 0: JS_STRING_LITERAL@8199..8203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8203..8204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8204..8208 + 0: JS_STRING_LITERAL@8204..8208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8208..8209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8209..8213 + 0: JS_STRING_LITERAL@8209..8213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8213..8214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8214..8218 + 0: JS_STRING_LITERAL@8214..8218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8218..8219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8219..8223 + 0: JS_STRING_LITERAL@8219..8223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8223..8224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8224..8228 + 0: JS_STRING_LITERAL@8224..8228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8228..8229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8229..8233 + 0: JS_STRING_LITERAL@8229..8233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8233..8234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8234..8238 + 0: JS_STRING_LITERAL@8234..8238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8238..8239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8239..8243 + 0: JS_STRING_LITERAL@8239..8243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8243..8244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8244..8248 + 0: JS_STRING_LITERAL@8244..8248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8248..8249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8249..8253 + 0: JS_STRING_LITERAL@8249..8253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8253..8254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8254..8258 + 0: JS_STRING_LITERAL@8254..8258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8258..8259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8259..8263 + 0: JS_STRING_LITERAL@8259..8263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8263..8264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8264..8268 + 0: JS_STRING_LITERAL@8264..8268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8268..8269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8269..8273 + 0: JS_STRING_LITERAL@8269..8273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8273..8274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8274..8278 + 0: JS_STRING_LITERAL@8274..8278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8278..8279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8279..8283 + 0: JS_STRING_LITERAL@8279..8283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8283..8284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8284..8288 + 0: JS_STRING_LITERAL@8284..8288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8288..8289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8289..8293 + 0: JS_STRING_LITERAL@8289..8293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8293..8294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8294..8298 + 0: JS_STRING_LITERAL@8294..8298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8298..8299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8299..8303 + 0: JS_STRING_LITERAL@8299..8303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8303..8304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8304..8308 + 0: JS_STRING_LITERAL@8304..8308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8308..8309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8309..8313 + 0: JS_STRING_LITERAL@8309..8313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8313..8314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8314..8318 + 0: JS_STRING_LITERAL@8314..8318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8318..8319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8319..8323 + 0: JS_STRING_LITERAL@8319..8323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8323..8324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8324..8328 + 0: JS_STRING_LITERAL@8324..8328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8328..8329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8329..8333 + 0: JS_STRING_LITERAL@8329..8333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8333..8334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8334..8338 + 0: JS_STRING_LITERAL@8334..8338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8338..8339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8339..8343 + 0: JS_STRING_LITERAL@8339..8343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8343..8344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8344..8348 + 0: JS_STRING_LITERAL@8344..8348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8348..8349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8349..8353 + 0: JS_STRING_LITERAL@8349..8353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8353..8354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8354..8358 + 0: JS_STRING_LITERAL@8354..8358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8358..8359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8359..8363 + 0: JS_STRING_LITERAL@8359..8363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8363..8364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8364..8368 + 0: JS_STRING_LITERAL@8364..8368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8368..8369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8369..8373 + 0: JS_STRING_LITERAL@8369..8373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8373..8374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8374..8378 + 0: JS_STRING_LITERAL@8374..8378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8378..8379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8379..8383 + 0: JS_STRING_LITERAL@8379..8383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8383..8384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8384..8388 + 0: JS_STRING_LITERAL@8384..8388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8388..8389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8389..8393 + 0: JS_STRING_LITERAL@8389..8393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8393..8394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8394..8398 + 0: JS_STRING_LITERAL@8394..8398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8398..8399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8399..8403 + 0: JS_STRING_LITERAL@8399..8403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8403..8404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8404..8408 + 0: JS_STRING_LITERAL@8404..8408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8408..8409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8409..8413 + 0: JS_STRING_LITERAL@8409..8413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8413..8414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8414..8418 + 0: JS_STRING_LITERAL@8414..8418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8418..8419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8419..8423 + 0: JS_STRING_LITERAL@8419..8423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8423..8424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8424..8428 + 0: JS_STRING_LITERAL@8424..8428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8428..8429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8429..8433 + 0: JS_STRING_LITERAL@8429..8433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8433..8434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8434..8438 + 0: JS_STRING_LITERAL@8434..8438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8438..8439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8439..8443 + 0: JS_STRING_LITERAL@8439..8443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8443..8444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8444..8448 + 0: JS_STRING_LITERAL@8444..8448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8448..8449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8449..8453 + 0: JS_STRING_LITERAL@8449..8453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8453..8454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8454..8458 + 0: JS_STRING_LITERAL@8454..8458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8458..8459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8459..8463 + 0: JS_STRING_LITERAL@8459..8463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8463..8464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8464..8468 + 0: JS_STRING_LITERAL@8464..8468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8468..8469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8469..8473 + 0: JS_STRING_LITERAL@8469..8473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8473..8474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8474..8478 + 0: JS_STRING_LITERAL@8474..8478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8478..8479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8479..8483 + 0: JS_STRING_LITERAL@8479..8483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8483..8484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8484..8488 + 0: JS_STRING_LITERAL@8484..8488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8488..8489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8489..8493 + 0: JS_STRING_LITERAL@8489..8493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8493..8494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8494..8498 + 0: JS_STRING_LITERAL@8494..8498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8498..8499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8499..8503 + 0: JS_STRING_LITERAL@8499..8503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8503..8504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8504..8508 + 0: JS_STRING_LITERAL@8504..8508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8508..8509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8509..8513 + 0: JS_STRING_LITERAL@8509..8513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8513..8514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8514..8518 + 0: JS_STRING_LITERAL@8514..8518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8518..8519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8519..8523 + 0: JS_STRING_LITERAL@8519..8523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8523..8524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8524..8528 + 0: JS_STRING_LITERAL@8524..8528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8528..8529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8529..8533 + 0: JS_STRING_LITERAL@8529..8533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8533..8534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8534..8538 + 0: JS_STRING_LITERAL@8534..8538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8538..8539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8539..8543 + 0: JS_STRING_LITERAL@8539..8543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8543..8544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8544..8548 + 0: JS_STRING_LITERAL@8544..8548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8548..8549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8549..8553 + 0: JS_STRING_LITERAL@8549..8553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8553..8554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8554..8558 + 0: JS_STRING_LITERAL@8554..8558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8558..8559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8559..8563 + 0: JS_STRING_LITERAL@8559..8563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8563..8564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8564..8568 + 0: JS_STRING_LITERAL@8564..8568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8568..8569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8569..8573 + 0: JS_STRING_LITERAL@8569..8573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8573..8574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8574..8578 + 0: JS_STRING_LITERAL@8574..8578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8578..8579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8579..8583 + 0: JS_STRING_LITERAL@8579..8583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8583..8584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8584..8588 + 0: JS_STRING_LITERAL@8584..8588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8588..8589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8589..8593 + 0: JS_STRING_LITERAL@8589..8593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8593..8594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8594..8598 + 0: JS_STRING_LITERAL@8594..8598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8598..8599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8599..8603 + 0: JS_STRING_LITERAL@8599..8603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8603..8604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8604..8608 + 0: JS_STRING_LITERAL@8604..8608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8608..8609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8609..8613 + 0: JS_STRING_LITERAL@8609..8613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8613..8614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8614..8618 + 0: JS_STRING_LITERAL@8614..8618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8618..8619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8619..8623 + 0: JS_STRING_LITERAL@8619..8623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8623..8624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8624..8628 + 0: JS_STRING_LITERAL@8624..8628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8628..8629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8629..8633 + 0: JS_STRING_LITERAL@8629..8633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8633..8634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8634..8638 + 0: JS_STRING_LITERAL@8634..8638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8638..8639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8639..8643 + 0: JS_STRING_LITERAL@8639..8643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8643..8644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8644..8648 + 0: JS_STRING_LITERAL@8644..8648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8648..8649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8649..8653 + 0: JS_STRING_LITERAL@8649..8653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8653..8654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8654..8658 + 0: JS_STRING_LITERAL@8654..8658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8658..8659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8659..8663 + 0: JS_STRING_LITERAL@8659..8663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8663..8664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8664..8668 + 0: JS_STRING_LITERAL@8664..8668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8668..8669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8669..8673 + 0: JS_STRING_LITERAL@8669..8673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8673..8674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8674..8678 + 0: JS_STRING_LITERAL@8674..8678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8678..8679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8679..8683 + 0: JS_STRING_LITERAL@8679..8683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8683..8684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8684..8688 + 0: JS_STRING_LITERAL@8684..8688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8688..8689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8689..8693 + 0: JS_STRING_LITERAL@8689..8693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8693..8694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8694..8698 + 0: JS_STRING_LITERAL@8694..8698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8698..8699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8699..8703 + 0: JS_STRING_LITERAL@8699..8703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8703..8704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8704..8708 + 0: JS_STRING_LITERAL@8704..8708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8708..8709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8709..8713 + 0: JS_STRING_LITERAL@8709..8713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8713..8714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8714..8718 + 0: JS_STRING_LITERAL@8714..8718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8718..8719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8719..8723 + 0: JS_STRING_LITERAL@8719..8723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8723..8724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8724..8728 + 0: JS_STRING_LITERAL@8724..8728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8728..8729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8729..8733 + 0: JS_STRING_LITERAL@8729..8733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8733..8734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8734..8738 + 0: JS_STRING_LITERAL@8734..8738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8738..8739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8739..8743 + 0: JS_STRING_LITERAL@8739..8743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8743..8744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8744..8748 + 0: JS_STRING_LITERAL@8744..8748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8748..8749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8749..8753 + 0: JS_STRING_LITERAL@8749..8753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8753..8754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8754..8758 + 0: JS_STRING_LITERAL@8754..8758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8758..8759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8759..8763 + 0: JS_STRING_LITERAL@8759..8763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8763..8764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8764..8768 + 0: JS_STRING_LITERAL@8764..8768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8768..8769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8769..8773 + 0: JS_STRING_LITERAL@8769..8773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8773..8774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8774..8778 + 0: JS_STRING_LITERAL@8774..8778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8778..8779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8779..8783 + 0: JS_STRING_LITERAL@8779..8783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8783..8784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8784..8788 + 0: JS_STRING_LITERAL@8784..8788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8788..8789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8789..8793 + 0: JS_STRING_LITERAL@8789..8793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8793..8794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8794..8798 + 0: JS_STRING_LITERAL@8794..8798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8798..8799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8799..8803 + 0: JS_STRING_LITERAL@8799..8803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8803..8804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8804..8808 + 0: JS_STRING_LITERAL@8804..8808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8808..8809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8809..8813 + 0: JS_STRING_LITERAL@8809..8813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8813..8814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8814..8818 + 0: JS_STRING_LITERAL@8814..8818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8818..8819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8819..8823 + 0: JS_STRING_LITERAL@8819..8823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8823..8824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8824..8828 + 0: JS_STRING_LITERAL@8824..8828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8828..8829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8829..8833 + 0: JS_STRING_LITERAL@8829..8833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8833..8834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8834..8838 + 0: JS_STRING_LITERAL@8834..8838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8838..8839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8839..8843 + 0: JS_STRING_LITERAL@8839..8843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8843..8844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8844..8848 + 0: JS_STRING_LITERAL@8844..8848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8848..8849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8849..8853 + 0: JS_STRING_LITERAL@8849..8853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8853..8854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8854..8858 + 0: JS_STRING_LITERAL@8854..8858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8858..8859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8859..8863 + 0: JS_STRING_LITERAL@8859..8863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8863..8864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8864..8868 + 0: JS_STRING_LITERAL@8864..8868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8868..8869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8869..8873 + 0: JS_STRING_LITERAL@8869..8873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8873..8874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8874..8878 + 0: JS_STRING_LITERAL@8874..8878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8878..8879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8879..8883 + 0: JS_STRING_LITERAL@8879..8883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8883..8884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8884..8888 + 0: JS_STRING_LITERAL@8884..8888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8888..8889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8889..8893 + 0: JS_STRING_LITERAL@8889..8893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8893..8894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8894..8898 + 0: JS_STRING_LITERAL@8894..8898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8898..8899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8899..8903 + 0: JS_STRING_LITERAL@8899..8903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8903..8904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8904..8908 + 0: JS_STRING_LITERAL@8904..8908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8908..8909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8909..8913 + 0: JS_STRING_LITERAL@8909..8913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8913..8914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8914..8918 + 0: JS_STRING_LITERAL@8914..8918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8918..8919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8919..8923 + 0: JS_STRING_LITERAL@8919..8923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8923..8924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8924..8928 + 0: JS_STRING_LITERAL@8924..8928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8928..8929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8929..8933 + 0: JS_STRING_LITERAL@8929..8933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8933..8934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8934..8938 + 0: JS_STRING_LITERAL@8934..8938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8938..8939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8939..8943 + 0: JS_STRING_LITERAL@8939..8943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8943..8944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8944..8948 + 0: JS_STRING_LITERAL@8944..8948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8948..8949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8949..8953 + 0: JS_STRING_LITERAL@8949..8953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8953..8954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8954..8958 + 0: JS_STRING_LITERAL@8954..8958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8958..8959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8959..8963 + 0: JS_STRING_LITERAL@8959..8963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8963..8964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8964..8968 + 0: JS_STRING_LITERAL@8964..8968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8968..8969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8969..8973 + 0: JS_STRING_LITERAL@8969..8973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8973..8974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8974..8978 + 0: JS_STRING_LITERAL@8974..8978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8978..8979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8979..8983 + 0: JS_STRING_LITERAL@8979..8983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8983..8984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8984..8988 + 0: JS_STRING_LITERAL@8984..8988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8988..8989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8989..8993 + 0: JS_STRING_LITERAL@8989..8993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8993..8994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8994..8998 + 0: JS_STRING_LITERAL@8994..8998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@8998..8999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@8999..9003 + 0: JS_STRING_LITERAL@8999..9003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9003..9004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9004..9008 + 0: JS_STRING_LITERAL@9004..9008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9008..9009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9009..9013 + 0: JS_STRING_LITERAL@9009..9013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9013..9014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9014..9018 + 0: JS_STRING_LITERAL@9014..9018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9018..9019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9019..9023 + 0: JS_STRING_LITERAL@9019..9023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9023..9024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9024..9028 + 0: JS_STRING_LITERAL@9024..9028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9028..9029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9029..9033 + 0: JS_STRING_LITERAL@9029..9033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9033..9034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9034..9038 + 0: JS_STRING_LITERAL@9034..9038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9038..9039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9039..9043 + 0: JS_STRING_LITERAL@9039..9043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9043..9044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9044..9048 + 0: JS_STRING_LITERAL@9044..9048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9048..9049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9049..9053 + 0: JS_STRING_LITERAL@9049..9053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9053..9054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9054..9058 + 0: JS_STRING_LITERAL@9054..9058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9058..9059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9059..9063 + 0: JS_STRING_LITERAL@9059..9063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9063..9064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9064..9068 + 0: JS_STRING_LITERAL@9064..9068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9068..9069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9069..9073 + 0: JS_STRING_LITERAL@9069..9073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9073..9074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9074..9078 + 0: JS_STRING_LITERAL@9074..9078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9078..9079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9079..9083 + 0: JS_STRING_LITERAL@9079..9083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9083..9084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9084..9088 + 0: JS_STRING_LITERAL@9084..9088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9088..9089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9089..9093 + 0: JS_STRING_LITERAL@9089..9093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9093..9094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9094..9098 + 0: JS_STRING_LITERAL@9094..9098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9098..9099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9099..9103 + 0: JS_STRING_LITERAL@9099..9103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9103..9104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9104..9108 + 0: JS_STRING_LITERAL@9104..9108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9108..9109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9109..9113 + 0: JS_STRING_LITERAL@9109..9113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9113..9114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9114..9118 + 0: JS_STRING_LITERAL@9114..9118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9118..9119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9119..9123 + 0: JS_STRING_LITERAL@9119..9123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9123..9124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9124..9128 + 0: JS_STRING_LITERAL@9124..9128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9128..9129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9129..9133 + 0: JS_STRING_LITERAL@9129..9133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9133..9134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9134..9138 + 0: JS_STRING_LITERAL@9134..9138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9138..9139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9139..9143 + 0: JS_STRING_LITERAL@9139..9143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9143..9144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9144..9148 + 0: JS_STRING_LITERAL@9144..9148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9148..9149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9149..9153 + 0: JS_STRING_LITERAL@9149..9153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9153..9154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9154..9158 + 0: JS_STRING_LITERAL@9154..9158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9158..9159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9159..9163 + 0: JS_STRING_LITERAL@9159..9163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9163..9164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9164..9168 + 0: JS_STRING_LITERAL@9164..9168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9168..9169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9169..9173 + 0: JS_STRING_LITERAL@9169..9173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9173..9174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9174..9178 + 0: JS_STRING_LITERAL@9174..9178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9178..9179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9179..9183 + 0: JS_STRING_LITERAL@9179..9183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9183..9184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9184..9188 + 0: JS_STRING_LITERAL@9184..9188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9188..9189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9189..9193 + 0: JS_STRING_LITERAL@9189..9193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9193..9194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9194..9198 + 0: JS_STRING_LITERAL@9194..9198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9198..9199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9199..9203 + 0: JS_STRING_LITERAL@9199..9203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9203..9204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9204..9208 + 0: JS_STRING_LITERAL@9204..9208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9208..9209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9209..9213 + 0: JS_STRING_LITERAL@9209..9213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9213..9214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9214..9218 + 0: JS_STRING_LITERAL@9214..9218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9218..9219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9219..9223 + 0: JS_STRING_LITERAL@9219..9223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9223..9224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9224..9228 + 0: JS_STRING_LITERAL@9224..9228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9228..9229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9229..9233 + 0: JS_STRING_LITERAL@9229..9233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9233..9234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9234..9238 + 0: JS_STRING_LITERAL@9234..9238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9238..9239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9239..9243 + 0: JS_STRING_LITERAL@9239..9243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9243..9244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9244..9248 + 0: JS_STRING_LITERAL@9244..9248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9248..9249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9249..9253 + 0: JS_STRING_LITERAL@9249..9253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9253..9254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9254..9258 + 0: JS_STRING_LITERAL@9254..9258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9258..9259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9259..9263 + 0: JS_STRING_LITERAL@9259..9263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9263..9264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9264..9268 + 0: JS_STRING_LITERAL@9264..9268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9268..9269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9269..9273 + 0: JS_STRING_LITERAL@9269..9273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9273..9274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9274..9278 + 0: JS_STRING_LITERAL@9274..9278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9278..9279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9279..9283 + 0: JS_STRING_LITERAL@9279..9283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9283..9284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9284..9288 + 0: JS_STRING_LITERAL@9284..9288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9288..9289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9289..9293 + 0: JS_STRING_LITERAL@9289..9293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9293..9294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9294..9298 + 0: JS_STRING_LITERAL@9294..9298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9298..9299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9299..9303 + 0: JS_STRING_LITERAL@9299..9303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9303..9304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9304..9308 + 0: JS_STRING_LITERAL@9304..9308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9308..9309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9309..9313 + 0: JS_STRING_LITERAL@9309..9313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9313..9314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9314..9318 + 0: JS_STRING_LITERAL@9314..9318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9318..9319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9319..9323 + 0: JS_STRING_LITERAL@9319..9323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9323..9324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9324..9328 + 0: JS_STRING_LITERAL@9324..9328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9328..9329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9329..9333 + 0: JS_STRING_LITERAL@9329..9333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9333..9334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9334..9338 + 0: JS_STRING_LITERAL@9334..9338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9338..9339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9339..9343 + 0: JS_STRING_LITERAL@9339..9343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9343..9344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9344..9348 + 0: JS_STRING_LITERAL@9344..9348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9348..9349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9349..9353 + 0: JS_STRING_LITERAL@9349..9353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9353..9354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9354..9358 + 0: JS_STRING_LITERAL@9354..9358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9358..9359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9359..9363 + 0: JS_STRING_LITERAL@9359..9363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9363..9364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9364..9368 + 0: JS_STRING_LITERAL@9364..9368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9368..9369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9369..9373 + 0: JS_STRING_LITERAL@9369..9373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9373..9374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9374..9378 + 0: JS_STRING_LITERAL@9374..9378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9378..9379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9379..9383 + 0: JS_STRING_LITERAL@9379..9383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9383..9384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9384..9388 + 0: JS_STRING_LITERAL@9384..9388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9388..9389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9389..9393 + 0: JS_STRING_LITERAL@9389..9393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9393..9394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9394..9398 + 0: JS_STRING_LITERAL@9394..9398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9398..9399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9399..9403 + 0: JS_STRING_LITERAL@9399..9403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9403..9404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9404..9408 + 0: JS_STRING_LITERAL@9404..9408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9408..9409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9409..9413 + 0: JS_STRING_LITERAL@9409..9413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9413..9414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9414..9418 + 0: JS_STRING_LITERAL@9414..9418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9418..9419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9419..9423 + 0: JS_STRING_LITERAL@9419..9423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9423..9424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9424..9428 + 0: JS_STRING_LITERAL@9424..9428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9428..9429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9429..9433 + 0: JS_STRING_LITERAL@9429..9433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9433..9434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9434..9438 + 0: JS_STRING_LITERAL@9434..9438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9438..9439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9439..9443 + 0: JS_STRING_LITERAL@9439..9443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9443..9444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9444..9448 + 0: JS_STRING_LITERAL@9444..9448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9448..9449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9449..9453 + 0: JS_STRING_LITERAL@9449..9453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9453..9454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9454..9458 + 0: JS_STRING_LITERAL@9454..9458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9458..9459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9459..9463 + 0: JS_STRING_LITERAL@9459..9463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9463..9464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9464..9468 + 0: JS_STRING_LITERAL@9464..9468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9468..9469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9469..9473 + 0: JS_STRING_LITERAL@9469..9473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9473..9474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9474..9478 + 0: JS_STRING_LITERAL@9474..9478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9478..9479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9479..9483 + 0: JS_STRING_LITERAL@9479..9483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9483..9484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9484..9488 + 0: JS_STRING_LITERAL@9484..9488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9488..9489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9489..9493 + 0: JS_STRING_LITERAL@9489..9493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9493..9494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9494..9498 + 0: JS_STRING_LITERAL@9494..9498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9498..9499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9499..9503 + 0: JS_STRING_LITERAL@9499..9503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9503..9504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9504..9508 + 0: JS_STRING_LITERAL@9504..9508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9508..9509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9509..9513 + 0: JS_STRING_LITERAL@9509..9513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9513..9514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9514..9518 + 0: JS_STRING_LITERAL@9514..9518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9518..9519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9519..9523 + 0: JS_STRING_LITERAL@9519..9523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9523..9524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9524..9528 + 0: JS_STRING_LITERAL@9524..9528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9528..9529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9529..9533 + 0: JS_STRING_LITERAL@9529..9533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9533..9534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9534..9538 + 0: JS_STRING_LITERAL@9534..9538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9538..9539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9539..9543 + 0: JS_STRING_LITERAL@9539..9543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9543..9544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9544..9548 + 0: JS_STRING_LITERAL@9544..9548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9548..9549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9549..9553 + 0: JS_STRING_LITERAL@9549..9553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9553..9554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9554..9558 + 0: JS_STRING_LITERAL@9554..9558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9558..9559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9559..9563 + 0: JS_STRING_LITERAL@9559..9563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9563..9564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9564..9568 + 0: JS_STRING_LITERAL@9564..9568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9568..9569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9569..9573 + 0: JS_STRING_LITERAL@9569..9573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9573..9574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9574..9578 + 0: JS_STRING_LITERAL@9574..9578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9578..9579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9579..9583 + 0: JS_STRING_LITERAL@9579..9583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9583..9584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9584..9588 + 0: JS_STRING_LITERAL@9584..9588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9588..9589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9589..9593 + 0: JS_STRING_LITERAL@9589..9593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9593..9594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9594..9598 + 0: JS_STRING_LITERAL@9594..9598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9598..9599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9599..9603 + 0: JS_STRING_LITERAL@9599..9603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9603..9604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9604..9608 + 0: JS_STRING_LITERAL@9604..9608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9608..9609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9609..9613 + 0: JS_STRING_LITERAL@9609..9613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9613..9614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9614..9618 + 0: JS_STRING_LITERAL@9614..9618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9618..9619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9619..9623 + 0: JS_STRING_LITERAL@9619..9623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9623..9624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9624..9628 + 0: JS_STRING_LITERAL@9624..9628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9628..9629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9629..9633 + 0: JS_STRING_LITERAL@9629..9633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9633..9634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9634..9638 + 0: JS_STRING_LITERAL@9634..9638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9638..9639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9639..9643 + 0: JS_STRING_LITERAL@9639..9643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9643..9644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9644..9648 + 0: JS_STRING_LITERAL@9644..9648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9648..9649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9649..9653 + 0: JS_STRING_LITERAL@9649..9653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9653..9654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9654..9658 + 0: JS_STRING_LITERAL@9654..9658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9658..9659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9659..9663 + 0: JS_STRING_LITERAL@9659..9663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9663..9664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9664..9668 + 0: JS_STRING_LITERAL@9664..9668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9668..9669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9669..9673 + 0: JS_STRING_LITERAL@9669..9673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9673..9674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9674..9678 + 0: JS_STRING_LITERAL@9674..9678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9678..9679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9679..9683 + 0: JS_STRING_LITERAL@9679..9683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9683..9684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9684..9688 + 0: JS_STRING_LITERAL@9684..9688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9688..9689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9689..9693 + 0: JS_STRING_LITERAL@9689..9693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9693..9694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9694..9698 + 0: JS_STRING_LITERAL@9694..9698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9698..9699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9699..9703 + 0: JS_STRING_LITERAL@9699..9703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9703..9704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9704..9708 + 0: JS_STRING_LITERAL@9704..9708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9708..9709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9709..9713 + 0: JS_STRING_LITERAL@9709..9713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9713..9714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9714..9718 + 0: JS_STRING_LITERAL@9714..9718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9718..9719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9719..9723 + 0: JS_STRING_LITERAL@9719..9723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9723..9724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9724..9728 + 0: JS_STRING_LITERAL@9724..9728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9728..9729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9729..9733 + 0: JS_STRING_LITERAL@9729..9733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9733..9734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9734..9738 + 0: JS_STRING_LITERAL@9734..9738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9738..9739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9739..9743 + 0: JS_STRING_LITERAL@9739..9743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9743..9744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9744..9748 + 0: JS_STRING_LITERAL@9744..9748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9748..9749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9749..9753 + 0: JS_STRING_LITERAL@9749..9753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9753..9754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9754..9758 + 0: JS_STRING_LITERAL@9754..9758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9758..9759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9759..9763 + 0: JS_STRING_LITERAL@9759..9763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9763..9764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9764..9768 + 0: JS_STRING_LITERAL@9764..9768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9768..9769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9769..9773 + 0: JS_STRING_LITERAL@9769..9773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9773..9774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9774..9778 + 0: JS_STRING_LITERAL@9774..9778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9778..9779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9779..9783 + 0: JS_STRING_LITERAL@9779..9783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9783..9784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9784..9788 + 0: JS_STRING_LITERAL@9784..9788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9788..9789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9789..9793 + 0: JS_STRING_LITERAL@9789..9793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9793..9794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9794..9798 + 0: JS_STRING_LITERAL@9794..9798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9798..9799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9799..9803 + 0: JS_STRING_LITERAL@9799..9803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9803..9804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9804..9808 + 0: JS_STRING_LITERAL@9804..9808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9808..9809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9809..9813 + 0: JS_STRING_LITERAL@9809..9813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9813..9814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9814..9818 + 0: JS_STRING_LITERAL@9814..9818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9818..9819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9819..9823 + 0: JS_STRING_LITERAL@9819..9823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9823..9824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9824..9828 + 0: JS_STRING_LITERAL@9824..9828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9828..9829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9829..9833 + 0: JS_STRING_LITERAL@9829..9833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9833..9834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9834..9838 + 0: JS_STRING_LITERAL@9834..9838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9838..9839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9839..9843 + 0: JS_STRING_LITERAL@9839..9843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9843..9844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9844..9848 + 0: JS_STRING_LITERAL@9844..9848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9848..9849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9849..9853 + 0: JS_STRING_LITERAL@9849..9853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9853..9854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9854..9858 + 0: JS_STRING_LITERAL@9854..9858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9858..9859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9859..9863 + 0: JS_STRING_LITERAL@9859..9863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9863..9864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9864..9868 + 0: JS_STRING_LITERAL@9864..9868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9868..9869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9869..9873 + 0: JS_STRING_LITERAL@9869..9873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9873..9874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9874..9878 + 0: JS_STRING_LITERAL@9874..9878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9878..9879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9879..9883 + 0: JS_STRING_LITERAL@9879..9883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9883..9884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9884..9888 + 0: JS_STRING_LITERAL@9884..9888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9888..9889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9889..9893 + 0: JS_STRING_LITERAL@9889..9893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9893..9894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9894..9898 + 0: JS_STRING_LITERAL@9894..9898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9898..9899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9899..9903 + 0: JS_STRING_LITERAL@9899..9903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9903..9904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9904..9908 + 0: JS_STRING_LITERAL@9904..9908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9908..9909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9909..9913 + 0: JS_STRING_LITERAL@9909..9913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9913..9914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9914..9918 + 0: JS_STRING_LITERAL@9914..9918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9918..9919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9919..9923 + 0: JS_STRING_LITERAL@9919..9923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9923..9924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9924..9928 + 0: JS_STRING_LITERAL@9924..9928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9928..9929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9929..9933 + 0: JS_STRING_LITERAL@9929..9933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9933..9934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9934..9938 + 0: JS_STRING_LITERAL@9934..9938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9938..9939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9939..9943 + 0: JS_STRING_LITERAL@9939..9943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9943..9944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9944..9948 + 0: JS_STRING_LITERAL@9944..9948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9948..9949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9949..9953 + 0: JS_STRING_LITERAL@9949..9953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9953..9954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9954..9958 + 0: JS_STRING_LITERAL@9954..9958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9958..9959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9959..9963 + 0: JS_STRING_LITERAL@9959..9963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9963..9964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9964..9968 + 0: JS_STRING_LITERAL@9964..9968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9968..9969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9969..9973 + 0: JS_STRING_LITERAL@9969..9973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9973..9974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9974..9978 + 0: JS_STRING_LITERAL@9974..9978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9978..9979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9979..9983 + 0: JS_STRING_LITERAL@9979..9983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9983..9984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9984..9988 + 0: JS_STRING_LITERAL@9984..9988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9988..9989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9989..9993 + 0: JS_STRING_LITERAL@9989..9993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9993..9994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9994..9998 + 0: JS_STRING_LITERAL@9994..9998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@9998..9999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@9999..10003 + 0: JS_STRING_LITERAL@9999..10003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10003..10004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10004..10008 + 0: JS_STRING_LITERAL@10004..10008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10008..10009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10009..10013 + 0: JS_STRING_LITERAL@10009..10013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10013..10014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10014..10018 + 0: JS_STRING_LITERAL@10014..10018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10018..10019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10019..10023 + 0: JS_STRING_LITERAL@10019..10023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10023..10024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10024..10028 + 0: JS_STRING_LITERAL@10024..10028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10028..10029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10029..10033 + 0: JS_STRING_LITERAL@10029..10033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10033..10034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10034..10038 + 0: JS_STRING_LITERAL@10034..10038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10038..10039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10039..10043 + 0: JS_STRING_LITERAL@10039..10043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10043..10044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10044..10048 + 0: JS_STRING_LITERAL@10044..10048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10048..10049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10049..10053 + 0: JS_STRING_LITERAL@10049..10053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10053..10054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10054..10058 + 0: JS_STRING_LITERAL@10054..10058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10058..10059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10059..10063 + 0: JS_STRING_LITERAL@10059..10063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10063..10064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10064..10068 + 0: JS_STRING_LITERAL@10064..10068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10068..10069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10069..10073 + 0: JS_STRING_LITERAL@10069..10073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10073..10074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10074..10078 + 0: JS_STRING_LITERAL@10074..10078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10078..10079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10079..10083 + 0: JS_STRING_LITERAL@10079..10083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10083..10084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10084..10088 + 0: JS_STRING_LITERAL@10084..10088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10088..10089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10089..10093 + 0: JS_STRING_LITERAL@10089..10093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10093..10094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10094..10098 + 0: JS_STRING_LITERAL@10094..10098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10098..10099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10099..10103 + 0: JS_STRING_LITERAL@10099..10103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10103..10104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10104..10108 + 0: JS_STRING_LITERAL@10104..10108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10108..10109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10109..10113 + 0: JS_STRING_LITERAL@10109..10113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10113..10114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10114..10118 + 0: JS_STRING_LITERAL@10114..10118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10118..10119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10119..10123 + 0: JS_STRING_LITERAL@10119..10123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10123..10124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10124..10128 + 0: JS_STRING_LITERAL@10124..10128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10128..10129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10129..10133 + 0: JS_STRING_LITERAL@10129..10133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10133..10134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10134..10138 + 0: JS_STRING_LITERAL@10134..10138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10138..10139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10139..10143 + 0: JS_STRING_LITERAL@10139..10143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10143..10144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10144..10148 + 0: JS_STRING_LITERAL@10144..10148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10148..10149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10149..10153 + 0: JS_STRING_LITERAL@10149..10153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10153..10154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10154..10158 + 0: JS_STRING_LITERAL@10154..10158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10158..10159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10159..10163 + 0: JS_STRING_LITERAL@10159..10163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10163..10164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10164..10168 + 0: JS_STRING_LITERAL@10164..10168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10168..10169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10169..10173 + 0: JS_STRING_LITERAL@10169..10173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10173..10174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10174..10178 + 0: JS_STRING_LITERAL@10174..10178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10178..10179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10179..10183 + 0: JS_STRING_LITERAL@10179..10183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10183..10184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10184..10188 + 0: JS_STRING_LITERAL@10184..10188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10188..10189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10189..10193 + 0: JS_STRING_LITERAL@10189..10193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10193..10194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10194..10198 + 0: JS_STRING_LITERAL@10194..10198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10198..10199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10199..10203 + 0: JS_STRING_LITERAL@10199..10203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10203..10204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10204..10208 + 0: JS_STRING_LITERAL@10204..10208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10208..10209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10209..10213 + 0: JS_STRING_LITERAL@10209..10213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10213..10214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10214..10218 + 0: JS_STRING_LITERAL@10214..10218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10218..10219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10219..10223 + 0: JS_STRING_LITERAL@10219..10223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10223..10224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10224..10228 + 0: JS_STRING_LITERAL@10224..10228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10228..10229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10229..10233 + 0: JS_STRING_LITERAL@10229..10233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10233..10234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10234..10238 + 0: JS_STRING_LITERAL@10234..10238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10238..10239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10239..10243 + 0: JS_STRING_LITERAL@10239..10243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10243..10244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10244..10248 + 0: JS_STRING_LITERAL@10244..10248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10248..10249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10249..10253 + 0: JS_STRING_LITERAL@10249..10253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10253..10254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10254..10258 + 0: JS_STRING_LITERAL@10254..10258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10258..10259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10259..10263 + 0: JS_STRING_LITERAL@10259..10263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10263..10264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10264..10268 + 0: JS_STRING_LITERAL@10264..10268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10268..10269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10269..10273 + 0: JS_STRING_LITERAL@10269..10273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10273..10274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10274..10278 + 0: JS_STRING_LITERAL@10274..10278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10278..10279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10279..10283 + 0: JS_STRING_LITERAL@10279..10283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10283..10284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10284..10288 + 0: JS_STRING_LITERAL@10284..10288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10288..10289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10289..10293 + 0: JS_STRING_LITERAL@10289..10293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10293..10294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10294..10298 + 0: JS_STRING_LITERAL@10294..10298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10298..10299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10299..10303 + 0: JS_STRING_LITERAL@10299..10303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10303..10304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10304..10308 + 0: JS_STRING_LITERAL@10304..10308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10308..10309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10309..10313 + 0: JS_STRING_LITERAL@10309..10313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10313..10314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10314..10318 + 0: JS_STRING_LITERAL@10314..10318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10318..10319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10319..10323 + 0: JS_STRING_LITERAL@10319..10323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10323..10324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10324..10328 + 0: JS_STRING_LITERAL@10324..10328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10328..10329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10329..10333 + 0: JS_STRING_LITERAL@10329..10333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10333..10334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10334..10338 + 0: JS_STRING_LITERAL@10334..10338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10338..10339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10339..10343 + 0: JS_STRING_LITERAL@10339..10343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10343..10344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10344..10348 + 0: JS_STRING_LITERAL@10344..10348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10348..10349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10349..10353 + 0: JS_STRING_LITERAL@10349..10353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10353..10354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10354..10358 + 0: JS_STRING_LITERAL@10354..10358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10358..10359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10359..10363 + 0: JS_STRING_LITERAL@10359..10363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10363..10364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10364..10368 + 0: JS_STRING_LITERAL@10364..10368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10368..10369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10369..10373 + 0: JS_STRING_LITERAL@10369..10373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10373..10374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10374..10378 + 0: JS_STRING_LITERAL@10374..10378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10378..10379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10379..10383 + 0: JS_STRING_LITERAL@10379..10383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10383..10384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10384..10388 + 0: JS_STRING_LITERAL@10384..10388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10388..10389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10389..10393 + 0: JS_STRING_LITERAL@10389..10393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10393..10394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10394..10398 + 0: JS_STRING_LITERAL@10394..10398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10398..10399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10399..10403 + 0: JS_STRING_LITERAL@10399..10403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10403..10404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10404..10408 + 0: JS_STRING_LITERAL@10404..10408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10408..10409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10409..10413 + 0: JS_STRING_LITERAL@10409..10413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10413..10414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10414..10418 + 0: JS_STRING_LITERAL@10414..10418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10418..10419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10419..10423 + 0: JS_STRING_LITERAL@10419..10423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10423..10424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10424..10428 + 0: JS_STRING_LITERAL@10424..10428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10428..10429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10429..10433 + 0: JS_STRING_LITERAL@10429..10433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10433..10434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10434..10438 + 0: JS_STRING_LITERAL@10434..10438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10438..10439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10439..10443 + 0: JS_STRING_LITERAL@10439..10443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10443..10444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10444..10448 + 0: JS_STRING_LITERAL@10444..10448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10448..10449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10449..10453 + 0: JS_STRING_LITERAL@10449..10453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10453..10454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10454..10458 + 0: JS_STRING_LITERAL@10454..10458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10458..10459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10459..10463 + 0: JS_STRING_LITERAL@10459..10463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10463..10464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10464..10468 + 0: JS_STRING_LITERAL@10464..10468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10468..10469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10469..10473 + 0: JS_STRING_LITERAL@10469..10473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10473..10474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10474..10478 + 0: JS_STRING_LITERAL@10474..10478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10478..10479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10479..10483 + 0: JS_STRING_LITERAL@10479..10483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10483..10484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10484..10488 + 0: JS_STRING_LITERAL@10484..10488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10488..10489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10489..10493 + 0: JS_STRING_LITERAL@10489..10493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10493..10494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10494..10498 + 0: JS_STRING_LITERAL@10494..10498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10498..10499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10499..10503 + 0: JS_STRING_LITERAL@10499..10503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10503..10504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10504..10508 + 0: JS_STRING_LITERAL@10504..10508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10508..10509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10509..10513 + 0: JS_STRING_LITERAL@10509..10513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10513..10514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10514..10518 + 0: JS_STRING_LITERAL@10514..10518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10518..10519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10519..10523 + 0: JS_STRING_LITERAL@10519..10523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10523..10524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10524..10528 + 0: JS_STRING_LITERAL@10524..10528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10528..10529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10529..10533 + 0: JS_STRING_LITERAL@10529..10533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10533..10534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10534..10538 + 0: JS_STRING_LITERAL@10534..10538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10538..10539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10539..10543 + 0: JS_STRING_LITERAL@10539..10543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10543..10544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10544..10548 + 0: JS_STRING_LITERAL@10544..10548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10548..10549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10549..10553 + 0: JS_STRING_LITERAL@10549..10553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10553..10554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10554..10558 + 0: JS_STRING_LITERAL@10554..10558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10558..10559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10559..10563 + 0: JS_STRING_LITERAL@10559..10563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10563..10564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10564..10568 + 0: JS_STRING_LITERAL@10564..10568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10568..10569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10569..10573 + 0: JS_STRING_LITERAL@10569..10573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10573..10574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10574..10578 + 0: JS_STRING_LITERAL@10574..10578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10578..10579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10579..10583 + 0: JS_STRING_LITERAL@10579..10583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10583..10584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10584..10588 + 0: JS_STRING_LITERAL@10584..10588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10588..10589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10589..10593 + 0: JS_STRING_LITERAL@10589..10593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10593..10594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10594..10598 + 0: JS_STRING_LITERAL@10594..10598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10598..10599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10599..10603 + 0: JS_STRING_LITERAL@10599..10603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10603..10604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10604..10608 + 0: JS_STRING_LITERAL@10604..10608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10608..10609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10609..10613 + 0: JS_STRING_LITERAL@10609..10613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10613..10614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10614..10618 + 0: JS_STRING_LITERAL@10614..10618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10618..10619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10619..10623 + 0: JS_STRING_LITERAL@10619..10623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10623..10624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10624..10628 + 0: JS_STRING_LITERAL@10624..10628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10628..10629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10629..10633 + 0: JS_STRING_LITERAL@10629..10633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10633..10634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10634..10638 + 0: JS_STRING_LITERAL@10634..10638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10638..10639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10639..10643 + 0: JS_STRING_LITERAL@10639..10643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10643..10644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10644..10648 + 0: JS_STRING_LITERAL@10644..10648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10648..10649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10649..10653 + 0: JS_STRING_LITERAL@10649..10653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10653..10654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10654..10658 + 0: JS_STRING_LITERAL@10654..10658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10658..10659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10659..10663 + 0: JS_STRING_LITERAL@10659..10663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10663..10664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10664..10668 + 0: JS_STRING_LITERAL@10664..10668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10668..10669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10669..10673 + 0: JS_STRING_LITERAL@10669..10673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10673..10674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10674..10678 + 0: JS_STRING_LITERAL@10674..10678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10678..10679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10679..10683 + 0: JS_STRING_LITERAL@10679..10683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10683..10684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10684..10688 + 0: JS_STRING_LITERAL@10684..10688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10688..10689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10689..10693 + 0: JS_STRING_LITERAL@10689..10693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10693..10694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10694..10698 + 0: JS_STRING_LITERAL@10694..10698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10698..10699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10699..10703 + 0: JS_STRING_LITERAL@10699..10703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10703..10704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10704..10708 + 0: JS_STRING_LITERAL@10704..10708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10708..10709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10709..10713 + 0: JS_STRING_LITERAL@10709..10713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10713..10714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10714..10718 + 0: JS_STRING_LITERAL@10714..10718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10718..10719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10719..10723 + 0: JS_STRING_LITERAL@10719..10723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10723..10724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10724..10728 + 0: JS_STRING_LITERAL@10724..10728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10728..10729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10729..10733 + 0: JS_STRING_LITERAL@10729..10733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10733..10734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10734..10738 + 0: JS_STRING_LITERAL@10734..10738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10738..10739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10739..10743 + 0: JS_STRING_LITERAL@10739..10743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10743..10744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10744..10748 + 0: JS_STRING_LITERAL@10744..10748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10748..10749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10749..10753 + 0: JS_STRING_LITERAL@10749..10753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10753..10754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10754..10758 + 0: JS_STRING_LITERAL@10754..10758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10758..10759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10759..10763 + 0: JS_STRING_LITERAL@10759..10763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10763..10764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10764..10768 + 0: JS_STRING_LITERAL@10764..10768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10768..10769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10769..10773 + 0: JS_STRING_LITERAL@10769..10773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10773..10774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10774..10778 + 0: JS_STRING_LITERAL@10774..10778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10778..10779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10779..10783 + 0: JS_STRING_LITERAL@10779..10783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10783..10784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10784..10788 + 0: JS_STRING_LITERAL@10784..10788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10788..10789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10789..10793 + 0: JS_STRING_LITERAL@10789..10793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10793..10794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10794..10798 + 0: JS_STRING_LITERAL@10794..10798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10798..10799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10799..10803 + 0: JS_STRING_LITERAL@10799..10803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10803..10804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10804..10808 + 0: JS_STRING_LITERAL@10804..10808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10808..10809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10809..10813 + 0: JS_STRING_LITERAL@10809..10813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10813..10814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10814..10818 + 0: JS_STRING_LITERAL@10814..10818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10818..10819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10819..10823 + 0: JS_STRING_LITERAL@10819..10823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10823..10824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10824..10828 + 0: JS_STRING_LITERAL@10824..10828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10828..10829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10829..10833 + 0: JS_STRING_LITERAL@10829..10833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10833..10834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10834..10838 + 0: JS_STRING_LITERAL@10834..10838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10838..10839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10839..10843 + 0: JS_STRING_LITERAL@10839..10843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10843..10844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10844..10848 + 0: JS_STRING_LITERAL@10844..10848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10848..10849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10849..10853 + 0: JS_STRING_LITERAL@10849..10853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10853..10854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10854..10858 + 0: JS_STRING_LITERAL@10854..10858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10858..10859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10859..10863 + 0: JS_STRING_LITERAL@10859..10863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10863..10864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10864..10868 + 0: JS_STRING_LITERAL@10864..10868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10868..10869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10869..10873 + 0: JS_STRING_LITERAL@10869..10873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10873..10874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10874..10878 + 0: JS_STRING_LITERAL@10874..10878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10878..10879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10879..10883 + 0: JS_STRING_LITERAL@10879..10883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10883..10884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10884..10888 + 0: JS_STRING_LITERAL@10884..10888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10888..10889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10889..10893 + 0: JS_STRING_LITERAL@10889..10893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10893..10894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10894..10898 + 0: JS_STRING_LITERAL@10894..10898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10898..10899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10899..10903 + 0: JS_STRING_LITERAL@10899..10903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10903..10904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10904..10908 + 0: JS_STRING_LITERAL@10904..10908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10908..10909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10909..10913 + 0: JS_STRING_LITERAL@10909..10913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10913..10914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10914..10918 + 0: JS_STRING_LITERAL@10914..10918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10918..10919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10919..10923 + 0: JS_STRING_LITERAL@10919..10923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10923..10924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10924..10928 + 0: JS_STRING_LITERAL@10924..10928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10928..10929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10929..10933 + 0: JS_STRING_LITERAL@10929..10933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10933..10934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10934..10938 + 0: JS_STRING_LITERAL@10934..10938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10938..10939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10939..10943 + 0: JS_STRING_LITERAL@10939..10943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10943..10944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10944..10948 + 0: JS_STRING_LITERAL@10944..10948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10948..10949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10949..10953 + 0: JS_STRING_LITERAL@10949..10953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10953..10954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10954..10958 + 0: JS_STRING_LITERAL@10954..10958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10958..10959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10959..10963 + 0: JS_STRING_LITERAL@10959..10963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10963..10964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10964..10968 + 0: JS_STRING_LITERAL@10964..10968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10968..10969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10969..10973 + 0: JS_STRING_LITERAL@10969..10973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10973..10974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10974..10978 + 0: JS_STRING_LITERAL@10974..10978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10978..10979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10979..10983 + 0: JS_STRING_LITERAL@10979..10983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10983..10984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10984..10988 + 0: JS_STRING_LITERAL@10984..10988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10988..10989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10989..10993 + 0: JS_STRING_LITERAL@10989..10993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10993..10994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10994..10998 + 0: JS_STRING_LITERAL@10994..10998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@10998..10999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@10999..11003 + 0: JS_STRING_LITERAL@10999..11003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11003..11004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11004..11008 + 0: JS_STRING_LITERAL@11004..11008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11008..11009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11009..11013 + 0: JS_STRING_LITERAL@11009..11013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11013..11014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11014..11018 + 0: JS_STRING_LITERAL@11014..11018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11018..11019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11019..11023 + 0: JS_STRING_LITERAL@11019..11023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11023..11024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11024..11028 + 0: JS_STRING_LITERAL@11024..11028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11028..11029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11029..11033 + 0: JS_STRING_LITERAL@11029..11033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11033..11034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11034..11038 + 0: JS_STRING_LITERAL@11034..11038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11038..11039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11039..11043 + 0: JS_STRING_LITERAL@11039..11043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11043..11044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11044..11048 + 0: JS_STRING_LITERAL@11044..11048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11048..11049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11049..11053 + 0: JS_STRING_LITERAL@11049..11053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11053..11054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11054..11058 + 0: JS_STRING_LITERAL@11054..11058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11058..11059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11059..11063 + 0: JS_STRING_LITERAL@11059..11063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11063..11064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11064..11068 + 0: JS_STRING_LITERAL@11064..11068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11068..11069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11069..11073 + 0: JS_STRING_LITERAL@11069..11073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11073..11074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11074..11078 + 0: JS_STRING_LITERAL@11074..11078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11078..11079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11079..11083 + 0: JS_STRING_LITERAL@11079..11083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11083..11084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11084..11088 + 0: JS_STRING_LITERAL@11084..11088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11088..11089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11089..11093 + 0: JS_STRING_LITERAL@11089..11093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11093..11094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11094..11098 + 0: JS_STRING_LITERAL@11094..11098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11098..11099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11099..11103 + 0: JS_STRING_LITERAL@11099..11103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11103..11104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11104..11108 + 0: JS_STRING_LITERAL@11104..11108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11108..11109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11109..11113 + 0: JS_STRING_LITERAL@11109..11113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11113..11114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11114..11118 + 0: JS_STRING_LITERAL@11114..11118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11118..11119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11119..11123 + 0: JS_STRING_LITERAL@11119..11123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11123..11124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11124..11128 + 0: JS_STRING_LITERAL@11124..11128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11128..11129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11129..11133 + 0: JS_STRING_LITERAL@11129..11133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11133..11134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11134..11138 + 0: JS_STRING_LITERAL@11134..11138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11138..11139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11139..11143 + 0: JS_STRING_LITERAL@11139..11143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11143..11144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11144..11148 + 0: JS_STRING_LITERAL@11144..11148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11148..11149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11149..11153 + 0: JS_STRING_LITERAL@11149..11153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11153..11154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11154..11158 + 0: JS_STRING_LITERAL@11154..11158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11158..11159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11159..11163 + 0: JS_STRING_LITERAL@11159..11163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11163..11164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11164..11168 + 0: JS_STRING_LITERAL@11164..11168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11168..11169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11169..11173 + 0: JS_STRING_LITERAL@11169..11173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11173..11174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11174..11178 + 0: JS_STRING_LITERAL@11174..11178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11178..11179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11179..11183 + 0: JS_STRING_LITERAL@11179..11183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11183..11184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11184..11188 + 0: JS_STRING_LITERAL@11184..11188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11188..11189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11189..11193 + 0: JS_STRING_LITERAL@11189..11193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11193..11194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11194..11198 + 0: JS_STRING_LITERAL@11194..11198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11198..11199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11199..11203 + 0: JS_STRING_LITERAL@11199..11203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11203..11204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11204..11208 + 0: JS_STRING_LITERAL@11204..11208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11208..11209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11209..11213 + 0: JS_STRING_LITERAL@11209..11213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11213..11214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11214..11218 + 0: JS_STRING_LITERAL@11214..11218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11218..11219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11219..11223 + 0: JS_STRING_LITERAL@11219..11223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11223..11224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11224..11228 + 0: JS_STRING_LITERAL@11224..11228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11228..11229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11229..11233 + 0: JS_STRING_LITERAL@11229..11233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11233..11234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11234..11238 + 0: JS_STRING_LITERAL@11234..11238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11238..11239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11239..11243 + 0: JS_STRING_LITERAL@11239..11243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11243..11244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11244..11248 + 0: JS_STRING_LITERAL@11244..11248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11248..11249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11249..11253 + 0: JS_STRING_LITERAL@11249..11253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11253..11254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11254..11258 + 0: JS_STRING_LITERAL@11254..11258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11258..11259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11259..11263 + 0: JS_STRING_LITERAL@11259..11263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11263..11264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11264..11268 + 0: JS_STRING_LITERAL@11264..11268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11268..11269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11269..11273 + 0: JS_STRING_LITERAL@11269..11273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11273..11274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11274..11278 + 0: JS_STRING_LITERAL@11274..11278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11278..11279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11279..11283 + 0: JS_STRING_LITERAL@11279..11283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11283..11284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11284..11288 + 0: JS_STRING_LITERAL@11284..11288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11288..11289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11289..11293 + 0: JS_STRING_LITERAL@11289..11293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11293..11294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11294..11298 + 0: JS_STRING_LITERAL@11294..11298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11298..11299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11299..11303 + 0: JS_STRING_LITERAL@11299..11303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11303..11304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11304..11308 + 0: JS_STRING_LITERAL@11304..11308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11308..11309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11309..11313 + 0: JS_STRING_LITERAL@11309..11313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11313..11314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11314..11318 + 0: JS_STRING_LITERAL@11314..11318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11318..11319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11319..11323 + 0: JS_STRING_LITERAL@11319..11323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11323..11324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11324..11328 + 0: JS_STRING_LITERAL@11324..11328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11328..11329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11329..11333 + 0: JS_STRING_LITERAL@11329..11333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11333..11334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11334..11338 + 0: JS_STRING_LITERAL@11334..11338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11338..11339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11339..11343 + 0: JS_STRING_LITERAL@11339..11343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11343..11344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11344..11348 + 0: JS_STRING_LITERAL@11344..11348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11348..11349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11349..11353 + 0: JS_STRING_LITERAL@11349..11353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11353..11354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11354..11358 + 0: JS_STRING_LITERAL@11354..11358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11358..11359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11359..11363 + 0: JS_STRING_LITERAL@11359..11363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11363..11364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11364..11368 + 0: JS_STRING_LITERAL@11364..11368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11368..11369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11369..11373 + 0: JS_STRING_LITERAL@11369..11373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11373..11374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11374..11378 + 0: JS_STRING_LITERAL@11374..11378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11378..11379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11379..11383 + 0: JS_STRING_LITERAL@11379..11383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11383..11384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11384..11388 + 0: JS_STRING_LITERAL@11384..11388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11388..11389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11389..11393 + 0: JS_STRING_LITERAL@11389..11393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11393..11394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11394..11398 + 0: JS_STRING_LITERAL@11394..11398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11398..11399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11399..11403 + 0: JS_STRING_LITERAL@11399..11403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11403..11404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11404..11408 + 0: JS_STRING_LITERAL@11404..11408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11408..11409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11409..11413 + 0: JS_STRING_LITERAL@11409..11413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11413..11414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11414..11418 + 0: JS_STRING_LITERAL@11414..11418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11418..11419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11419..11423 + 0: JS_STRING_LITERAL@11419..11423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11423..11424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11424..11428 + 0: JS_STRING_LITERAL@11424..11428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11428..11429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11429..11433 + 0: JS_STRING_LITERAL@11429..11433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11433..11434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11434..11438 + 0: JS_STRING_LITERAL@11434..11438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11438..11439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11439..11443 + 0: JS_STRING_LITERAL@11439..11443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11443..11444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11444..11448 + 0: JS_STRING_LITERAL@11444..11448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11448..11449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11449..11453 + 0: JS_STRING_LITERAL@11449..11453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11453..11454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11454..11458 + 0: JS_STRING_LITERAL@11454..11458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11458..11459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11459..11463 + 0: JS_STRING_LITERAL@11459..11463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11463..11464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11464..11468 + 0: JS_STRING_LITERAL@11464..11468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11468..11469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11469..11473 + 0: JS_STRING_LITERAL@11469..11473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11473..11474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11474..11478 + 0: JS_STRING_LITERAL@11474..11478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11478..11479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11479..11483 + 0: JS_STRING_LITERAL@11479..11483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11483..11484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11484..11488 + 0: JS_STRING_LITERAL@11484..11488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11488..11489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11489..11493 + 0: JS_STRING_LITERAL@11489..11493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11493..11494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11494..11498 + 0: JS_STRING_LITERAL@11494..11498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11498..11499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11499..11503 + 0: JS_STRING_LITERAL@11499..11503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11503..11504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11504..11508 + 0: JS_STRING_LITERAL@11504..11508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11508..11509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11509..11513 + 0: JS_STRING_LITERAL@11509..11513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11513..11514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11514..11518 + 0: JS_STRING_LITERAL@11514..11518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11518..11519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11519..11523 + 0: JS_STRING_LITERAL@11519..11523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11523..11524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11524..11528 + 0: JS_STRING_LITERAL@11524..11528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11528..11529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11529..11533 + 0: JS_STRING_LITERAL@11529..11533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11533..11534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11534..11538 + 0: JS_STRING_LITERAL@11534..11538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11538..11539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11539..11543 + 0: JS_STRING_LITERAL@11539..11543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11543..11544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11544..11548 + 0: JS_STRING_LITERAL@11544..11548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11548..11549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11549..11553 + 0: JS_STRING_LITERAL@11549..11553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11553..11554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11554..11558 + 0: JS_STRING_LITERAL@11554..11558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11558..11559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11559..11563 + 0: JS_STRING_LITERAL@11559..11563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11563..11564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11564..11568 + 0: JS_STRING_LITERAL@11564..11568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11568..11569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11569..11573 + 0: JS_STRING_LITERAL@11569..11573 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11573..11574 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11574..11578 + 0: JS_STRING_LITERAL@11574..11578 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11578..11579 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11579..11583 + 0: JS_STRING_LITERAL@11579..11583 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11583..11584 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11584..11588 + 0: JS_STRING_LITERAL@11584..11588 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11588..11589 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11589..11593 + 0: JS_STRING_LITERAL@11589..11593 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11593..11594 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11594..11598 + 0: JS_STRING_LITERAL@11594..11598 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11598..11599 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11599..11603 + 0: JS_STRING_LITERAL@11599..11603 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11603..11604 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11604..11608 + 0: JS_STRING_LITERAL@11604..11608 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11608..11609 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11609..11613 + 0: JS_STRING_LITERAL@11609..11613 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11613..11614 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11614..11618 + 0: JS_STRING_LITERAL@11614..11618 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11618..11619 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11619..11623 + 0: JS_STRING_LITERAL@11619..11623 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11623..11624 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11624..11628 + 0: JS_STRING_LITERAL@11624..11628 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11628..11629 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11629..11633 + 0: JS_STRING_LITERAL@11629..11633 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11633..11634 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11634..11638 + 0: JS_STRING_LITERAL@11634..11638 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11638..11639 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11639..11643 + 0: JS_STRING_LITERAL@11639..11643 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11643..11644 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11644..11648 + 0: JS_STRING_LITERAL@11644..11648 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11648..11649 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11649..11653 + 0: JS_STRING_LITERAL@11649..11653 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11653..11654 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11654..11658 + 0: JS_STRING_LITERAL@11654..11658 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11658..11659 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11659..11663 + 0: JS_STRING_LITERAL@11659..11663 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11663..11664 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11664..11668 + 0: JS_STRING_LITERAL@11664..11668 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11668..11669 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11669..11673 + 0: JS_STRING_LITERAL@11669..11673 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11673..11674 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11674..11678 + 0: JS_STRING_LITERAL@11674..11678 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11678..11679 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11679..11683 + 0: JS_STRING_LITERAL@11679..11683 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11683..11684 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11684..11688 + 0: JS_STRING_LITERAL@11684..11688 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11688..11689 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11689..11693 + 0: JS_STRING_LITERAL@11689..11693 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11693..11694 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11694..11698 + 0: JS_STRING_LITERAL@11694..11698 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11698..11699 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11699..11703 + 0: JS_STRING_LITERAL@11699..11703 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11703..11704 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11704..11708 + 0: JS_STRING_LITERAL@11704..11708 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11708..11709 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11709..11713 + 0: JS_STRING_LITERAL@11709..11713 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11713..11714 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11714..11718 + 0: JS_STRING_LITERAL@11714..11718 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11718..11719 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11719..11723 + 0: JS_STRING_LITERAL@11719..11723 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11723..11724 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11724..11728 + 0: JS_STRING_LITERAL@11724..11728 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11728..11729 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11729..11733 + 0: JS_STRING_LITERAL@11729..11733 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11733..11734 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11734..11738 + 0: JS_STRING_LITERAL@11734..11738 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11738..11739 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11739..11743 + 0: JS_STRING_LITERAL@11739..11743 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11743..11744 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11744..11748 + 0: JS_STRING_LITERAL@11744..11748 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11748..11749 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11749..11753 + 0: JS_STRING_LITERAL@11749..11753 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11753..11754 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11754..11758 + 0: JS_STRING_LITERAL@11754..11758 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11758..11759 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11759..11763 + 0: JS_STRING_LITERAL@11759..11763 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11763..11764 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11764..11768 + 0: JS_STRING_LITERAL@11764..11768 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11768..11769 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11769..11773 + 0: JS_STRING_LITERAL@11769..11773 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11773..11774 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11774..11778 + 0: JS_STRING_LITERAL@11774..11778 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11778..11779 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11779..11783 + 0: JS_STRING_LITERAL@11779..11783 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11783..11784 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11784..11788 + 0: JS_STRING_LITERAL@11784..11788 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11788..11789 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11789..11793 + 0: JS_STRING_LITERAL@11789..11793 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11793..11794 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11794..11798 + 0: JS_STRING_LITERAL@11794..11798 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11798..11799 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11799..11803 + 0: JS_STRING_LITERAL@11799..11803 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11803..11804 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11804..11808 + 0: JS_STRING_LITERAL@11804..11808 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11808..11809 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11809..11813 + 0: JS_STRING_LITERAL@11809..11813 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11813..11814 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11814..11818 + 0: JS_STRING_LITERAL@11814..11818 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11818..11819 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11819..11823 + 0: JS_STRING_LITERAL@11819..11823 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11823..11824 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11824..11828 + 0: JS_STRING_LITERAL@11824..11828 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11828..11829 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11829..11833 + 0: JS_STRING_LITERAL@11829..11833 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11833..11834 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11834..11838 + 0: JS_STRING_LITERAL@11834..11838 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11838..11839 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11839..11843 + 0: JS_STRING_LITERAL@11839..11843 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11843..11844 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11844..11848 + 0: JS_STRING_LITERAL@11844..11848 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11848..11849 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11849..11853 + 0: JS_STRING_LITERAL@11849..11853 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11853..11854 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11854..11858 + 0: JS_STRING_LITERAL@11854..11858 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11858..11859 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11859..11863 + 0: JS_STRING_LITERAL@11859..11863 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11863..11864 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11864..11868 + 0: JS_STRING_LITERAL@11864..11868 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11868..11869 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11869..11873 + 0: JS_STRING_LITERAL@11869..11873 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11873..11874 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11874..11878 + 0: JS_STRING_LITERAL@11874..11878 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11878..11879 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11879..11883 + 0: JS_STRING_LITERAL@11879..11883 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11883..11884 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11884..11888 + 0: JS_STRING_LITERAL@11884..11888 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11888..11889 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11889..11893 + 0: JS_STRING_LITERAL@11889..11893 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11893..11894 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11894..11898 + 0: JS_STRING_LITERAL@11894..11898 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11898..11899 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11899..11903 + 0: JS_STRING_LITERAL@11899..11903 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11903..11904 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11904..11908 + 0: JS_STRING_LITERAL@11904..11908 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11908..11909 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11909..11913 + 0: JS_STRING_LITERAL@11909..11913 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11913..11914 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11914..11918 + 0: JS_STRING_LITERAL@11914..11918 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11918..11919 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11919..11923 + 0: JS_STRING_LITERAL@11919..11923 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11923..11924 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11924..11928 + 0: JS_STRING_LITERAL@11924..11928 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11928..11929 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11929..11933 + 0: JS_STRING_LITERAL@11929..11933 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11933..11934 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11934..11938 + 0: JS_STRING_LITERAL@11934..11938 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11938..11939 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11939..11943 + 0: JS_STRING_LITERAL@11939..11943 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11943..11944 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11944..11948 + 0: JS_STRING_LITERAL@11944..11948 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11948..11949 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11949..11953 + 0: JS_STRING_LITERAL@11949..11953 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11953..11954 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11954..11958 + 0: JS_STRING_LITERAL@11954..11958 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11958..11959 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11959..11963 + 0: JS_STRING_LITERAL@11959..11963 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11963..11964 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11964..11968 + 0: JS_STRING_LITERAL@11964..11968 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11968..11969 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11969..11973 + 0: JS_STRING_LITERAL@11969..11973 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11973..11974 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11974..11978 + 0: JS_STRING_LITERAL@11974..11978 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11978..11979 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11979..11983 + 0: JS_STRING_LITERAL@11979..11983 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11983..11984 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11984..11988 + 0: JS_STRING_LITERAL@11984..11988 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11988..11989 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11989..11993 + 0: JS_STRING_LITERAL@11989..11993 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11993..11994 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11994..11998 + 0: JS_STRING_LITERAL@11994..11998 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@11998..11999 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@11999..12003 + 0: JS_STRING_LITERAL@11999..12003 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12003..12004 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12004..12008 + 0: JS_STRING_LITERAL@12004..12008 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12008..12009 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12009..12013 + 0: JS_STRING_LITERAL@12009..12013 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12013..12014 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12014..12018 + 0: JS_STRING_LITERAL@12014..12018 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12018..12019 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12019..12023 + 0: JS_STRING_LITERAL@12019..12023 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12023..12024 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12024..12028 + 0: JS_STRING_LITERAL@12024..12028 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12028..12029 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12029..12033 + 0: JS_STRING_LITERAL@12029..12033 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12033..12034 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12034..12038 + 0: JS_STRING_LITERAL@12034..12038 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12038..12039 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12039..12043 + 0: JS_STRING_LITERAL@12039..12043 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12043..12044 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12044..12048 + 0: JS_STRING_LITERAL@12044..12048 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12048..12049 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12049..12053 + 0: JS_STRING_LITERAL@12049..12053 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12053..12054 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12054..12058 + 0: JS_STRING_LITERAL@12054..12058 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12058..12059 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12059..12063 + 0: JS_STRING_LITERAL@12059..12063 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12063..12064 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12064..12068 + 0: JS_STRING_LITERAL@12064..12068 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12068..12069 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12069..12073 + 0: JS_STRING_LITERAL@12069..12073 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12073..12074 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12074..12078 + 0: JS_STRING_LITERAL@12074..12078 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12078..12079 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12079..12083 + 0: JS_STRING_LITERAL@12079..12083 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12083..12084 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12084..12088 + 0: JS_STRING_LITERAL@12084..12088 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12088..12089 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12089..12093 + 0: JS_STRING_LITERAL@12089..12093 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12093..12094 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12094..12098 + 0: JS_STRING_LITERAL@12094..12098 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12098..12099 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12099..12103 + 0: JS_STRING_LITERAL@12099..12103 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12103..12104 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12104..12108 + 0: JS_STRING_LITERAL@12104..12108 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12108..12109 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12109..12113 + 0: JS_STRING_LITERAL@12109..12113 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12113..12114 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12114..12118 + 0: JS_STRING_LITERAL@12114..12118 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12118..12119 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12119..12123 + 0: JS_STRING_LITERAL@12119..12123 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12123..12124 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12124..12128 + 0: JS_STRING_LITERAL@12124..12128 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12128..12129 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12129..12133 + 0: JS_STRING_LITERAL@12129..12133 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12133..12134 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12134..12138 + 0: JS_STRING_LITERAL@12134..12138 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12138..12139 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12139..12143 + 0: JS_STRING_LITERAL@12139..12143 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12143..12144 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12144..12148 + 0: JS_STRING_LITERAL@12144..12148 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12148..12149 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12149..12153 + 0: JS_STRING_LITERAL@12149..12153 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12153..12154 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12154..12158 + 0: JS_STRING_LITERAL@12154..12158 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12158..12159 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12159..12163 + 0: JS_STRING_LITERAL@12159..12163 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12163..12164 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12164..12168 + 0: JS_STRING_LITERAL@12164..12168 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12168..12169 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12169..12173 + 0: JS_STRING_LITERAL@12169..12173 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12173..12174 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12174..12178 + 0: JS_STRING_LITERAL@12174..12178 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12178..12179 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12179..12183 + 0: JS_STRING_LITERAL@12179..12183 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12183..12184 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12184..12188 + 0: JS_STRING_LITERAL@12184..12188 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12188..12189 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12189..12193 + 0: JS_STRING_LITERAL@12189..12193 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12193..12194 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12194..12198 + 0: JS_STRING_LITERAL@12194..12198 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12198..12199 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12199..12203 + 0: JS_STRING_LITERAL@12199..12203 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12203..12204 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12204..12208 + 0: JS_STRING_LITERAL@12204..12208 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12208..12209 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12209..12213 + 0: JS_STRING_LITERAL@12209..12213 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12213..12214 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12214..12218 + 0: JS_STRING_LITERAL@12214..12218 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12218..12219 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12219..12223 + 0: JS_STRING_LITERAL@12219..12223 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12223..12224 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12224..12228 + 0: JS_STRING_LITERAL@12224..12228 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12228..12229 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12229..12233 + 0: JS_STRING_LITERAL@12229..12233 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12233..12234 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12234..12238 + 0: JS_STRING_LITERAL@12234..12238 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12238..12239 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12239..12243 + 0: JS_STRING_LITERAL@12239..12243 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12243..12244 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12244..12248 + 0: JS_STRING_LITERAL@12244..12248 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12248..12249 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12249..12253 + 0: JS_STRING_LITERAL@12249..12253 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12253..12254 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12254..12258 + 0: JS_STRING_LITERAL@12254..12258 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12258..12259 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12259..12263 + 0: JS_STRING_LITERAL@12259..12263 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12263..12264 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12264..12268 + 0: JS_STRING_LITERAL@12264..12268 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12268..12269 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12269..12273 + 0: JS_STRING_LITERAL@12269..12273 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12273..12274 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12274..12278 + 0: JS_STRING_LITERAL@12274..12278 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12278..12279 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12279..12283 + 0: JS_STRING_LITERAL@12279..12283 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12283..12284 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12284..12288 + 0: JS_STRING_LITERAL@12284..12288 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12288..12289 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12289..12293 + 0: JS_STRING_LITERAL@12289..12293 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12293..12294 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12294..12298 + 0: JS_STRING_LITERAL@12294..12298 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12298..12299 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12299..12303 + 0: JS_STRING_LITERAL@12299..12303 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12303..12304 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12304..12308 + 0: JS_STRING_LITERAL@12304..12308 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12308..12309 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12309..12313 + 0: JS_STRING_LITERAL@12309..12313 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12313..12314 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12314..12318 + 0: JS_STRING_LITERAL@12314..12318 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12318..12319 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12319..12323 + 0: JS_STRING_LITERAL@12319..12323 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12323..12324 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12324..12328 + 0: JS_STRING_LITERAL@12324..12328 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12328..12329 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12329..12333 + 0: JS_STRING_LITERAL@12329..12333 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12333..12334 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12334..12338 + 0: JS_STRING_LITERAL@12334..12338 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12338..12339 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12339..12343 + 0: JS_STRING_LITERAL@12339..12343 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12343..12344 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12344..12348 + 0: JS_STRING_LITERAL@12344..12348 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12348..12349 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12349..12353 + 0: JS_STRING_LITERAL@12349..12353 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12353..12354 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12354..12358 + 0: JS_STRING_LITERAL@12354..12358 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12358..12359 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12359..12363 + 0: JS_STRING_LITERAL@12359..12363 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12363..12364 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12364..12368 + 0: JS_STRING_LITERAL@12364..12368 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12368..12369 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12369..12373 + 0: JS_STRING_LITERAL@12369..12373 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12373..12374 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12374..12378 + 0: JS_STRING_LITERAL@12374..12378 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12378..12379 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12379..12383 + 0: JS_STRING_LITERAL@12379..12383 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12383..12384 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12384..12388 + 0: JS_STRING_LITERAL@12384..12388 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12388..12389 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12389..12393 + 0: JS_STRING_LITERAL@12389..12393 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12393..12394 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12394..12398 + 0: JS_STRING_LITERAL@12394..12398 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12398..12399 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12399..12403 + 0: JS_STRING_LITERAL@12399..12403 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12403..12404 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12404..12408 + 0: JS_STRING_LITERAL@12404..12408 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12408..12409 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12409..12413 + 0: JS_STRING_LITERAL@12409..12413 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12413..12414 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12414..12418 + 0: JS_STRING_LITERAL@12414..12418 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12418..12419 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12419..12423 + 0: JS_STRING_LITERAL@12419..12423 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12423..12424 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12424..12428 + 0: JS_STRING_LITERAL@12424..12428 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12428..12429 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12429..12433 + 0: JS_STRING_LITERAL@12429..12433 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12433..12434 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12434..12438 + 0: JS_STRING_LITERAL@12434..12438 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12438..12439 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12439..12443 + 0: JS_STRING_LITERAL@12439..12443 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12443..12444 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12444..12448 + 0: JS_STRING_LITERAL@12444..12448 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12448..12449 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12449..12453 + 0: JS_STRING_LITERAL@12449..12453 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12453..12454 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12454..12458 + 0: JS_STRING_LITERAL@12454..12458 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12458..12459 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12459..12463 + 0: JS_STRING_LITERAL@12459..12463 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12463..12464 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12464..12468 + 0: JS_STRING_LITERAL@12464..12468 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12468..12469 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12469..12473 + 0: JS_STRING_LITERAL@12469..12473 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12473..12474 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12474..12478 + 0: JS_STRING_LITERAL@12474..12478 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12478..12479 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12479..12483 + 0: JS_STRING_LITERAL@12479..12483 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12483..12484 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12484..12488 + 0: JS_STRING_LITERAL@12484..12488 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12488..12489 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12489..12493 + 0: JS_STRING_LITERAL@12489..12493 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12493..12494 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12494..12498 + 0: JS_STRING_LITERAL@12494..12498 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12498..12499 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12499..12503 + 0: JS_STRING_LITERAL@12499..12503 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12503..12504 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12504..12508 + 0: JS_STRING_LITERAL@12504..12508 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12508..12509 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12509..12513 + 0: JS_STRING_LITERAL@12509..12513 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12513..12514 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12514..12518 + 0: JS_STRING_LITERAL@12514..12518 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12518..12519 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12519..12523 + 0: JS_STRING_LITERAL@12519..12523 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12523..12524 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12524..12528 + 0: JS_STRING_LITERAL@12524..12528 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12528..12529 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12529..12533 + 0: JS_STRING_LITERAL@12529..12533 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12533..12534 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12534..12538 + 0: JS_STRING_LITERAL@12534..12538 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12538..12539 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12539..12543 + 0: JS_STRING_LITERAL@12539..12543 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12543..12544 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12544..12548 + 0: JS_STRING_LITERAL@12544..12548 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12548..12549 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12549..12553 + 0: JS_STRING_LITERAL@12549..12553 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12553..12554 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12554..12558 + 0: JS_STRING_LITERAL@12554..12558 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12558..12559 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12559..12563 + 0: JS_STRING_LITERAL@12559..12563 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12563..12564 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12564..12568 + 0: JS_STRING_LITERAL@12564..12568 "''" [Newline("\n")] [Whitespace(" ")] + 1: PLUS@12568..12569 "+" [] [] + 2: JS_STRING_LITERAL_EXPRESSION@12569..12572 + 0: JS_STRING_LITERAL@12569..12572 "''" [Newline("\n")] [] + 1: (empty) + 4: EOF@12572..12573 "" [Newline("\n")] [] + +``` diff --git a/crates/biome_js_syntax/src/generated/nodes.rs b/crates/biome_js_syntax/src/generated/nodes.rs index 62984c3f7661..947f79cb7d42 100644 --- a/crates/biome_js_syntax/src/generated/nodes.rs +++ b/crates/biome_js_syntax/src/generated/nodes.rs @@ -16438,12 +16438,21 @@ impl AstNode for JsAccessorModifier { } impl std::fmt::Debug for JsAccessorModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsAccessorModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsAccessorModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("JsAccessorModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16479,17 +16488,26 @@ impl AstNode for JsArrayAssignmentPattern { } impl std::fmt::Debug for JsArrayAssignmentPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayAssignmentPattern") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("elements", &self.elements()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayAssignmentPattern") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("elements", &self.elements()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsArrayAssignmentPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16525,10 +16543,19 @@ impl AstNode for JsArrayAssignmentPatternElement { } impl std::fmt::Debug for JsArrayAssignmentPatternElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayAssignmentPatternElement") - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field("init", &support::DebugOptionalElement(self.init())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayAssignmentPatternElement") + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field("init", &support::DebugOptionalElement(self.init())) + .finish() + } else { + f.debug_struct("JsArrayAssignmentPatternElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16565,13 +16592,23 @@ impl AstNode for JsArrayAssignmentPatternRestElement { } impl std::fmt::Debug for JsArrayAssignmentPatternRestElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayAssignmentPatternRestElement") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayAssignmentPatternRestElement") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("JsArrayAssignmentPatternRestElement") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16607,17 +16644,26 @@ impl AstNode for JsArrayBindingPattern { } impl std::fmt::Debug for JsArrayBindingPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayBindingPattern") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("elements", &self.elements()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayBindingPattern") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("elements", &self.elements()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsArrayBindingPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16653,10 +16699,19 @@ impl AstNode for JsArrayBindingPatternElement { } impl std::fmt::Debug for JsArrayBindingPatternElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayBindingPatternElement") - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field("init", &support::DebugOptionalElement(self.init())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayBindingPatternElement") + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field("init", &support::DebugOptionalElement(self.init())) + .finish() + } else { + f.debug_struct("JsArrayBindingPatternElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16692,13 +16747,22 @@ impl AstNode for JsArrayBindingPatternRestElement { } impl std::fmt::Debug for JsArrayBindingPatternRestElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayBindingPatternRestElement") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayBindingPatternRestElement") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .finish() + } else { + f.debug_struct("JsArrayBindingPatternRestElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16734,17 +16798,26 @@ impl AstNode for JsArrayExpression { } impl std::fmt::Debug for JsArrayExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrayExpression") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("elements", &self.elements()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrayExpression") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("elements", &self.elements()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsArrayExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16816,26 +16889,35 @@ impl AstNode for JsArrowFunctionExpression { } impl std::fmt::Debug for JsArrowFunctionExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsArrowFunctionExpression") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field( - "fat_arrow_token", - &support::DebugSyntaxResult(self.fat_arrow_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsArrowFunctionExpression") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field( + "fat_arrow_token", + &support::DebugSyntaxResult(self.fat_arrow_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsArrowFunctionExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16871,14 +16953,23 @@ impl AstNode for JsAssignmentExpression { } impl std::fmt::Debug for JsAssignmentExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsAssignmentExpression") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsAssignmentExpression") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("JsAssignmentExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16914,13 +17005,22 @@ impl AstNode for JsAwaitExpression { } impl std::fmt::Debug for JsAwaitExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsAwaitExpression") - .field( - "await_token", - &support::DebugSyntaxResult(self.await_token()), - ) - .field("argument", &support::DebugSyntaxResult(self.argument())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsAwaitExpression") + .field( + "await_token", + &support::DebugSyntaxResult(self.await_token()), + ) + .field("argument", &support::DebugSyntaxResult(self.argument())) + .finish() + } else { + f.debug_struct("JsAwaitExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16956,12 +17056,21 @@ impl AstNode for JsBigintLiteralExpression { } impl std::fmt::Debug for JsBigintLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsBigintLiteralExpression") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsBigintLiteralExpression") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsBigintLiteralExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -16997,14 +17106,23 @@ impl AstNode for JsBinaryExpression { } impl std::fmt::Debug for JsBinaryExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsBinaryExpression") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsBinaryExpression") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("JsBinaryExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17040,17 +17158,26 @@ impl AstNode for JsBlockStatement { } impl std::fmt::Debug for JsBlockStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsBlockStatement") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("statements", &self.statements()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsBlockStatement") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("statements", &self.statements()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsBlockStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17086,12 +17213,21 @@ impl AstNode for JsBooleanLiteralExpression { } impl std::fmt::Debug for JsBooleanLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsBooleanLiteralExpression") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsBooleanLiteralExpression") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsBooleanLiteralExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17127,17 +17263,26 @@ impl AstNode for JsBreakStatement { } impl std::fmt::Debug for JsBreakStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsBreakStatement") - .field( - "break_token", - &support::DebugSyntaxResult(self.break_token()), - ) - .field("label", &support::DebugOptionalElement(self.label())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsBreakStatement") + .field( + "break_token", + &support::DebugSyntaxResult(self.break_token()), + ) + .field("label", &support::DebugOptionalElement(self.label())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsBreakStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17173,17 +17318,26 @@ impl AstNode for JsCallArguments { } impl std::fmt::Debug for JsCallArguments { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsCallArguments") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("args", &self.args()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsCallArguments") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("args", &self.args()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("JsCallArguments").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17219,18 +17373,27 @@ impl AstNode for JsCallExpression { } impl std::fmt::Debug for JsCallExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsCallExpression") - .field("callee", &support::DebugSyntaxResult(self.callee())) - .field( - "optional_chain_token", - &support::DebugOptionalElement(self.optional_chain_token()), - ) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .field("arguments", &support::DebugSyntaxResult(self.arguments())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsCallExpression") + .field("callee", &support::DebugSyntaxResult(self.callee())) + .field( + "optional_chain_token", + &support::DebugOptionalElement(self.optional_chain_token()), + ) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .field("arguments", &support::DebugSyntaxResult(self.arguments())) + .finish() + } else { + f.debug_struct("JsCallExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17266,15 +17429,24 @@ impl AstNode for JsCaseClause { } impl std::fmt::Debug for JsCaseClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsCaseClause") - .field("case_token", &support::DebugSyntaxResult(self.case_token())) - .field("test", &support::DebugSyntaxResult(self.test())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("consequent", &self.consequent()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsCaseClause") + .field("case_token", &support::DebugSyntaxResult(self.case_token())) + .field("test", &support::DebugSyntaxResult(self.test())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("consequent", &self.consequent()) + .finish() + } else { + f.debug_struct("JsCaseClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17310,17 +17482,26 @@ impl AstNode for JsCatchClause { } impl std::fmt::Debug for JsCatchClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsCatchClause") - .field( - "catch_token", - &support::DebugSyntaxResult(self.catch_token()), - ) - .field( - "declaration", - &support::DebugOptionalElement(self.declaration()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsCatchClause") + .field( + "catch_token", + &support::DebugSyntaxResult(self.catch_token()), + ) + .field( + "declaration", + &support::DebugOptionalElement(self.declaration()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsCatchClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17356,21 +17537,30 @@ impl AstNode for JsCatchDeclaration { } impl std::fmt::Debug for JsCatchDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsCatchDeclaration") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("binding", &support::DebugSyntaxResult(self.binding())) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsCatchDeclaration") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("binding", &support::DebugSyntaxResult(self.binding())) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("JsCatchDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17406,39 +17596,48 @@ impl AstNode for JsClassDeclaration { } impl std::fmt::Debug for JsClassDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsClassDeclaration") - .field("decorators", &self.decorators()) - .field( - "abstract_token", - &support::DebugOptionalElement(self.abstract_token()), - ) - .field( - "class_token", - &support::DebugSyntaxResult(self.class_token()), - ) - .field("id", &support::DebugSyntaxResult(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field( - "extends_clause", - &support::DebugOptionalElement(self.extends_clause()), - ) - .field( - "implements_clause", - &support::DebugOptionalElement(self.implements_clause()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsClassDeclaration") + .field("decorators", &self.decorators()) + .field( + "abstract_token", + &support::DebugOptionalElement(self.abstract_token()), + ) + .field( + "class_token", + &support::DebugSyntaxResult(self.class_token()), + ) + .field("id", &support::DebugSyntaxResult(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field( + "extends_clause", + &support::DebugOptionalElement(self.extends_clause()), + ) + .field( + "implements_clause", + &support::DebugOptionalElement(self.implements_clause()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsClassDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17474,39 +17673,48 @@ impl AstNode for JsClassExportDefaultDeclaration { } impl std::fmt::Debug for JsClassExportDefaultDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsClassExportDefaultDeclaration") - .field("decorators", &self.decorators()) - .field( - "abstract_token", - &support::DebugOptionalElement(self.abstract_token()), - ) - .field( - "class_token", - &support::DebugSyntaxResult(self.class_token()), - ) - .field("id", &support::DebugOptionalElement(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field( - "extends_clause", - &support::DebugOptionalElement(self.extends_clause()), - ) - .field( - "implements_clause", - &support::DebugOptionalElement(self.implements_clause()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsClassExportDefaultDeclaration") + .field("decorators", &self.decorators()) + .field( + "abstract_token", + &support::DebugOptionalElement(self.abstract_token()), + ) + .field( + "class_token", + &support::DebugSyntaxResult(self.class_token()), + ) + .field("id", &support::DebugOptionalElement(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field( + "extends_clause", + &support::DebugOptionalElement(self.extends_clause()), + ) + .field( + "implements_clause", + &support::DebugOptionalElement(self.implements_clause()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsClassExportDefaultDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17542,35 +17750,44 @@ impl AstNode for JsClassExpression { } impl std::fmt::Debug for JsClassExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsClassExpression") - .field("decorators", &self.decorators()) - .field( - "class_token", - &support::DebugSyntaxResult(self.class_token()), - ) - .field("id", &support::DebugOptionalElement(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field( - "extends_clause", - &support::DebugOptionalElement(self.extends_clause()), - ) - .field( - "implements_clause", - &support::DebugOptionalElement(self.implements_clause()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsClassExpression") + .field("decorators", &self.decorators()) + .field( + "class_token", + &support::DebugSyntaxResult(self.class_token()), + ) + .field("id", &support::DebugOptionalElement(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field( + "extends_clause", + &support::DebugOptionalElement(self.extends_clause()), + ) + .field( + "implements_clause", + &support::DebugOptionalElement(self.implements_clause()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsClassExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17606,18 +17823,27 @@ impl AstNode for JsComputedMemberAssignment { } impl std::fmt::Debug for JsComputedMemberAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsComputedMemberAssignment") - .field("object", &support::DebugSyntaxResult(self.object())) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("member", &support::DebugSyntaxResult(self.member())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsComputedMemberAssignment") + .field("object", &support::DebugSyntaxResult(self.object())) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("member", &support::DebugSyntaxResult(self.member())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsComputedMemberAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17653,22 +17879,31 @@ impl AstNode for JsComputedMemberExpression { } impl std::fmt::Debug for JsComputedMemberExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsComputedMemberExpression") - .field("object", &support::DebugSyntaxResult(self.object())) - .field( - "optional_chain_token", - &support::DebugOptionalElement(self.optional_chain_token()), - ) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("member", &support::DebugSyntaxResult(self.member())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsComputedMemberExpression") + .field("object", &support::DebugSyntaxResult(self.object())) + .field( + "optional_chain_token", + &support::DebugOptionalElement(self.optional_chain_token()), + ) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("member", &support::DebugSyntaxResult(self.member())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsComputedMemberExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17704,17 +17939,26 @@ impl AstNode for JsComputedMemberName { } impl std::fmt::Debug for JsComputedMemberName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsComputedMemberName") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsComputedMemberName") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsComputedMemberName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17750,19 +17994,28 @@ impl AstNode for JsConditionalExpression { } impl std::fmt::Debug for JsConditionalExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsConditionalExpression") - .field("test", &support::DebugSyntaxResult(self.test())) - .field( - "question_mark_token", - &support::DebugSyntaxResult(self.question_mark_token()), - ) - .field("consequent", &support::DebugSyntaxResult(self.consequent())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("alternate", &support::DebugSyntaxResult(self.alternate())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsConditionalExpression") + .field("test", &support::DebugSyntaxResult(self.test())) + .field( + "question_mark_token", + &support::DebugSyntaxResult(self.question_mark_token()), + ) + .field("consequent", &support::DebugSyntaxResult(self.consequent())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("alternate", &support::DebugSyntaxResult(self.alternate())) + .finish() + } else { + f.debug_struct("JsConditionalExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17798,12 +18051,21 @@ impl AstNode for JsConstructorClassMember { } impl std::fmt::Debug for JsConstructorClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsConstructorClassMember") - .field("modifiers", &self.modifiers()) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsConstructorClassMember") + .field("modifiers", &self.modifiers()) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsConstructorClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17839,17 +18101,26 @@ impl AstNode for JsConstructorParameters { } impl std::fmt::Debug for JsConstructorParameters { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsConstructorParameters") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("parameters", &self.parameters()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsConstructorParameters") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("parameters", &self.parameters()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("JsConstructorParameters").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17885,17 +18156,26 @@ impl AstNode for JsContinueStatement { } impl std::fmt::Debug for JsContinueStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsContinueStatement") - .field( - "continue_token", - &support::DebugSyntaxResult(self.continue_token()), - ) - .field("label", &support::DebugOptionalElement(self.label())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsContinueStatement") + .field( + "continue_token", + &support::DebugSyntaxResult(self.continue_token()), + ) + .field("label", &support::DebugOptionalElement(self.label())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsContinueStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17931,16 +18211,25 @@ impl AstNode for JsDebuggerStatement { } impl std::fmt::Debug for JsDebuggerStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsDebuggerStatement") - .field( - "debugger_token", - &support::DebugSyntaxResult(self.debugger_token()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsDebuggerStatement") + .field( + "debugger_token", + &support::DebugSyntaxResult(self.debugger_token()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsDebuggerStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -17976,10 +18265,19 @@ impl AstNode for JsDecorator { } impl std::fmt::Debug for JsDecorator { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsDecorator") - .field("at_token", &support::DebugSyntaxResult(self.at_token())) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsDecorator") + .field("at_token", &support::DebugSyntaxResult(self.at_token())) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .finish() + } else { + f.debug_struct("JsDecorator").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18015,17 +18313,26 @@ impl AstNode for JsDefaultClause { } impl std::fmt::Debug for JsDefaultClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsDefaultClause") - .field( - "default_token", - &support::DebugSyntaxResult(self.default_token()), - ) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("consequent", &self.consequent()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsDefaultClause") + .field( + "default_token", + &support::DebugSyntaxResult(self.default_token()), + ) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("consequent", &self.consequent()) + .finish() + } else { + f.debug_struct("JsDefaultClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18061,9 +18368,18 @@ impl AstNode for JsDefaultImportSpecifier { } impl std::fmt::Debug for JsDefaultImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsDefaultImportSpecifier") - .field("local_name", &support::DebugSyntaxResult(self.local_name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsDefaultImportSpecifier") + .field("local_name", &support::DebugSyntaxResult(self.local_name())) + .finish() + } else { + f.debug_struct("JsDefaultImportSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18099,16 +18415,25 @@ impl AstNode for JsDirective { } impl std::fmt::Debug for JsDirective { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsDirective") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsDirective") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsDirective").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18144,27 +18469,36 @@ impl AstNode for JsDoWhileStatement { } impl std::fmt::Debug for JsDoWhileStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsDoWhileStatement") - .field("do_token", &support::DebugSyntaxResult(self.do_token())) - .field("body", &support::DebugSyntaxResult(self.body())) - .field( - "while_token", - &support::DebugSyntaxResult(self.while_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("test", &support::DebugSyntaxResult(self.test())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsDoWhileStatement") + .field("do_token", &support::DebugSyntaxResult(self.do_token())) + .field("body", &support::DebugSyntaxResult(self.body())) + .field( + "while_token", + &support::DebugSyntaxResult(self.while_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("test", &support::DebugSyntaxResult(self.test())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsDoWhileStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18200,10 +18534,19 @@ impl AstNode for JsElseClause { } impl std::fmt::Debug for JsElseClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsElseClause") - .field("else_token", &support::DebugSyntaxResult(self.else_token())) - .field("alternate", &support::DebugSyntaxResult(self.alternate())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsElseClause") + .field("else_token", &support::DebugSyntaxResult(self.else_token())) + .field("alternate", &support::DebugSyntaxResult(self.alternate())) + .finish() + } else { + f.debug_struct("JsElseClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18239,12 +18582,21 @@ impl AstNode for JsEmptyClassMember { } impl std::fmt::Debug for JsEmptyClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsEmptyClassMember") - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsEmptyClassMember") + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsEmptyClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18280,12 +18632,21 @@ impl AstNode for JsEmptyStatement { } impl std::fmt::Debug for JsEmptyStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsEmptyStatement") - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsEmptyStatement") + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsEmptyStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18321,17 +18682,26 @@ impl AstNode for JsExport { } impl std::fmt::Debug for JsExport { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExport") - .field("decorators", &self.decorators()) - .field( - "export_token", - &support::DebugSyntaxResult(self.export_token()), - ) - .field( - "export_clause", - &support::DebugSyntaxResult(self.export_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExport") + .field("decorators", &self.decorators()) + .field( + "export_token", + &support::DebugSyntaxResult(self.export_token()), + ) + .field( + "export_clause", + &support::DebugSyntaxResult(self.export_clause()), + ) + .finish() + } else { + f.debug_struct("JsExport").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18367,13 +18737,22 @@ impl AstNode for JsExportAsClause { } impl std::fmt::Debug for JsExportAsClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportAsClause") - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field( - "exported_name", - &support::DebugSyntaxResult(self.exported_name()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportAsClause") + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field( + "exported_name", + &support::DebugSyntaxResult(self.exported_name()), + ) + .finish() + } else { + f.debug_struct("JsExportAsClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18409,20 +18788,29 @@ impl AstNode for JsExportDefaultDeclarationClause { } impl std::fmt::Debug for JsExportDefaultDeclarationClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportDefaultDeclarationClause") - .field( - "default_token", - &support::DebugSyntaxResult(self.default_token()), - ) - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportDefaultDeclarationClause") + .field( + "default_token", + &support::DebugSyntaxResult(self.default_token()), + ) + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsExportDefaultDeclarationClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18458,17 +18846,26 @@ impl AstNode for JsExportDefaultExpressionClause { } impl std::fmt::Debug for JsExportDefaultExpressionClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportDefaultExpressionClause") - .field( - "default_token", - &support::DebugSyntaxResult(self.default_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportDefaultExpressionClause") + .field( + "default_token", + &support::DebugSyntaxResult(self.default_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsExportDefaultExpressionClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18504,27 +18901,36 @@ impl AstNode for JsExportFromClause { } impl std::fmt::Debug for JsExportFromClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportFromClause") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field("star_token", &support::DebugSyntaxResult(self.star_token())) - .field( - "export_as", - &support::DebugOptionalElement(self.export_as()), - ) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportFromClause") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field("star_token", &support::DebugSyntaxResult(self.star_token())) + .field( + "export_as", + &support::DebugOptionalElement(self.export_as()), + ) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsExportFromClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18560,25 +18966,34 @@ impl AstNode for JsExportNamedClause { } impl std::fmt::Debug for JsExportNamedClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportNamedClause") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("specifiers", &self.specifiers()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportNamedClause") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("specifiers", &self.specifiers()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsExportNamedClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18614,31 +19029,40 @@ impl AstNode for JsExportNamedFromClause { } impl std::fmt::Debug for JsExportNamedFromClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportNamedFromClause") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("specifiers", &self.specifiers()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportNamedFromClause") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("specifiers", &self.specifiers()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsExportNamedFromClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18674,20 +19098,29 @@ impl AstNode for JsExportNamedFromSpecifier { } impl std::fmt::Debug for JsExportNamedFromSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportNamedFromSpecifier") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field( - "source_name", - &support::DebugSyntaxResult(self.source_name()), - ) - .field( - "export_as", - &support::DebugOptionalElement(self.export_as()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportNamedFromSpecifier") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field( + "source_name", + &support::DebugSyntaxResult(self.source_name()), + ) + .field( + "export_as", + &support::DebugOptionalElement(self.export_as()), + ) + .finish() + } else { + f.debug_struct("JsExportNamedFromSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18723,13 +19156,22 @@ impl AstNode for JsExportNamedShorthandSpecifier { } impl std::fmt::Debug for JsExportNamedShorthandSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportNamedShorthandSpecifier") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportNamedShorthandSpecifier") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("JsExportNamedShorthandSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18765,18 +19207,27 @@ impl AstNode for JsExportNamedSpecifier { } impl std::fmt::Debug for JsExportNamedSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExportNamedSpecifier") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field("local_name", &support::DebugSyntaxResult(self.local_name())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field( - "exported_name", - &support::DebugSyntaxResult(self.exported_name()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExportNamedSpecifier") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field("local_name", &support::DebugSyntaxResult(self.local_name())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field( + "exported_name", + &support::DebugSyntaxResult(self.exported_name()), + ) + .finish() + } else { + f.debug_struct("JsExportNamedSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18812,10 +19263,19 @@ impl AstNode for JsExpressionSnipped { } impl std::fmt::Debug for JsExpressionSnipped { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExpressionSnipped") - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExpressionSnipped") + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("JsExpressionSnipped").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18851,13 +19311,22 @@ impl AstNode for JsExpressionStatement { } impl std::fmt::Debug for JsExpressionStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExpressionStatement") - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExpressionStatement") + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsExpressionStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18893,20 +19362,29 @@ impl AstNode for JsExtendsClause { } impl std::fmt::Debug for JsExtendsClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsExtendsClause") - .field( - "extends_token", - &support::DebugSyntaxResult(self.extends_token()), - ) - .field( - "super_class", - &support::DebugSyntaxResult(self.super_class()), - ) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsExtendsClause") + .field( + "extends_token", + &support::DebugSyntaxResult(self.extends_token()), + ) + .field( + "super_class", + &support::DebugSyntaxResult(self.super_class()), + ) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .finish() + } else { + f.debug_struct("JsExtendsClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18942,13 +19420,22 @@ impl AstNode for JsFinallyClause { } impl std::fmt::Debug for JsFinallyClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsFinallyClause") - .field( - "finally_token", - &support::DebugSyntaxResult(self.finally_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsFinallyClause") + .field( + "finally_token", + &support::DebugSyntaxResult(self.finally_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsFinallyClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -18984,24 +19471,33 @@ impl AstNode for JsForInStatement { } impl std::fmt::Debug for JsForInStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsForInStatement") - .field("for_token", &support::DebugSyntaxResult(self.for_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "initializer", - &support::DebugSyntaxResult(self.initializer()), - ) - .field("in_token", &support::DebugSyntaxResult(self.in_token())) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsForInStatement") + .field("for_token", &support::DebugSyntaxResult(self.for_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "initializer", + &support::DebugSyntaxResult(self.initializer()), + ) + .field("in_token", &support::DebugSyntaxResult(self.in_token())) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsForInStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19037,28 +19533,37 @@ impl AstNode for JsForOfStatement { } impl std::fmt::Debug for JsForOfStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsForOfStatement") - .field("for_token", &support::DebugSyntaxResult(self.for_token())) - .field( - "await_token", - &support::DebugOptionalElement(self.await_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "initializer", - &support::DebugSyntaxResult(self.initializer()), - ) - .field("of_token", &support::DebugSyntaxResult(self.of_token())) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsForOfStatement") + .field("for_token", &support::DebugSyntaxResult(self.for_token())) + .field( + "await_token", + &support::DebugOptionalElement(self.await_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "initializer", + &support::DebugSyntaxResult(self.initializer()), + ) + .field("of_token", &support::DebugSyntaxResult(self.of_token())) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsForOfStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19094,32 +19599,41 @@ impl AstNode for JsForStatement { } impl std::fmt::Debug for JsForStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsForStatement") - .field("for_token", &support::DebugSyntaxResult(self.for_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "initializer", - &support::DebugOptionalElement(self.initializer()), - ) - .field( - "first_semi_token", - &support::DebugSyntaxResult(self.first_semi_token()), - ) - .field("test", &support::DebugOptionalElement(self.test())) - .field( - "second_semi_token", - &support::DebugSyntaxResult(self.second_semi_token()), - ) - .field("update", &support::DebugOptionalElement(self.update())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsForStatement") + .field("for_token", &support::DebugSyntaxResult(self.for_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "initializer", + &support::DebugOptionalElement(self.initializer()), + ) + .field( + "first_semi_token", + &support::DebugSyntaxResult(self.first_semi_token()), + ) + .field("test", &support::DebugOptionalElement(self.test())) + .field( + "second_semi_token", + &support::DebugSyntaxResult(self.second_semi_token()), + ) + .field("update", &support::DebugOptionalElement(self.update())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsForStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19155,14 +19669,23 @@ impl AstNode for JsForVariableDeclaration { } impl std::fmt::Debug for JsForVariableDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsForVariableDeclaration") - .field( - "await_token", - &support::DebugOptionalElement(self.await_token()), - ) - .field("kind_token", &support::DebugSyntaxResult(self.kind_token())) - .field("declarator", &support::DebugSyntaxResult(self.declarator())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsForVariableDeclaration") + .field( + "await_token", + &support::DebugOptionalElement(self.await_token()), + ) + .field("kind_token", &support::DebugSyntaxResult(self.kind_token())) + .field("declarator", &support::DebugSyntaxResult(self.declarator())) + .finish() + } else { + f.debug_struct("JsForVariableDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19198,22 +19721,31 @@ impl AstNode for JsFormalParameter { } impl std::fmt::Debug for JsFormalParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsFormalParameter") - .field("decorators", &self.decorators()) - .field("binding", &support::DebugSyntaxResult(self.binding())) - .field( - "question_mark_token", - &support::DebugOptionalElement(self.question_mark_token()), - ) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .field( - "initializer", - &support::DebugOptionalElement(self.initializer()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsFormalParameter") + .field("decorators", &self.decorators()) + .field("binding", &support::DebugSyntaxResult(self.binding())) + .field( + "question_mark_token", + &support::DebugOptionalElement(self.question_mark_token()), + ) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .field( + "initializer", + &support::DebugOptionalElement(self.initializer()), + ) + .finish() + } else { + f.debug_struct("JsFormalParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19249,18 +19781,27 @@ impl AstNode for JsFunctionBody { } impl std::fmt::Debug for JsFunctionBody { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsFunctionBody") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("directives", &self.directives()) - .field("statements", &self.statements()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsFunctionBody") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("directives", &self.directives()) + .field("statements", &self.statements()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsFunctionBody").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19296,31 +19837,40 @@ impl AstNode for JsFunctionDeclaration { } impl std::fmt::Debug for JsFunctionDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsFunctionDeclaration") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "function_token", - &support::DebugSyntaxResult(self.function_token()), - ) - .field( - "star_token", - &support::DebugOptionalElement(self.star_token()), - ) - .field("id", &support::DebugSyntaxResult(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsFunctionDeclaration") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "function_token", + &support::DebugSyntaxResult(self.function_token()), + ) + .field( + "star_token", + &support::DebugOptionalElement(self.star_token()), + ) + .field("id", &support::DebugSyntaxResult(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsFunctionDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19356,31 +19906,41 @@ impl AstNode for JsFunctionExportDefaultDeclaration { } impl std::fmt::Debug for JsFunctionExportDefaultDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsFunctionExportDefaultDeclaration") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "function_token", - &support::DebugSyntaxResult(self.function_token()), - ) - .field( - "star_token", - &support::DebugOptionalElement(self.star_token()), - ) - .field("id", &support::DebugOptionalElement(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsFunctionExportDefaultDeclaration") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "function_token", + &support::DebugSyntaxResult(self.function_token()), + ) + .field( + "star_token", + &support::DebugOptionalElement(self.star_token()), + ) + .field("id", &support::DebugOptionalElement(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsFunctionExportDefaultDeclaration") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19416,31 +19976,40 @@ impl AstNode for JsFunctionExpression { } impl std::fmt::Debug for JsFunctionExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsFunctionExpression") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "function_token", - &support::DebugSyntaxResult(self.function_token()), - ) - .field( - "star_token", - &support::DebugOptionalElement(self.star_token()), - ) - .field("id", &support::DebugOptionalElement(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsFunctionExpression") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "function_token", + &support::DebugSyntaxResult(self.function_token()), + ) + .field( + "star_token", + &support::DebugOptionalElement(self.star_token()), + ) + .field("id", &support::DebugOptionalElement(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsFunctionExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19476,24 +20045,33 @@ impl AstNode for JsGetterClassMember { } impl std::fmt::Debug for JsGetterClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsGetterClassMember") - .field("modifiers", &self.modifiers()) - .field("get_token", &support::DebugSyntaxResult(self.get_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "return_type", - &support::DebugOptionalElement(self.return_type()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsGetterClassMember") + .field("modifiers", &self.modifiers()) + .field("get_token", &support::DebugSyntaxResult(self.get_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "return_type", + &support::DebugOptionalElement(self.return_type()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsGetterClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19529,23 +20107,32 @@ impl AstNode for JsGetterObjectMember { } impl std::fmt::Debug for JsGetterObjectMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsGetterObjectMember") - .field("get_token", &support::DebugSyntaxResult(self.get_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "return_type", - &support::DebugOptionalElement(self.return_type()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsGetterObjectMember") + .field("get_token", &support::DebugSyntaxResult(self.get_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "return_type", + &support::DebugOptionalElement(self.return_type()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsGetterObjectMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19581,9 +20168,18 @@ impl AstNode for JsIdentifierAssignment { } impl std::fmt::Debug for JsIdentifierAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsIdentifierAssignment") - .field("name_token", &support::DebugSyntaxResult(self.name_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsIdentifierAssignment") + .field("name_token", &support::DebugSyntaxResult(self.name_token())) + .finish() + } else { + f.debug_struct("JsIdentifierAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19619,9 +20215,18 @@ impl AstNode for JsIdentifierBinding { } impl std::fmt::Debug for JsIdentifierBinding { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsIdentifierBinding") - .field("name_token", &support::DebugSyntaxResult(self.name_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsIdentifierBinding") + .field("name_token", &support::DebugSyntaxResult(self.name_token())) + .finish() + } else { + f.debug_struct("JsIdentifierBinding").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19657,9 +20262,18 @@ impl AstNode for JsIdentifierExpression { } impl std::fmt::Debug for JsIdentifierExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsIdentifierExpression") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsIdentifierExpression") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("JsIdentifierExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19695,23 +20309,32 @@ impl AstNode for JsIfStatement { } impl std::fmt::Debug for JsIfStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsIfStatement") - .field("if_token", &support::DebugSyntaxResult(self.if_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("test", &support::DebugSyntaxResult(self.test())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("consequent", &support::DebugSyntaxResult(self.consequent())) - .field( - "else_clause", - &support::DebugOptionalElement(self.else_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsIfStatement") + .field("if_token", &support::DebugSyntaxResult(self.if_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("test", &support::DebugSyntaxResult(self.test())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("consequent", &support::DebugSyntaxResult(self.consequent())) + .field( + "else_clause", + &support::DebugOptionalElement(self.else_clause()), + ) + .finish() + } else { + f.debug_struct("JsIfStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19747,20 +20370,29 @@ impl AstNode for JsImport { } impl std::fmt::Debug for JsImport { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImport") - .field( - "import_token", - &support::DebugSyntaxResult(self.import_token()), - ) - .field( - "import_clause", - &support::DebugSyntaxResult(self.import_clause()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImport") + .field( + "import_token", + &support::DebugSyntaxResult(self.import_token()), + ) + .field( + "import_clause", + &support::DebugSyntaxResult(self.import_clause()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsImport").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19796,18 +20428,27 @@ impl AstNode for JsImportAssertion { } impl std::fmt::Debug for JsImportAssertion { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportAssertion") - .field("with_token", &support::DebugSyntaxResult(self.with_token())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("assertions", &self.assertions()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportAssertion") + .field("with_token", &support::DebugSyntaxResult(self.with_token())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("assertions", &self.assertions()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsImportAssertion").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19843,17 +20484,26 @@ impl AstNode for JsImportAssertionEntry { } impl std::fmt::Debug for JsImportAssertionEntry { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportAssertionEntry") - .field("key", &support::DebugSyntaxResult(self.key())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportAssertionEntry") + .field("key", &support::DebugSyntaxResult(self.key())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsImportAssertionEntry").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19889,13 +20539,22 @@ impl AstNode for JsImportBareClause { } impl std::fmt::Debug for JsImportBareClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportBareClause") - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportBareClause") + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .finish() + } else { + f.debug_struct("JsImportBareClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19931,13 +20590,22 @@ impl AstNode for JsImportCallExpression { } impl std::fmt::Debug for JsImportCallExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportCallExpression") - .field( - "import_token", - &support::DebugSyntaxResult(self.import_token()), - ) - .field("arguments", &support::DebugSyntaxResult(self.arguments())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportCallExpression") + .field( + "import_token", + &support::DebugSyntaxResult(self.import_token()), + ) + .field("arguments", &support::DebugSyntaxResult(self.arguments())) + .finish() + } else { + f.debug_struct("JsImportCallExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -19973,23 +20641,32 @@ impl AstNode for JsImportCombinedClause { } impl std::fmt::Debug for JsImportCombinedClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportCombinedClause") - .field( - "default_specifier", - &support::DebugSyntaxResult(self.default_specifier()), - ) - .field( - "comma_token", - &support::DebugSyntaxResult(self.comma_token()), - ) - .field("specifier", &support::DebugSyntaxResult(self.specifier())) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportCombinedClause") + .field( + "default_specifier", + &support::DebugSyntaxResult(self.default_specifier()), + ) + .field( + "comma_token", + &support::DebugSyntaxResult(self.comma_token()), + ) + .field("specifier", &support::DebugSyntaxResult(self.specifier())) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .finish() + } else { + f.debug_struct("JsImportCombinedClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20025,22 +20702,31 @@ impl AstNode for JsImportDefaultClause { } impl std::fmt::Debug for JsImportDefaultClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportDefaultClause") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field( - "default_specifier", - &support::DebugSyntaxResult(self.default_specifier()), - ) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportDefaultClause") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field( + "default_specifier", + &support::DebugSyntaxResult(self.default_specifier()), + ) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .finish() + } else { + f.debug_struct("JsImportDefaultClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20076,14 +20762,23 @@ impl AstNode for JsImportMetaExpression { } impl std::fmt::Debug for JsImportMetaExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportMetaExpression") - .field( - "import_token", - &support::DebugSyntaxResult(self.import_token()), - ) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("meta_token", &support::DebugSyntaxResult(self.meta_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportMetaExpression") + .field( + "import_token", + &support::DebugSyntaxResult(self.import_token()), + ) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("meta_token", &support::DebugSyntaxResult(self.meta_token())) + .finish() + } else { + f.debug_struct("JsImportMetaExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20119,22 +20814,31 @@ impl AstNode for JsImportNamedClause { } impl std::fmt::Debug for JsImportNamedClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportNamedClause") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field( - "named_specifiers", - &support::DebugSyntaxResult(self.named_specifiers()), - ) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportNamedClause") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field( + "named_specifiers", + &support::DebugSyntaxResult(self.named_specifiers()), + ) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .finish() + } else { + f.debug_struct("JsImportNamedClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20170,22 +20874,31 @@ impl AstNode for JsImportNamespaceClause { } impl std::fmt::Debug for JsImportNamespaceClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsImportNamespaceClause") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field( - "namespace_specifier", - &support::DebugSyntaxResult(self.namespace_specifier()), - ) - .field("from_token", &support::DebugSyntaxResult(self.from_token())) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "assertion", - &support::DebugOptionalElement(self.assertion()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsImportNamespaceClause") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field( + "namespace_specifier", + &support::DebugSyntaxResult(self.namespace_specifier()), + ) + .field("from_token", &support::DebugSyntaxResult(self.from_token())) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "assertion", + &support::DebugOptionalElement(self.assertion()), + ) + .finish() + } else { + f.debug_struct("JsImportNamespaceClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20221,11 +20934,20 @@ impl AstNode for JsInExpression { } impl std::fmt::Debug for JsInExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsInExpression") - .field("property", &support::DebugSyntaxResult(self.property())) - .field("in_token", &support::DebugSyntaxResult(self.in_token())) - .field("object", &support::DebugSyntaxResult(self.object())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsInExpression") + .field("property", &support::DebugSyntaxResult(self.property())) + .field("in_token", &support::DebugSyntaxResult(self.in_token())) + .field("object", &support::DebugSyntaxResult(self.object())) + .finish() + } else { + f.debug_struct("JsInExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20261,10 +20983,19 @@ impl AstNode for JsInitializerClause { } impl std::fmt::Debug for JsInitializerClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsInitializerClause") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsInitializerClause") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .finish() + } else { + f.debug_struct("JsInitializerClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20300,14 +21031,23 @@ impl AstNode for JsInstanceofExpression { } impl std::fmt::Debug for JsInstanceofExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsInstanceofExpression") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "instanceof_token", - &support::DebugSyntaxResult(self.instanceof_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsInstanceofExpression") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "instanceof_token", + &support::DebugSyntaxResult(self.instanceof_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("JsInstanceofExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20343,12 +21083,21 @@ impl AstNode for JsLabel { } impl std::fmt::Debug for JsLabel { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsLabel") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsLabel") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsLabel").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20384,14 +21133,23 @@ impl AstNode for JsLabeledStatement { } impl std::fmt::Debug for JsLabeledStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsLabeledStatement") - .field("label", &support::DebugSyntaxResult(self.label())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsLabeledStatement") + .field("label", &support::DebugSyntaxResult(self.label())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsLabeledStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20427,9 +21185,18 @@ impl AstNode for JsLiteralExportName { } impl std::fmt::Debug for JsLiteralExportName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsLiteralExportName") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsLiteralExportName") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("JsLiteralExportName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20465,9 +21232,18 @@ impl AstNode for JsLiteralMemberName { } impl std::fmt::Debug for JsLiteralMemberName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsLiteralMemberName") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsLiteralMemberName") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("JsLiteralMemberName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20503,14 +21279,23 @@ impl AstNode for JsLogicalExpression { } impl std::fmt::Debug for JsLogicalExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsLogicalExpression") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsLogicalExpression") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("JsLogicalExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20546,12 +21331,21 @@ impl AstNode for JsMetavariable { } impl std::fmt::Debug for JsMetavariable { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsMetavariable") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsMetavariable") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsMetavariable").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20587,32 +21381,41 @@ impl AstNode for JsMethodClassMember { } impl std::fmt::Debug for JsMethodClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsMethodClassMember") - .field("modifiers", &self.modifiers()) - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "star_token", - &support::DebugOptionalElement(self.star_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "question_mark_token", - &support::DebugOptionalElement(self.question_mark_token()), - ) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsMethodClassMember") + .field("modifiers", &self.modifiers()) + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "star_token", + &support::DebugOptionalElement(self.star_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "question_mark_token", + &support::DebugOptionalElement(self.question_mark_token()), + ) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsMethodClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20648,27 +21451,36 @@ impl AstNode for JsMethodObjectMember { } impl std::fmt::Debug for JsMethodObjectMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsMethodObjectMember") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "star_token", - &support::DebugOptionalElement(self.star_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsMethodObjectMember") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "star_token", + &support::DebugOptionalElement(self.star_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsMethodObjectMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20704,19 +21516,28 @@ impl AstNode for JsModule { } impl std::fmt::Debug for JsModule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsModule") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field( - "interpreter_token", - &support::DebugOptionalElement(self.interpreter_token()), - ) - .field("directives", &self.directives()) - .field("items", &self.items()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsModule") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field( + "interpreter_token", + &support::DebugOptionalElement(self.interpreter_token()), + ) + .field("directives", &self.directives()) + .field("items", &self.items()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("JsModule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20752,12 +21573,21 @@ impl AstNode for JsModuleSource { } impl std::fmt::Debug for JsModuleSource { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsModuleSource") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsModuleSource") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsModuleSource").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20793,12 +21623,21 @@ impl AstNode for JsName { } impl std::fmt::Debug for JsName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsName") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsName") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20834,15 +21673,24 @@ impl AstNode for JsNamedImportSpecifier { } impl std::fmt::Debug for JsNamedImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNamedImportSpecifier") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("local_name", &support::DebugSyntaxResult(self.local_name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNamedImportSpecifier") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("local_name", &support::DebugSyntaxResult(self.local_name())) + .finish() + } else { + f.debug_struct("JsNamedImportSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20878,17 +21726,26 @@ impl AstNode for JsNamedImportSpecifiers { } impl std::fmt::Debug for JsNamedImportSpecifiers { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNamedImportSpecifiers") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("specifiers", &self.specifiers()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNamedImportSpecifiers") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("specifiers", &self.specifiers()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsNamedImportSpecifiers").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20924,11 +21781,20 @@ impl AstNode for JsNamespaceImportSpecifier { } impl std::fmt::Debug for JsNamespaceImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNamespaceImportSpecifier") - .field("star_token", &support::DebugSyntaxResult(self.star_token())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("local_name", &support::DebugSyntaxResult(self.local_name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNamespaceImportSpecifier") + .field("star_token", &support::DebugSyntaxResult(self.star_token())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("local_name", &support::DebugSyntaxResult(self.local_name())) + .finish() + } else { + f.debug_struct("JsNamespaceImportSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -20964,18 +21830,27 @@ impl AstNode for JsNewExpression { } impl std::fmt::Debug for JsNewExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNewExpression") - .field("new_token", &support::DebugSyntaxResult(self.new_token())) - .field("callee", &support::DebugSyntaxResult(self.callee())) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .field( - "arguments", - &support::DebugOptionalElement(self.arguments()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNewExpression") + .field("new_token", &support::DebugSyntaxResult(self.new_token())) + .field("callee", &support::DebugSyntaxResult(self.callee())) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .field( + "arguments", + &support::DebugOptionalElement(self.arguments()), + ) + .finish() + } else { + f.debug_struct("JsNewExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21011,14 +21886,23 @@ impl AstNode for JsNewTargetExpression { } impl std::fmt::Debug for JsNewTargetExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNewTargetExpression") - .field("new_token", &support::DebugSyntaxResult(self.new_token())) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field( - "target_token", - &support::DebugSyntaxResult(self.target_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNewTargetExpression") + .field("new_token", &support::DebugSyntaxResult(self.new_token())) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field( + "target_token", + &support::DebugSyntaxResult(self.target_token()), + ) + .finish() + } else { + f.debug_struct("JsNewTargetExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21054,12 +21938,21 @@ impl AstNode for JsNullLiteralExpression { } impl std::fmt::Debug for JsNullLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNullLiteralExpression") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNullLiteralExpression") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsNullLiteralExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21095,12 +21988,21 @@ impl AstNode for JsNumberLiteralExpression { } impl std::fmt::Debug for JsNumberLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsNumberLiteralExpression") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsNumberLiteralExpression") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsNumberLiteralExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21136,17 +22038,26 @@ impl AstNode for JsObjectAssignmentPattern { } impl std::fmt::Debug for JsObjectAssignmentPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectAssignmentPattern") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("properties", &self.properties()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectAssignmentPattern") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("properties", &self.properties()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsObjectAssignmentPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21182,15 +22093,24 @@ impl AstNode for JsObjectAssignmentPatternProperty { } impl std::fmt::Debug for JsObjectAssignmentPatternProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectAssignmentPatternProperty") - .field("member", &support::DebugSyntaxResult(self.member())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field("init", &support::DebugOptionalElement(self.init())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectAssignmentPatternProperty") + .field("member", &support::DebugSyntaxResult(self.member())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field("init", &support::DebugOptionalElement(self.init())) + .finish() + } else { + f.debug_struct("JsObjectAssignmentPatternProperty").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21226,13 +22146,22 @@ impl AstNode for JsObjectAssignmentPatternRest { } impl std::fmt::Debug for JsObjectAssignmentPatternRest { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectAssignmentPatternRest") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("target", &support::DebugSyntaxResult(self.target())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectAssignmentPatternRest") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("target", &support::DebugSyntaxResult(self.target())) + .finish() + } else { + f.debug_struct("JsObjectAssignmentPatternRest").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21269,10 +22198,20 @@ impl AstNode for JsObjectAssignmentPatternShorthandProperty { } impl std::fmt::Debug for JsObjectAssignmentPatternShorthandProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectAssignmentPatternShorthandProperty") - .field("identifier", &support::DebugSyntaxResult(self.identifier())) - .field("init", &support::DebugOptionalElement(self.init())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectAssignmentPatternShorthandProperty") + .field("identifier", &support::DebugSyntaxResult(self.identifier())) + .field("init", &support::DebugOptionalElement(self.init())) + .finish() + } else { + f.debug_struct("JsObjectAssignmentPatternShorthandProperty") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21308,17 +22247,26 @@ impl AstNode for JsObjectBindingPattern { } impl std::fmt::Debug for JsObjectBindingPattern { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectBindingPattern") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("properties", &self.properties()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectBindingPattern") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("properties", &self.properties()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsObjectBindingPattern").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21354,15 +22302,24 @@ impl AstNode for JsObjectBindingPatternProperty { } impl std::fmt::Debug for JsObjectBindingPatternProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectBindingPatternProperty") - .field("member", &support::DebugSyntaxResult(self.member())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("pattern", &support::DebugSyntaxResult(self.pattern())) - .field("init", &support::DebugOptionalElement(self.init())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectBindingPatternProperty") + .field("member", &support::DebugSyntaxResult(self.member())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("pattern", &support::DebugSyntaxResult(self.pattern())) + .field("init", &support::DebugOptionalElement(self.init())) + .finish() + } else { + f.debug_struct("JsObjectBindingPatternProperty").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21398,13 +22355,22 @@ impl AstNode for JsObjectBindingPatternRest { } impl std::fmt::Debug for JsObjectBindingPatternRest { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectBindingPatternRest") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("binding", &support::DebugSyntaxResult(self.binding())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectBindingPatternRest") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("binding", &support::DebugSyntaxResult(self.binding())) + .finish() + } else { + f.debug_struct("JsObjectBindingPatternRest").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21441,10 +22407,20 @@ impl AstNode for JsObjectBindingPatternShorthandProperty { } impl std::fmt::Debug for JsObjectBindingPatternShorthandProperty { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectBindingPatternShorthandProperty") - .field("identifier", &support::DebugSyntaxResult(self.identifier())) - .field("init", &support::DebugOptionalElement(self.init())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectBindingPatternShorthandProperty") + .field("identifier", &support::DebugSyntaxResult(self.identifier())) + .field("init", &support::DebugOptionalElement(self.init())) + .finish() + } else { + f.debug_struct("JsObjectBindingPatternShorthandProperty") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21480,17 +22456,26 @@ impl AstNode for JsObjectExpression { } impl std::fmt::Debug for JsObjectExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsObjectExpression") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsObjectExpression") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsObjectExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21526,17 +22511,26 @@ impl AstNode for JsParameters { } impl std::fmt::Debug for JsParameters { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsParameters") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("items", &self.items()) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsParameters") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("items", &self.items()) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("JsParameters").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21572,17 +22566,26 @@ impl AstNode for JsParenthesizedAssignment { } impl std::fmt::Debug for JsParenthesizedAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsParenthesizedAssignment") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("assignment", &support::DebugSyntaxResult(self.assignment())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsParenthesizedAssignment") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("assignment", &support::DebugSyntaxResult(self.assignment())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("JsParenthesizedAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21618,17 +22621,26 @@ impl AstNode for JsParenthesizedExpression { } impl std::fmt::Debug for JsParenthesizedExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsParenthesizedExpression") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsParenthesizedExpression") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("JsParenthesizedExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21664,13 +22676,22 @@ impl AstNode for JsPostUpdateExpression { } impl std::fmt::Debug for JsPostUpdateExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsPostUpdateExpression") - .field("operand", &support::DebugSyntaxResult(self.operand())) - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsPostUpdateExpression") + .field("operand", &support::DebugSyntaxResult(self.operand())) + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .finish() + } else { + f.debug_struct("JsPostUpdateExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21706,13 +22727,22 @@ impl AstNode for JsPreUpdateExpression { } impl std::fmt::Debug for JsPreUpdateExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsPreUpdateExpression") - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("operand", &support::DebugSyntaxResult(self.operand())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsPreUpdateExpression") + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("operand", &support::DebugSyntaxResult(self.operand())) + .finish() + } else { + f.debug_struct("JsPreUpdateExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21748,10 +22778,19 @@ impl AstNode for JsPrivateClassMemberName { } impl std::fmt::Debug for JsPrivateClassMemberName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsPrivateClassMemberName") - .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) - .field("id_token", &support::DebugSyntaxResult(self.id_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsPrivateClassMemberName") + .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) + .field("id_token", &support::DebugSyntaxResult(self.id_token())) + .finish() + } else { + f.debug_struct("JsPrivateClassMemberName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21787,13 +22826,22 @@ impl AstNode for JsPrivateName { } impl std::fmt::Debug for JsPrivateName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsPrivateName") - .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsPrivateName") + .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsPrivateName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21829,19 +22877,28 @@ impl AstNode for JsPropertyClassMember { } impl std::fmt::Debug for JsPropertyClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsPropertyClassMember") - .field("modifiers", &self.modifiers()) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "property_annotation", - &support::DebugOptionalElement(self.property_annotation()), - ) - .field("value", &support::DebugOptionalElement(self.value())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsPropertyClassMember") + .field("modifiers", &self.modifiers()) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "property_annotation", + &support::DebugOptionalElement(self.property_annotation()), + ) + .field("value", &support::DebugOptionalElement(self.value())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsPropertyClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21877,14 +22934,23 @@ impl AstNode for JsPropertyObjectMember { } impl std::fmt::Debug for JsPropertyObjectMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsPropertyObjectMember") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsPropertyObjectMember") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("JsPropertyObjectMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21920,12 +22986,21 @@ impl AstNode for JsReferenceIdentifier { } impl std::fmt::Debug for JsReferenceIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsReferenceIdentifier") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsReferenceIdentifier") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsReferenceIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -21961,12 +23036,21 @@ impl AstNode for JsRegexLiteralExpression { } impl std::fmt::Debug for JsRegexLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsRegexLiteralExpression") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsRegexLiteralExpression") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsRegexLiteralExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22002,18 +23086,27 @@ impl AstNode for JsRestParameter { } impl std::fmt::Debug for JsRestParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsRestParameter") - .field("decorators", &self.decorators()) - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("binding", &support::DebugSyntaxResult(self.binding())) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsRestParameter") + .field("decorators", &self.decorators()) + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("binding", &support::DebugSyntaxResult(self.binding())) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .finish() + } else { + f.debug_struct("JsRestParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22049,17 +23142,26 @@ impl AstNode for JsReturnStatement { } impl std::fmt::Debug for JsReturnStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsReturnStatement") - .field( - "return_token", - &support::DebugSyntaxResult(self.return_token()), - ) - .field("argument", &support::DebugOptionalElement(self.argument())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsReturnStatement") + .field( + "return_token", + &support::DebugSyntaxResult(self.return_token()), + ) + .field("argument", &support::DebugOptionalElement(self.argument())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsReturnStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22095,19 +23197,28 @@ impl AstNode for JsScript { } impl std::fmt::Debug for JsScript { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsScript") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field( - "interpreter_token", - &support::DebugOptionalElement(self.interpreter_token()), - ) - .field("directives", &self.directives()) - .field("statements", &self.statements()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsScript") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field( + "interpreter_token", + &support::DebugOptionalElement(self.interpreter_token()), + ) + .field("directives", &self.directives()) + .field("statements", &self.statements()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("JsScript").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22143,14 +23254,23 @@ impl AstNode for JsSequenceExpression { } impl std::fmt::Debug for JsSequenceExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsSequenceExpression") - .field("left", &support::DebugSyntaxResult(self.left())) - .field( - "comma_token", - &support::DebugSyntaxResult(self.comma_token()), - ) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsSequenceExpression") + .field("left", &support::DebugSyntaxResult(self.left())) + .field( + "comma_token", + &support::DebugSyntaxResult(self.comma_token()), + ) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("JsSequenceExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22186,25 +23306,34 @@ impl AstNode for JsSetterClassMember { } impl std::fmt::Debug for JsSetterClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsSetterClassMember") - .field("modifiers", &self.modifiers()) - .field("set_token", &support::DebugSyntaxResult(self.set_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("parameter", &support::DebugSyntaxResult(self.parameter())) - .field( - "comma_token", - &support::DebugOptionalElement(self.comma_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsSetterClassMember") + .field("modifiers", &self.modifiers()) + .field("set_token", &support::DebugSyntaxResult(self.set_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("parameter", &support::DebugSyntaxResult(self.parameter())) + .field( + "comma_token", + &support::DebugOptionalElement(self.comma_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsSetterClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22240,24 +23369,33 @@ impl AstNode for JsSetterObjectMember { } impl std::fmt::Debug for JsSetterObjectMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsSetterObjectMember") - .field("set_token", &support::DebugSyntaxResult(self.set_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("parameter", &support::DebugSyntaxResult(self.parameter())) - .field( - "comma_token", - &support::DebugOptionalElement(self.comma_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsSetterObjectMember") + .field("set_token", &support::DebugSyntaxResult(self.set_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("parameter", &support::DebugSyntaxResult(self.parameter())) + .field( + "comma_token", + &support::DebugOptionalElement(self.comma_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsSetterObjectMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22293,13 +23431,22 @@ impl AstNode for JsShorthandNamedImportSpecifier { } impl std::fmt::Debug for JsShorthandNamedImportSpecifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsShorthandNamedImportSpecifier") - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field("local_name", &support::DebugSyntaxResult(self.local_name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsShorthandNamedImportSpecifier") + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field("local_name", &support::DebugSyntaxResult(self.local_name())) + .finish() + } else { + f.debug_struct("JsShorthandNamedImportSpecifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22335,9 +23482,18 @@ impl AstNode for JsShorthandPropertyObjectMember { } impl std::fmt::Debug for JsShorthandPropertyObjectMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsShorthandPropertyObjectMember") - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsShorthandPropertyObjectMember") + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("JsShorthandPropertyObjectMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22373,13 +23529,22 @@ impl AstNode for JsSpread { } impl std::fmt::Debug for JsSpread { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsSpread") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("argument", &support::DebugSyntaxResult(self.argument())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsSpread") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("argument", &support::DebugSyntaxResult(self.argument())) + .finish() + } else { + f.debug_struct("JsSpread").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22416,21 +23581,31 @@ impl AstNode for JsStaticInitializationBlockClassMember { } impl std::fmt::Debug for JsStaticInitializationBlockClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsStaticInitializationBlockClassMember") - .field( - "static_token", - &support::DebugSyntaxResult(self.static_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("statements", &self.statements()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsStaticInitializationBlockClassMember") + .field( + "static_token", + &support::DebugSyntaxResult(self.static_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("statements", &self.statements()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsStaticInitializationBlockClassMember") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22466,11 +23641,20 @@ impl AstNode for JsStaticMemberAssignment { } impl std::fmt::Debug for JsStaticMemberAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsStaticMemberAssignment") - .field("object", &support::DebugSyntaxResult(self.object())) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("member", &support::DebugSyntaxResult(self.member())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsStaticMemberAssignment") + .field("object", &support::DebugSyntaxResult(self.object())) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("member", &support::DebugSyntaxResult(self.member())) + .finish() + } else { + f.debug_struct("JsStaticMemberAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22506,14 +23690,23 @@ impl AstNode for JsStaticMemberExpression { } impl std::fmt::Debug for JsStaticMemberExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsStaticMemberExpression") - .field("object", &support::DebugSyntaxResult(self.object())) - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("member", &support::DebugSyntaxResult(self.member())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsStaticMemberExpression") + .field("object", &support::DebugSyntaxResult(self.object())) + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("member", &support::DebugSyntaxResult(self.member())) + .finish() + } else { + f.debug_struct("JsStaticMemberExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22549,12 +23742,21 @@ impl AstNode for JsStaticModifier { } impl std::fmt::Debug for JsStaticModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsStaticModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsStaticModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("JsStaticModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22590,12 +23792,21 @@ impl AstNode for JsStringLiteralExpression { } impl std::fmt::Debug for JsStringLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsStringLiteralExpression") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsStringLiteralExpression") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsStringLiteralExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22631,12 +23842,21 @@ impl AstNode for JsSuperExpression { } impl std::fmt::Debug for JsSuperExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsSuperExpression") - .field( - "super_token", - &support::DebugSyntaxResult(self.super_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsSuperExpression") + .field( + "super_token", + &support::DebugSyntaxResult(self.super_token()), + ) + .finish() + } else { + f.debug_struct("JsSuperExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22672,33 +23892,42 @@ impl AstNode for JsSwitchStatement { } impl std::fmt::Debug for JsSwitchStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsSwitchStatement") - .field( - "switch_token", - &support::DebugSyntaxResult(self.switch_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "discriminant", - &support::DebugSyntaxResult(self.discriminant()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("cases", &self.cases()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsSwitchStatement") + .field( + "switch_token", + &support::DebugSyntaxResult(self.switch_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "discriminant", + &support::DebugSyntaxResult(self.discriminant()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("cases", &self.cases()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsSwitchStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22734,12 +23963,21 @@ impl AstNode for JsTemplateChunkElement { } impl std::fmt::Debug for JsTemplateChunkElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsTemplateChunkElement") - .field( - "template_chunk_token", - &support::DebugSyntaxResult(self.template_chunk_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsTemplateChunkElement") + .field( + "template_chunk_token", + &support::DebugSyntaxResult(self.template_chunk_token()), + ) + .finish() + } else { + f.debug_struct("JsTemplateChunkElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22775,17 +24013,26 @@ impl AstNode for JsTemplateElement { } impl std::fmt::Debug for JsTemplateElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsTemplateElement") - .field( - "dollar_curly_token", - &support::DebugSyntaxResult(self.dollar_curly_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsTemplateElement") + .field( + "dollar_curly_token", + &support::DebugSyntaxResult(self.dollar_curly_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsTemplateElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22821,22 +24068,31 @@ impl AstNode for JsTemplateExpression { } impl std::fmt::Debug for JsTemplateExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsTemplateExpression") - .field("tag", &support::DebugOptionalElement(self.tag())) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .field( - "l_tick_token", - &support::DebugSyntaxResult(self.l_tick_token()), - ) - .field("elements", &self.elements()) - .field( - "r_tick_token", - &support::DebugSyntaxResult(self.r_tick_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsTemplateExpression") + .field("tag", &support::DebugOptionalElement(self.tag())) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .field( + "l_tick_token", + &support::DebugSyntaxResult(self.l_tick_token()), + ) + .field("elements", &self.elements()) + .field( + "r_tick_token", + &support::DebugSyntaxResult(self.r_tick_token()), + ) + .finish() + } else { + f.debug_struct("JsTemplateExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22872,9 +24128,18 @@ impl AstNode for JsThisExpression { } impl std::fmt::Debug for JsThisExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsThisExpression") - .field("this_token", &support::DebugSyntaxResult(self.this_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsThisExpression") + .field("this_token", &support::DebugSyntaxResult(self.this_token())) + .finish() + } else { + f.debug_struct("JsThisExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22910,17 +24175,26 @@ impl AstNode for JsThrowStatement { } impl std::fmt::Debug for JsThrowStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsThrowStatement") - .field( - "throw_token", - &support::DebugSyntaxResult(self.throw_token()), - ) - .field("argument", &support::DebugSyntaxResult(self.argument())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsThrowStatement") + .field( + "throw_token", + &support::DebugSyntaxResult(self.throw_token()), + ) + .field("argument", &support::DebugSyntaxResult(self.argument())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsThrowStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -22956,18 +24230,27 @@ impl AstNode for JsTryFinallyStatement { } impl std::fmt::Debug for JsTryFinallyStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsTryFinallyStatement") - .field("try_token", &support::DebugSyntaxResult(self.try_token())) - .field("body", &support::DebugSyntaxResult(self.body())) - .field( - "catch_clause", - &support::DebugOptionalElement(self.catch_clause()), - ) - .field( - "finally_clause", - &support::DebugSyntaxResult(self.finally_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsTryFinallyStatement") + .field("try_token", &support::DebugSyntaxResult(self.try_token())) + .field("body", &support::DebugSyntaxResult(self.body())) + .field( + "catch_clause", + &support::DebugOptionalElement(self.catch_clause()), + ) + .field( + "finally_clause", + &support::DebugSyntaxResult(self.finally_clause()), + ) + .finish() + } else { + f.debug_struct("JsTryFinallyStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23003,14 +24286,23 @@ impl AstNode for JsTryStatement { } impl std::fmt::Debug for JsTryStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsTryStatement") - .field("try_token", &support::DebugSyntaxResult(self.try_token())) - .field("body", &support::DebugSyntaxResult(self.body())) - .field( - "catch_clause", - &support::DebugSyntaxResult(self.catch_clause()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsTryStatement") + .field("try_token", &support::DebugSyntaxResult(self.try_token())) + .field("body", &support::DebugSyntaxResult(self.body())) + .field( + "catch_clause", + &support::DebugSyntaxResult(self.catch_clause()), + ) + .finish() + } else { + f.debug_struct("JsTryStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23046,13 +24338,22 @@ impl AstNode for JsUnaryExpression { } impl std::fmt::Debug for JsUnaryExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsUnaryExpression") - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("argument", &support::DebugSyntaxResult(self.argument())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsUnaryExpression") + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("argument", &support::DebugSyntaxResult(self.argument())) + .finish() + } else { + f.debug_struct("JsUnaryExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23088,14 +24389,23 @@ impl AstNode for JsVariableDeclaration { } impl std::fmt::Debug for JsVariableDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsVariableDeclaration") - .field( - "await_token", - &support::DebugOptionalElement(self.await_token()), - ) - .field("kind", &support::DebugSyntaxResult(self.kind())) - .field("declarators", &self.declarators()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsVariableDeclaration") + .field( + "await_token", + &support::DebugOptionalElement(self.await_token()), + ) + .field("kind", &support::DebugSyntaxResult(self.kind())) + .field("declarators", &self.declarators()) + .finish() + } else { + f.debug_struct("JsVariableDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23131,16 +24441,25 @@ impl AstNode for JsVariableDeclarationClause { } impl std::fmt::Debug for JsVariableDeclarationClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsVariableDeclarationClause") - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsVariableDeclarationClause") + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsVariableDeclarationClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23176,17 +24495,26 @@ impl AstNode for JsVariableDeclarator { } impl std::fmt::Debug for JsVariableDeclarator { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsVariableDeclarator") - .field("id", &support::DebugSyntaxResult(self.id())) - .field( - "variable_annotation", - &support::DebugOptionalElement(self.variable_annotation()), - ) - .field( - "initializer", - &support::DebugOptionalElement(self.initializer()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsVariableDeclarator") + .field("id", &support::DebugSyntaxResult(self.id())) + .field( + "variable_annotation", + &support::DebugOptionalElement(self.variable_annotation()), + ) + .field( + "initializer", + &support::DebugOptionalElement(self.initializer()), + ) + .finish() + } else { + f.debug_struct("JsVariableDeclarator").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23222,16 +24550,25 @@ impl AstNode for JsVariableStatement { } impl std::fmt::Debug for JsVariableStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsVariableStatement") - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsVariableStatement") + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("JsVariableStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23267,22 +24604,31 @@ impl AstNode for JsWhileStatement { } impl std::fmt::Debug for JsWhileStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsWhileStatement") - .field( - "while_token", - &support::DebugSyntaxResult(self.while_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("test", &support::DebugSyntaxResult(self.test())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsWhileStatement") + .field( + "while_token", + &support::DebugSyntaxResult(self.while_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("test", &support::DebugSyntaxResult(self.test())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsWhileStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23318,19 +24664,28 @@ impl AstNode for JsWithStatement { } impl std::fmt::Debug for JsWithStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsWithStatement") - .field("with_token", &support::DebugSyntaxResult(self.with_token())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("object", &support::DebugSyntaxResult(self.object())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsWithStatement") + .field("with_token", &support::DebugSyntaxResult(self.with_token())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("object", &support::DebugSyntaxResult(self.object())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("JsWithStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23366,13 +24721,22 @@ impl AstNode for JsYieldArgument { } impl std::fmt::Debug for JsYieldArgument { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsYieldArgument") - .field( - "star_token", - &support::DebugOptionalElement(self.star_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsYieldArgument") + .field( + "star_token", + &support::DebugOptionalElement(self.star_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .finish() + } else { + f.debug_struct("JsYieldArgument").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23408,13 +24772,22 @@ impl AstNode for JsYieldExpression { } impl std::fmt::Debug for JsYieldExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsYieldExpression") - .field( - "yield_token", - &support::DebugSyntaxResult(self.yield_token()), - ) - .field("argument", &support::DebugOptionalElement(self.argument())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsYieldExpression") + .field( + "yield_token", + &support::DebugSyntaxResult(self.yield_token()), + ) + .field("argument", &support::DebugOptionalElement(self.argument())) + .finish() + } else { + f.debug_struct("JsYieldExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23450,13 +24823,22 @@ impl AstNode for JsxAttribute { } impl std::fmt::Debug for JsxAttribute { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxAttribute") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "initializer", - &support::DebugOptionalElement(self.initializer()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxAttribute") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "initializer", + &support::DebugOptionalElement(self.initializer()), + ) + .finish() + } else { + f.debug_struct("JsxAttribute").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23492,10 +24874,19 @@ impl AstNode for JsxAttributeInitializerClause { } impl std::fmt::Debug for JsxAttributeInitializerClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxAttributeInitializerClause") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxAttributeInitializerClause") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("JsxAttributeInitializerClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23531,21 +24922,30 @@ impl AstNode for JsxClosingElement { } impl std::fmt::Debug for JsxClosingElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxClosingElement") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field( - "slash_token", - &support::DebugSyntaxResult(self.slash_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxClosingElement") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field( + "slash_token", + &support::DebugSyntaxResult(self.slash_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("JsxClosingElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23581,20 +24981,29 @@ impl AstNode for JsxClosingFragment { } impl std::fmt::Debug for JsxClosingFragment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxClosingFragment") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field( - "slash_token", - &support::DebugSyntaxResult(self.slash_token()), - ) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxClosingFragment") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field( + "slash_token", + &support::DebugSyntaxResult(self.slash_token()), + ) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("JsxClosingFragment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23630,17 +25039,26 @@ impl AstNode for JsxElement { } impl std::fmt::Debug for JsxElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxElement") - .field( - "opening_element", - &support::DebugSyntaxResult(self.opening_element()), - ) - .field("children", &self.children()) - .field( - "closing_element", - &support::DebugSyntaxResult(self.closing_element()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxElement") + .field( + "opening_element", + &support::DebugSyntaxResult(self.opening_element()), + ) + .field("children", &self.children()) + .field( + "closing_element", + &support::DebugSyntaxResult(self.closing_element()), + ) + .finish() + } else { + f.debug_struct("JsxElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23676,17 +25094,26 @@ impl AstNode for JsxExpressionAttributeValue { } impl std::fmt::Debug for JsxExpressionAttributeValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxExpressionAttributeValue") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxExpressionAttributeValue") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsxExpressionAttributeValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23722,20 +25149,29 @@ impl AstNode for JsxExpressionChild { } impl std::fmt::Debug for JsxExpressionChild { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxExpressionChild") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field( - "expression", - &support::DebugOptionalElement(self.expression()), - ) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxExpressionChild") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field( + "expression", + &support::DebugOptionalElement(self.expression()), + ) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsxExpressionChild").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23771,17 +25207,26 @@ impl AstNode for JsxFragment { } impl std::fmt::Debug for JsxFragment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxFragment") - .field( - "opening_fragment", - &support::DebugSyntaxResult(self.opening_fragment()), - ) - .field("children", &self.children()) - .field( - "closing_fragment", - &support::DebugSyntaxResult(self.closing_fragment()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxFragment") + .field( + "opening_fragment", + &support::DebugSyntaxResult(self.opening_fragment()), + ) + .field("children", &self.children()) + .field( + "closing_fragment", + &support::DebugSyntaxResult(self.closing_fragment()), + ) + .finish() + } else { + f.debug_struct("JsxFragment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23817,11 +25262,20 @@ impl AstNode for JsxMemberName { } impl std::fmt::Debug for JsxMemberName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxMemberName") - .field("object", &support::DebugSyntaxResult(self.object())) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("member", &support::DebugSyntaxResult(self.member())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxMemberName") + .field("object", &support::DebugSyntaxResult(self.object())) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("member", &support::DebugSyntaxResult(self.member())) + .finish() + } else { + f.debug_struct("JsxMemberName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23857,12 +25311,21 @@ impl AstNode for JsxName { } impl std::fmt::Debug for JsxName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxName") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxName") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsxName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23898,14 +25361,23 @@ impl AstNode for JsxNamespaceName { } impl std::fmt::Debug for JsxNamespaceName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxNamespaceName") - .field("namespace", &support::DebugSyntaxResult(self.namespace())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxNamespaceName") + .field("namespace", &support::DebugSyntaxResult(self.namespace())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .finish() + } else { + f.debug_struct("JsxNamespaceName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23941,22 +25413,31 @@ impl AstNode for JsxOpeningElement { } impl std::fmt::Debug for JsxOpeningElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxOpeningElement") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .field("attributes", &self.attributes()) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxOpeningElement") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .field("attributes", &self.attributes()) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("JsxOpeningElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -23992,16 +25473,25 @@ impl AstNode for JsxOpeningFragment { } impl std::fmt::Debug for JsxOpeningFragment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxOpeningFragment") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxOpeningFragment") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("JsxOpeningFragment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24037,12 +25527,21 @@ impl AstNode for JsxReferenceIdentifier { } impl std::fmt::Debug for JsxReferenceIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxReferenceIdentifier") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxReferenceIdentifier") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsxReferenceIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24078,26 +25577,35 @@ impl AstNode for JsxSelfClosingElement { } impl std::fmt::Debug for JsxSelfClosingElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxSelfClosingElement") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .field("attributes", &self.attributes()) - .field( - "slash_token", - &support::DebugSyntaxResult(self.slash_token()), - ) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxSelfClosingElement") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .field("attributes", &self.attributes()) + .field( + "slash_token", + &support::DebugSyntaxResult(self.slash_token()), + ) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("JsxSelfClosingElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24133,21 +25641,30 @@ impl AstNode for JsxSpreadAttribute { } impl std::fmt::Debug for JsxSpreadAttribute { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxSpreadAttribute") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("argument", &support::DebugSyntaxResult(self.argument())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxSpreadAttribute") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("argument", &support::DebugSyntaxResult(self.argument())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsxSpreadAttribute").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24183,21 +25700,30 @@ impl AstNode for JsxSpreadChild { } impl std::fmt::Debug for JsxSpreadChild { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxSpreadChild") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxSpreadChild") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsxSpreadChild").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24233,12 +25759,21 @@ impl AstNode for JsxString { } impl std::fmt::Debug for JsxString { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxString") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxString") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsxString").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24274,9 +25809,18 @@ impl AstNode for JsxTagExpression { } impl std::fmt::Debug for JsxTagExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxTagExpression") - .field("tag", &support::DebugSyntaxResult(self.tag())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxTagExpression") + .field("tag", &support::DebugSyntaxResult(self.tag())) + .finish() + } else { + f.debug_struct("JsxTagExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24312,12 +25856,21 @@ impl AstNode for JsxText { } impl std::fmt::Debug for JsxText { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsxText") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsxText") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsxText").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24353,12 +25906,21 @@ impl AstNode for TsAbstractModifier { } impl std::fmt::Debug for TsAbstractModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAbstractModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAbstractModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsAbstractModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24394,12 +25956,21 @@ impl AstNode for TsAccessibilityModifier { } impl std::fmt::Debug for TsAccessibilityModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAccessibilityModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAccessibilityModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsAccessibilityModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24435,9 +26006,18 @@ impl AstNode for TsAnyType { } impl std::fmt::Debug for TsAnyType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAnyType") - .field("any_token", &support::DebugSyntaxResult(self.any_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAnyType") + .field("any_token", &support::DebugSyntaxResult(self.any_token())) + .finish() + } else { + f.debug_struct("TsAnyType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24473,20 +26053,29 @@ impl AstNode for TsArrayType { } impl std::fmt::Debug for TsArrayType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsArrayType") - .field( - "element_type", - &support::DebugSyntaxResult(self.element_type()), - ) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsArrayType") + .field( + "element_type", + &support::DebugSyntaxResult(self.element_type()), + ) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("TsArrayType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24522,11 +26111,20 @@ impl AstNode for TsAsAssignment { } impl std::fmt::Debug for TsAsAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAsAssignment") - .field("assignment", &support::DebugSyntaxResult(self.assignment())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAsAssignment") + .field("assignment", &support::DebugSyntaxResult(self.assignment())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsAsAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24562,11 +26160,20 @@ impl AstNode for TsAsExpression { } impl std::fmt::Debug for TsAsExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAsExpression") - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAsExpression") + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsAsExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24602,10 +26209,19 @@ impl AstNode for TsAssertsCondition { } impl std::fmt::Debug for TsAssertsCondition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAssertsCondition") - .field("is_token", &support::DebugSyntaxResult(self.is_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAssertsCondition") + .field("is_token", &support::DebugSyntaxResult(self.is_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsAssertsCondition").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24641,20 +26257,29 @@ impl AstNode for TsAssertsReturnType { } impl std::fmt::Debug for TsAssertsReturnType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsAssertsReturnType") - .field( - "asserts_token", - &support::DebugSyntaxResult(self.asserts_token()), - ) - .field( - "parameter_name", - &support::DebugSyntaxResult(self.parameter_name()), - ) - .field( - "predicate", - &support::DebugOptionalElement(self.predicate()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsAssertsReturnType") + .field( + "asserts_token", + &support::DebugSyntaxResult(self.asserts_token()), + ) + .field( + "parameter_name", + &support::DebugSyntaxResult(self.parameter_name()), + ) + .field( + "predicate", + &support::DebugOptionalElement(self.predicate()), + ) + .finish() + } else { + f.debug_struct("TsAssertsReturnType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24690,16 +26315,25 @@ impl AstNode for TsBigintLiteralType { } impl std::fmt::Debug for TsBigintLiteralType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsBigintLiteralType") - .field( - "minus_token", - &support::DebugOptionalElement(self.minus_token()), - ) - .field( - "literal_token", - &support::DebugSyntaxResult(self.literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsBigintLiteralType") + .field( + "minus_token", + &support::DebugOptionalElement(self.minus_token()), + ) + .field( + "literal_token", + &support::DebugSyntaxResult(self.literal_token()), + ) + .finish() + } else { + f.debug_struct("TsBigintLiteralType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24735,12 +26369,21 @@ impl AstNode for TsBigintType { } impl std::fmt::Debug for TsBigintType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsBigintType") - .field( - "bigint_token", - &support::DebugSyntaxResult(self.bigint_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsBigintType") + .field( + "bigint_token", + &support::DebugSyntaxResult(self.bigint_token()), + ) + .finish() + } else { + f.debug_struct("TsBigintType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24776,9 +26419,18 @@ impl AstNode for TsBooleanLiteralType { } impl std::fmt::Debug for TsBooleanLiteralType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsBooleanLiteralType") - .field("literal", &support::DebugSyntaxResult(self.literal())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsBooleanLiteralType") + .field("literal", &support::DebugSyntaxResult(self.literal())) + .finish() + } else { + f.debug_struct("TsBooleanLiteralType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24814,12 +26466,21 @@ impl AstNode for TsBooleanType { } impl std::fmt::Debug for TsBooleanType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsBooleanType") - .field( - "boolean_token", - &support::DebugSyntaxResult(self.boolean_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsBooleanType") + .field( + "boolean_token", + &support::DebugSyntaxResult(self.boolean_token()), + ) + .finish() + } else { + f.debug_struct("TsBooleanType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24855,21 +26516,30 @@ impl AstNode for TsCallSignatureTypeMember { } impl std::fmt::Debug for TsCallSignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsCallSignatureTypeMember") - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsCallSignatureTypeMember") + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsCallSignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24905,27 +26575,36 @@ impl AstNode for TsConditionalType { } impl std::fmt::Debug for TsConditionalType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsConditionalType") - .field("check_type", &support::DebugSyntaxResult(self.check_type())) - .field( - "extends_token", - &support::DebugSyntaxResult(self.extends_token()), - ) - .field( - "extends_type", - &support::DebugSyntaxResult(self.extends_type()), - ) - .field( - "question_mark_token", - &support::DebugSyntaxResult(self.question_mark_token()), - ) - .field("true_type", &support::DebugSyntaxResult(self.true_type())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("false_type", &support::DebugSyntaxResult(self.false_type())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsConditionalType") + .field("check_type", &support::DebugSyntaxResult(self.check_type())) + .field( + "extends_token", + &support::DebugSyntaxResult(self.extends_token()), + ) + .field( + "extends_type", + &support::DebugSyntaxResult(self.extends_type()), + ) + .field( + "question_mark_token", + &support::DebugSyntaxResult(self.question_mark_token()), + ) + .field("true_type", &support::DebugSyntaxResult(self.true_type())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("false_type", &support::DebugSyntaxResult(self.false_type())) + .finish() + } else { + f.debug_struct("TsConditionalType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -24961,12 +26640,21 @@ impl AstNode for TsConstModifier { } impl std::fmt::Debug for TsConstModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsConstModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsConstModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsConstModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25002,22 +26690,31 @@ impl AstNode for TsConstructSignatureTypeMember { } impl std::fmt::Debug for TsConstructSignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsConstructSignatureTypeMember") - .field("new_token", &support::DebugSyntaxResult(self.new_token())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsConstructSignatureTypeMember") + .field("new_token", &support::DebugSyntaxResult(self.new_token())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsConstructSignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25053,15 +26750,24 @@ impl AstNode for TsConstructorSignatureClassMember { } impl std::fmt::Debug for TsConstructorSignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsConstructorSignatureClassMember") - .field("modifiers", &self.modifiers()) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsConstructorSignatureClassMember") + .field("modifiers", &self.modifiers()) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsConstructorSignatureClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25097,26 +26803,35 @@ impl AstNode for TsConstructorType { } impl std::fmt::Debug for TsConstructorType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsConstructorType") - .field( - "abstract_token", - &support::DebugOptionalElement(self.abstract_token()), - ) - .field("new_token", &support::DebugSyntaxResult(self.new_token())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "fat_arrow_token", - &support::DebugSyntaxResult(self.fat_arrow_token()), - ) - .field( - "return_type", - &support::DebugSyntaxResult(self.return_type()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsConstructorType") + .field( + "abstract_token", + &support::DebugOptionalElement(self.abstract_token()), + ) + .field("new_token", &support::DebugSyntaxResult(self.new_token())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "fat_arrow_token", + &support::DebugSyntaxResult(self.fat_arrow_token()), + ) + .field( + "return_type", + &support::DebugSyntaxResult(self.return_type()), + ) + .finish() + } else { + f.debug_struct("TsConstructorType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25152,19 +26867,28 @@ impl AstNode for TsDeclarationModule { } impl std::fmt::Debug for TsDeclarationModule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDeclarationModule") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field( - "interpreter_token", - &support::DebugOptionalElement(self.interpreter_token()), - ) - .field("directives", &self.directives()) - .field("items", &self.items()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDeclarationModule") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field( + "interpreter_token", + &support::DebugOptionalElement(self.interpreter_token()), + ) + .field("directives", &self.directives()) + .field("items", &self.items()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("TsDeclarationModule").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25200,30 +26924,39 @@ impl AstNode for TsDeclareFunctionDeclaration { } impl std::fmt::Debug for TsDeclareFunctionDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDeclareFunctionDeclaration") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "function_token", - &support::DebugSyntaxResult(self.function_token()), - ) - .field("id", &support::DebugSyntaxResult(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDeclareFunctionDeclaration") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "function_token", + &support::DebugSyntaxResult(self.function_token()), + ) + .field("id", &support::DebugSyntaxResult(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsDeclareFunctionDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25260,30 +26993,40 @@ impl AstNode for TsDeclareFunctionExportDefaultDeclaration { } impl std::fmt::Debug for TsDeclareFunctionExportDefaultDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDeclareFunctionExportDefaultDeclaration") - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field( - "function_token", - &support::DebugSyntaxResult(self.function_token()), - ) - .field("id", &support::DebugOptionalElement(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDeclareFunctionExportDefaultDeclaration") + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field( + "function_token", + &support::DebugSyntaxResult(self.function_token()), + ) + .field("id", &support::DebugOptionalElement(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsDeclareFunctionExportDefaultDeclaration") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25319,12 +27062,21 @@ impl AstNode for TsDeclareModifier { } impl std::fmt::Debug for TsDeclareModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDeclareModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDeclareModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsDeclareModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25360,16 +27112,25 @@ impl AstNode for TsDeclareStatement { } impl std::fmt::Debug for TsDeclareStatement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDeclareStatement") - .field( - "declare_token", - &support::DebugSyntaxResult(self.declare_token()), - ) - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDeclareStatement") + .field( + "declare_token", + &support::DebugSyntaxResult(self.declare_token()), + ) + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .finish() + } else { + f.debug_struct("TsDeclareStatement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25405,10 +27166,19 @@ impl AstNode for TsDefaultTypeClause { } impl std::fmt::Debug for TsDefaultTypeClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDefaultTypeClause") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDefaultTypeClause") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsDefaultTypeClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25444,13 +27214,22 @@ impl AstNode for TsDefinitePropertyAnnotation { } impl std::fmt::Debug for TsDefinitePropertyAnnotation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDefinitePropertyAnnotation") - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .field( - "type_annotation", - &support::DebugSyntaxResult(self.type_annotation()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDefinitePropertyAnnotation") + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .field( + "type_annotation", + &support::DebugSyntaxResult(self.type_annotation()), + ) + .finish() + } else { + f.debug_struct("TsDefinitePropertyAnnotation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25486,13 +27265,22 @@ impl AstNode for TsDefiniteVariableAnnotation { } impl std::fmt::Debug for TsDefiniteVariableAnnotation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsDefiniteVariableAnnotation") - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .field( - "type_annotation", - &support::DebugSyntaxResult(self.type_annotation()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsDefiniteVariableAnnotation") + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .field( + "type_annotation", + &support::DebugSyntaxResult(self.type_annotation()), + ) + .finish() + } else { + f.debug_struct("TsDefiniteVariableAnnotation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25529,12 +27317,22 @@ impl AstNode for TsEmptyExternalModuleDeclarationBody { } impl std::fmt::Debug for TsEmptyExternalModuleDeclarationBody { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsEmptyExternalModuleDeclarationBody") - .field( - "semicolon_token", - &support::DebugSyntaxResult(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsEmptyExternalModuleDeclarationBody") + .field( + "semicolon_token", + &support::DebugSyntaxResult(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsEmptyExternalModuleDeclarationBody") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25570,23 +27368,32 @@ impl AstNode for TsEnumDeclaration { } impl std::fmt::Debug for TsEnumDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsEnumDeclaration") - .field( - "const_token", - &support::DebugOptionalElement(self.const_token()), - ) - .field("enum_token", &support::DebugSyntaxResult(self.enum_token())) - .field("id", &support::DebugSyntaxResult(self.id())) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsEnumDeclaration") + .field( + "const_token", + &support::DebugOptionalElement(self.const_token()), + ) + .field("enum_token", &support::DebugSyntaxResult(self.enum_token())) + .field("id", &support::DebugSyntaxResult(self.id())) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsEnumDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25622,13 +27429,22 @@ impl AstNode for TsEnumMember { } impl std::fmt::Debug for TsEnumMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsEnumMember") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "initializer", - &support::DebugOptionalElement(self.initializer()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsEnumMember") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "initializer", + &support::DebugOptionalElement(self.initializer()), + ) + .finish() + } else { + f.debug_struct("TsEnumMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25664,18 +27480,27 @@ impl AstNode for TsExportAsNamespaceClause { } impl std::fmt::Debug for TsExportAsNamespaceClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsExportAsNamespaceClause") - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field( - "namespace_token", - &support::DebugSyntaxResult(self.namespace_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsExportAsNamespaceClause") + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field( + "namespace_token", + &support::DebugSyntaxResult(self.namespace_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsExportAsNamespaceClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25711,14 +27536,23 @@ impl AstNode for TsExportAssignmentClause { } impl std::fmt::Debug for TsExportAssignmentClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsExportAssignmentClause") - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsExportAssignmentClause") + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsExportAssignmentClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25754,16 +27588,25 @@ impl AstNode for TsExportDeclareClause { } impl std::fmt::Debug for TsExportDeclareClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsExportDeclareClause") - .field( - "declare_token", - &support::DebugSyntaxResult(self.declare_token()), - ) - .field( - "declaration", - &support::DebugSyntaxResult(self.declaration()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsExportDeclareClause") + .field( + "declare_token", + &support::DebugSyntaxResult(self.declare_token()), + ) + .field( + "declaration", + &support::DebugSyntaxResult(self.declaration()), + ) + .finish() + } else { + f.debug_struct("TsExportDeclareClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25799,13 +27642,22 @@ impl AstNode for TsExtendsClause { } impl std::fmt::Debug for TsExtendsClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsExtendsClause") - .field( - "extends_token", - &support::DebugSyntaxResult(self.extends_token()), - ) - .field("types", &self.types()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsExtendsClause") + .field( + "extends_token", + &support::DebugSyntaxResult(self.extends_token()), + ) + .field("types", &self.types()) + .finish() + } else { + f.debug_struct("TsExtendsClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25841,14 +27693,23 @@ impl AstNode for TsExternalModuleDeclaration { } impl std::fmt::Debug for TsExternalModuleDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsExternalModuleDeclaration") - .field( - "module_token", - &support::DebugSyntaxResult(self.module_token()), - ) - .field("source", &support::DebugSyntaxResult(self.source())) - .field("body", &support::DebugOptionalElement(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsExternalModuleDeclaration") + .field( + "module_token", + &support::DebugSyntaxResult(self.module_token()), + ) + .field("source", &support::DebugSyntaxResult(self.source())) + .field("body", &support::DebugOptionalElement(self.body())) + .finish() + } else { + f.debug_struct("TsExternalModuleDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25884,21 +27745,30 @@ impl AstNode for TsExternalModuleReference { } impl std::fmt::Debug for TsExternalModuleReference { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsExternalModuleReference") - .field( - "require_token", - &support::DebugSyntaxResult(self.require_token()), - ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("source", &support::DebugSyntaxResult(self.source())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsExternalModuleReference") + .field( + "require_token", + &support::DebugSyntaxResult(self.require_token()), + ) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("source", &support::DebugSyntaxResult(self.source())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("TsExternalModuleReference").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25934,21 +27804,30 @@ impl AstNode for TsFunctionType { } impl std::fmt::Debug for TsFunctionType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsFunctionType") - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "fat_arrow_token", - &support::DebugSyntaxResult(self.fat_arrow_token()), - ) - .field( - "return_type", - &support::DebugSyntaxResult(self.return_type()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsFunctionType") + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "fat_arrow_token", + &support::DebugSyntaxResult(self.fat_arrow_token()), + ) + .field( + "return_type", + &support::DebugSyntaxResult(self.return_type()), + ) + .finish() + } else { + f.debug_struct("TsFunctionType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -25984,27 +27863,36 @@ impl AstNode for TsGetterSignatureClassMember { } impl std::fmt::Debug for TsGetterSignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsGetterSignatureClassMember") - .field("modifiers", &self.modifiers()) - .field("get_token", &support::DebugSyntaxResult(self.get_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "return_type", - &support::DebugOptionalElement(self.return_type()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsGetterSignatureClassMember") + .field("modifiers", &self.modifiers()) + .field("get_token", &support::DebugSyntaxResult(self.get_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "return_type", + &support::DebugOptionalElement(self.return_type()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsGetterSignatureClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26040,26 +27928,35 @@ impl AstNode for TsGetterSignatureTypeMember { } impl std::fmt::Debug for TsGetterSignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsGetterSignatureTypeMember") - .field("get_token", &support::DebugSyntaxResult(self.get_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsGetterSignatureTypeMember") + .field("get_token", &support::DebugSyntaxResult(self.get_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsGetterSignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26095,13 +27992,22 @@ impl AstNode for TsGlobalDeclaration { } impl std::fmt::Debug for TsGlobalDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsGlobalDeclaration") - .field( - "global_token", - &support::DebugSyntaxResult(self.global_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsGlobalDeclaration") + .field( + "global_token", + &support::DebugSyntaxResult(self.global_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("TsGlobalDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26137,9 +28043,18 @@ impl AstNode for TsIdentifierBinding { } impl std::fmt::Debug for TsIdentifierBinding { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsIdentifierBinding") - .field("name_token", &support::DebugSyntaxResult(self.name_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsIdentifierBinding") + .field("name_token", &support::DebugSyntaxResult(self.name_token())) + .finish() + } else { + f.debug_struct("TsIdentifierBinding").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26175,13 +28090,22 @@ impl AstNode for TsImplementsClause { } impl std::fmt::Debug for TsImplementsClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImplementsClause") - .field( - "implements_token", - &support::DebugSyntaxResult(self.implements_token()), - ) - .field("types", &self.types()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImplementsClause") + .field( + "implements_token", + &support::DebugSyntaxResult(self.implements_token()), + ) + .field("types", &self.types()) + .finish() + } else { + f.debug_struct("TsImplementsClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26217,26 +28141,35 @@ impl AstNode for TsImportEqualsDeclaration { } impl std::fmt::Debug for TsImportEqualsDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImportEqualsDeclaration") - .field( - "import_token", - &support::DebugSyntaxResult(self.import_token()), - ) - .field( - "type_token", - &support::DebugOptionalElement(self.type_token()), - ) - .field("id", &support::DebugSyntaxResult(self.id())) - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field( - "module_reference", - &support::DebugSyntaxResult(self.module_reference()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImportEqualsDeclaration") + .field( + "import_token", + &support::DebugSyntaxResult(self.import_token()), + ) + .field( + "type_token", + &support::DebugOptionalElement(self.type_token()), + ) + .field("id", &support::DebugSyntaxResult(self.id())) + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field( + "module_reference", + &support::DebugSyntaxResult(self.module_reference()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsImportEqualsDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26272,25 +28205,34 @@ impl AstNode for TsImportType { } impl std::fmt::Debug for TsImportType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImportType") - .field( - "typeof_token", - &support::DebugOptionalElement(self.typeof_token()), - ) - .field( - "import_token", - &support::DebugSyntaxResult(self.import_token()), - ) - .field("arguments", &support::DebugSyntaxResult(self.arguments())) - .field( - "qualifier_clause", - &support::DebugOptionalElement(self.qualifier_clause()), - ) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImportType") + .field( + "typeof_token", + &support::DebugOptionalElement(self.typeof_token()), + ) + .field( + "import_token", + &support::DebugSyntaxResult(self.import_token()), + ) + .field("arguments", &support::DebugSyntaxResult(self.arguments())) + .field( + "qualifier_clause", + &support::DebugOptionalElement(self.qualifier_clause()), + ) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .finish() + } else { + f.debug_struct("TsImportType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26326,25 +28268,34 @@ impl AstNode for TsImportTypeArguments { } impl std::fmt::Debug for TsImportTypeArguments { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImportTypeArguments") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("argument", &support::DebugSyntaxResult(self.argument())) - .field( - "comma_token", - &support::DebugOptionalElement(self.comma_token()), - ) - .field( - "ts_import_type_assertion_block", - &support::DebugOptionalElement(self.ts_import_type_assertion_block()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImportTypeArguments") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("argument", &support::DebugSyntaxResult(self.argument())) + .field( + "comma_token", + &support::DebugOptionalElement(self.comma_token()), + ) + .field( + "ts_import_type_assertion_block", + &support::DebugOptionalElement(self.ts_import_type_assertion_block()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("TsImportTypeArguments").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26380,22 +28331,31 @@ impl AstNode for TsImportTypeAssertion { } impl std::fmt::Debug for TsImportTypeAssertion { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImportTypeAssertion") - .field("with_token", &support::DebugSyntaxResult(self.with_token())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("assertions", &self.assertions()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImportTypeAssertion") + .field("with_token", &support::DebugSyntaxResult(self.with_token())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("assertions", &self.assertions()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsImportTypeAssertion").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26431,20 +28391,29 @@ impl AstNode for TsImportTypeAssertionBlock { } impl std::fmt::Debug for TsImportTypeAssertionBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImportTypeAssertionBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field( - "type_assertion", - &support::DebugSyntaxResult(self.type_assertion()), - ) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImportTypeAssertionBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field( + "type_assertion", + &support::DebugSyntaxResult(self.type_assertion()), + ) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsImportTypeAssertionBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26480,10 +28449,19 @@ impl AstNode for TsImportTypeQualifier { } impl std::fmt::Debug for TsImportTypeQualifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsImportTypeQualifier") - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsImportTypeQualifier") + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("TsImportTypeQualifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26519,12 +28497,21 @@ impl AstNode for TsInModifier { } impl std::fmt::Debug for TsInModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsInModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsInModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsInModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26560,26 +28547,35 @@ impl AstNode for TsIndexSignatureClassMember { } impl std::fmt::Debug for TsIndexSignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsIndexSignatureClassMember") - .field("modifiers", &self.modifiers()) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("parameter", &support::DebugSyntaxResult(self.parameter())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .field( - "type_annotation", - &support::DebugSyntaxResult(self.type_annotation()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsIndexSignatureClassMember") + .field("modifiers", &self.modifiers()) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("parameter", &support::DebugSyntaxResult(self.parameter())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .field( + "type_annotation", + &support::DebugSyntaxResult(self.type_annotation()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsIndexSignatureClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26615,13 +28611,22 @@ impl AstNode for TsIndexSignatureParameter { } impl std::fmt::Debug for TsIndexSignatureParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsIndexSignatureParameter") - .field("binding", &support::DebugSyntaxResult(self.binding())) - .field( - "type_annotation", - &support::DebugSyntaxResult(self.type_annotation()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsIndexSignatureParameter") + .field("binding", &support::DebugSyntaxResult(self.binding())) + .field( + "type_annotation", + &support::DebugSyntaxResult(self.type_annotation()), + ) + .finish() + } else { + f.debug_struct("TsIndexSignatureParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26657,29 +28662,38 @@ impl AstNode for TsIndexSignatureTypeMember { } impl std::fmt::Debug for TsIndexSignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsIndexSignatureTypeMember") - .field( - "readonly_token", - &support::DebugOptionalElement(self.readonly_token()), - ) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("parameter", &support::DebugSyntaxResult(self.parameter())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .field( - "type_annotation", - &support::DebugSyntaxResult(self.type_annotation()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsIndexSignatureTypeMember") + .field( + "readonly_token", + &support::DebugOptionalElement(self.readonly_token()), + ) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("parameter", &support::DebugSyntaxResult(self.parameter())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .field( + "type_annotation", + &support::DebugSyntaxResult(self.type_annotation()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsIndexSignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26715,21 +28729,30 @@ impl AstNode for TsIndexedAccessType { } impl std::fmt::Debug for TsIndexedAccessType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsIndexedAccessType") - .field( - "object_type", - &support::DebugSyntaxResult(self.object_type()), - ) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("index_type", &support::DebugSyntaxResult(self.index_type())) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsIndexedAccessType") + .field( + "object_type", + &support::DebugSyntaxResult(self.object_type()), + ) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("index_type", &support::DebugSyntaxResult(self.index_type())) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("TsIndexedAccessType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26765,17 +28788,26 @@ impl AstNode for TsInferType { } impl std::fmt::Debug for TsInferType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsInferType") - .field( - "infer_token", - &support::DebugSyntaxResult(self.infer_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "constraint", - &support::DebugOptionalElement(self.constraint()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsInferType") + .field( + "infer_token", + &support::DebugSyntaxResult(self.infer_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "constraint", + &support::DebugOptionalElement(self.constraint()), + ) + .finish() + } else { + f.debug_struct("TsInferType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26812,19 +28844,29 @@ impl AstNode for TsInitializedPropertySignatureClassMember { } impl std::fmt::Debug for TsInitializedPropertySignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsInitializedPropertySignatureClassMember") - .field("modifiers", &self.modifiers()) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "question_mark_token", - &support::DebugOptionalElement(self.question_mark_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsInitializedPropertySignatureClassMember") + .field("modifiers", &self.modifiers()) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "question_mark_token", + &support::DebugOptionalElement(self.question_mark_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsInitializedPropertySignatureClassMember") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26860,10 +28902,19 @@ impl AstNode for TsInstantiationExpression { } impl std::fmt::Debug for TsInstantiationExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsInstantiationExpression") - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field("arguments", &support::DebugSyntaxResult(self.arguments())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsInstantiationExpression") + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field("arguments", &support::DebugSyntaxResult(self.arguments())) + .finish() + } else { + f.debug_struct("TsInstantiationExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26899,30 +28950,39 @@ impl AstNode for TsInterfaceDeclaration { } impl std::fmt::Debug for TsInterfaceDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsInterfaceDeclaration") - .field( - "interface_token", - &support::DebugSyntaxResult(self.interface_token()), - ) - .field("id", &support::DebugSyntaxResult(self.id())) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field( - "extends_clause", - &support::DebugOptionalElement(self.extends_clause()), - ) - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsInterfaceDeclaration") + .field( + "interface_token", + &support::DebugSyntaxResult(self.interface_token()), + ) + .field("id", &support::DebugSyntaxResult(self.id())) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field( + "extends_clause", + &support::DebugOptionalElement(self.extends_clause()), + ) + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsInterfaceDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -26958,13 +29018,22 @@ impl AstNode for TsIntersectionType { } impl std::fmt::Debug for TsIntersectionType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsIntersectionType") - .field( - "leading_separator_token", - &support::DebugOptionalElement(self.leading_separator_token()), - ) - .field("types", &self.types()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsIntersectionType") + .field( + "leading_separator_token", + &support::DebugOptionalElement(self.leading_separator_token()), + ) + .field("types", &self.types()) + .finish() + } else { + f.debug_struct("TsIntersectionType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27000,9 +29069,18 @@ impl AstNode for TsLiteralEnumMemberName { } impl std::fmt::Debug for TsLiteralEnumMemberName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsLiteralEnumMemberName") - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsLiteralEnumMemberName") + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("TsLiteralEnumMemberName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27038,50 +29116,59 @@ impl AstNode for TsMappedType { } impl std::fmt::Debug for TsMappedType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsMappedType") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field( - "readonly_modifier", - &support::DebugOptionalElement(self.readonly_modifier()), - ) - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field( - "property_name", - &support::DebugSyntaxResult(self.property_name()), - ) - .field("in_token", &support::DebugSyntaxResult(self.in_token())) - .field("keys_type", &support::DebugSyntaxResult(self.keys_type())) - .field( - "as_clause", - &support::DebugOptionalElement(self.as_clause()), - ) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .field( - "optional_modifier", - &support::DebugOptionalElement(self.optional_modifier()), - ) - .field( - "mapped_type", - &support::DebugOptionalElement(self.mapped_type()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsMappedType") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field( + "readonly_modifier", + &support::DebugOptionalElement(self.readonly_modifier()), + ) + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field( + "property_name", + &support::DebugSyntaxResult(self.property_name()), + ) + .field("in_token", &support::DebugSyntaxResult(self.in_token())) + .field("keys_type", &support::DebugSyntaxResult(self.keys_type())) + .field( + "as_clause", + &support::DebugOptionalElement(self.as_clause()), + ) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .field( + "optional_modifier", + &support::DebugOptionalElement(self.optional_modifier()), + ) + .field( + "mapped_type", + &support::DebugOptionalElement(self.mapped_type()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsMappedType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27117,10 +29204,19 @@ impl AstNode for TsMappedTypeAsClause { } impl std::fmt::Debug for TsMappedTypeAsClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsMappedTypeAsClause") - .field("as_token", &support::DebugSyntaxResult(self.as_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsMappedTypeAsClause") + .field("as_token", &support::DebugSyntaxResult(self.as_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsMappedTypeAsClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27157,16 +29253,26 @@ impl AstNode for TsMappedTypeOptionalModifierClause { } impl std::fmt::Debug for TsMappedTypeOptionalModifierClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsMappedTypeOptionalModifierClause") - .field( - "operator_token", - &support::DebugOptionalElement(self.operator_token()), - ) - .field( - "question_mark_token", - &support::DebugSyntaxResult(self.question_mark_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsMappedTypeOptionalModifierClause") + .field( + "operator_token", + &support::DebugOptionalElement(self.operator_token()), + ) + .field( + "question_mark_token", + &support::DebugSyntaxResult(self.question_mark_token()), + ) + .finish() + } else { + f.debug_struct("TsMappedTypeOptionalModifierClause") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27203,16 +29309,26 @@ impl AstNode for TsMappedTypeReadonlyModifierClause { } impl std::fmt::Debug for TsMappedTypeReadonlyModifierClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsMappedTypeReadonlyModifierClause") - .field( - "operator_token", - &support::DebugOptionalElement(self.operator_token()), - ) - .field( - "readonly_token", - &support::DebugSyntaxResult(self.readonly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsMappedTypeReadonlyModifierClause") + .field( + "operator_token", + &support::DebugOptionalElement(self.operator_token()), + ) + .field( + "readonly_token", + &support::DebugSyntaxResult(self.readonly_token()), + ) + .finish() + } else { + f.debug_struct("TsMappedTypeReadonlyModifierClause") + .finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27248,31 +29364,40 @@ impl AstNode for TsMethodSignatureClassMember { } impl std::fmt::Debug for TsMethodSignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsMethodSignatureClassMember") - .field("modifiers", &self.modifiers()) - .field( - "async_token", - &support::DebugOptionalElement(self.async_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "question_mark_token", - &support::DebugOptionalElement(self.question_mark_token()), - ) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsMethodSignatureClassMember") + .field("modifiers", &self.modifiers()) + .field( + "async_token", + &support::DebugOptionalElement(self.async_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "question_mark_token", + &support::DebugOptionalElement(self.question_mark_token()), + ) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsMethodSignatureClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27308,26 +29433,35 @@ impl AstNode for TsMethodSignatureTypeMember { } impl std::fmt::Debug for TsMethodSignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsMethodSignatureTypeMember") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "optional_token", - &support::DebugOptionalElement(self.optional_token()), - ) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("parameters", &support::DebugSyntaxResult(self.parameters())) - .field( - "return_type_annotation", - &support::DebugOptionalElement(self.return_type_annotation()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsMethodSignatureTypeMember") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "optional_token", + &support::DebugOptionalElement(self.optional_token()), + ) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("parameters", &support::DebugSyntaxResult(self.parameters())) + .field( + "return_type_annotation", + &support::DebugOptionalElement(self.return_type_annotation()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsMethodSignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27363,17 +29497,26 @@ impl AstNode for TsModuleBlock { } impl std::fmt::Debug for TsModuleBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsModuleBlock") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("items", &self.items()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsModuleBlock") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("items", &self.items()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsModuleBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27409,14 +29552,23 @@ impl AstNode for TsModuleDeclaration { } impl std::fmt::Debug for TsModuleDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsModuleDeclaration") - .field( - "module_or_namespace", - &support::DebugSyntaxResult(self.module_or_namespace()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field("body", &support::DebugSyntaxResult(self.body())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsModuleDeclaration") + .field( + "module_or_namespace", + &support::DebugSyntaxResult(self.module_or_namespace()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field("body", &support::DebugSyntaxResult(self.body())) + .finish() + } else { + f.debug_struct("TsModuleDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27452,22 +29604,31 @@ impl AstNode for TsNamedTupleTypeElement { } impl std::fmt::Debug for TsNamedTupleTypeElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNamedTupleTypeElement") - .field( - "dotdotdot_token", - &support::DebugOptionalElement(self.dotdotdot_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "question_mark_token", - &support::DebugOptionalElement(self.question_mark_token()), - ) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNamedTupleTypeElement") + .field( + "dotdotdot_token", + &support::DebugOptionalElement(self.dotdotdot_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "question_mark_token", + &support::DebugOptionalElement(self.question_mark_token()), + ) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsNamedTupleTypeElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27503,12 +29664,21 @@ impl AstNode for TsNeverType { } impl std::fmt::Debug for TsNeverType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNeverType") - .field( - "never_token", - &support::DebugSyntaxResult(self.never_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNeverType") + .field( + "never_token", + &support::DebugSyntaxResult(self.never_token()), + ) + .finish() + } else { + f.debug_struct("TsNeverType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27544,10 +29714,19 @@ impl AstNode for TsNonNullAssertionAssignment { } impl std::fmt::Debug for TsNonNullAssertionAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNonNullAssertionAssignment") - .field("assignment", &support::DebugSyntaxResult(self.assignment())) - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNonNullAssertionAssignment") + .field("assignment", &support::DebugSyntaxResult(self.assignment())) + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .finish() + } else { + f.debug_struct("TsNonNullAssertionAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27583,10 +29762,19 @@ impl AstNode for TsNonNullAssertionExpression { } impl std::fmt::Debug for TsNonNullAssertionExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNonNullAssertionExpression") - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNonNullAssertionExpression") + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field("excl_token", &support::DebugSyntaxResult(self.excl_token())) + .finish() + } else { + f.debug_struct("TsNonNullAssertionExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27622,12 +29810,21 @@ impl AstNode for TsNonPrimitiveType { } impl std::fmt::Debug for TsNonPrimitiveType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNonPrimitiveType") - .field( - "object_token", - &support::DebugSyntaxResult(self.object_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNonPrimitiveType") + .field( + "object_token", + &support::DebugSyntaxResult(self.object_token()), + ) + .finish() + } else { + f.debug_struct("TsNonPrimitiveType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27663,12 +29860,21 @@ impl AstNode for TsNullLiteralType { } impl std::fmt::Debug for TsNullLiteralType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNullLiteralType") - .field( - "literal_token", - &support::DebugSyntaxResult(self.literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNullLiteralType") + .field( + "literal_token", + &support::DebugSyntaxResult(self.literal_token()), + ) + .finish() + } else { + f.debug_struct("TsNullLiteralType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27704,16 +29910,25 @@ impl AstNode for TsNumberLiteralType { } impl std::fmt::Debug for TsNumberLiteralType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNumberLiteralType") - .field( - "minus_token", - &support::DebugOptionalElement(self.minus_token()), - ) - .field( - "literal_token", - &support::DebugSyntaxResult(self.literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNumberLiteralType") + .field( + "minus_token", + &support::DebugOptionalElement(self.minus_token()), + ) + .field( + "literal_token", + &support::DebugSyntaxResult(self.literal_token()), + ) + .finish() + } else { + f.debug_struct("TsNumberLiteralType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27749,12 +29964,21 @@ impl AstNode for TsNumberType { } impl std::fmt::Debug for TsNumberType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsNumberType") - .field( - "number_token", - &support::DebugSyntaxResult(self.number_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsNumberType") + .field( + "number_token", + &support::DebugSyntaxResult(self.number_token()), + ) + .finish() + } else { + f.debug_struct("TsNumberType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27790,17 +30014,26 @@ impl AstNode for TsObjectType { } impl std::fmt::Debug for TsObjectType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsObjectType") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("members", &self.members()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsObjectType") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("members", &self.members()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsObjectType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27836,16 +30069,25 @@ impl AstNode for TsOptionalPropertyAnnotation { } impl std::fmt::Debug for TsOptionalPropertyAnnotation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsOptionalPropertyAnnotation") - .field( - "question_mark_token", - &support::DebugSyntaxResult(self.question_mark_token()), - ) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsOptionalPropertyAnnotation") + .field( + "question_mark_token", + &support::DebugSyntaxResult(self.question_mark_token()), + ) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .finish() + } else { + f.debug_struct("TsOptionalPropertyAnnotation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27881,13 +30123,22 @@ impl AstNode for TsOptionalTupleTypeElement { } impl std::fmt::Debug for TsOptionalTupleTypeElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsOptionalTupleTypeElement") - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field( - "question_mark_token", - &support::DebugSyntaxResult(self.question_mark_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsOptionalTupleTypeElement") + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field( + "question_mark_token", + &support::DebugSyntaxResult(self.question_mark_token()), + ) + .finish() + } else { + f.debug_struct("TsOptionalTupleTypeElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27923,12 +30174,21 @@ impl AstNode for TsOutModifier { } impl std::fmt::Debug for TsOutModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsOutModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsOutModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsOutModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -27964,12 +30224,21 @@ impl AstNode for TsOverrideModifier { } impl std::fmt::Debug for TsOverrideModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsOverrideModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsOverrideModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsOverrideModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28005,17 +30274,26 @@ impl AstNode for TsParenthesizedType { } impl std::fmt::Debug for TsParenthesizedType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsParenthesizedType") - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsParenthesizedType") + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .finish() + } else { + f.debug_struct("TsParenthesizedType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28051,14 +30329,23 @@ impl AstNode for TsPredicateReturnType { } impl std::fmt::Debug for TsPredicateReturnType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsPredicateReturnType") - .field( - "parameter_name", - &support::DebugSyntaxResult(self.parameter_name()), - ) - .field("is_token", &support::DebugSyntaxResult(self.is_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsPredicateReturnType") + .field( + "parameter_name", + &support::DebugSyntaxResult(self.parameter_name()), + ) + .field("is_token", &support::DebugSyntaxResult(self.is_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsPredicateReturnType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28094,14 +30381,23 @@ impl AstNode for TsPropertyParameter { } impl std::fmt::Debug for TsPropertyParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsPropertyParameter") - .field("decorators", &self.decorators()) - .field("modifiers", &self.modifiers()) - .field( - "formal_parameter", - &support::DebugSyntaxResult(self.formal_parameter()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsPropertyParameter") + .field("decorators", &self.decorators()) + .field("modifiers", &self.modifiers()) + .field( + "formal_parameter", + &support::DebugSyntaxResult(self.formal_parameter()), + ) + .finish() + } else { + f.debug_struct("TsPropertyParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28137,18 +30433,27 @@ impl AstNode for TsPropertySignatureClassMember { } impl std::fmt::Debug for TsPropertySignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsPropertySignatureClassMember") - .field("modifiers", &self.modifiers()) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "property_annotation", - &support::DebugOptionalElement(self.property_annotation()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsPropertySignatureClassMember") + .field("modifiers", &self.modifiers()) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "property_annotation", + &support::DebugOptionalElement(self.property_annotation()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsPropertySignatureClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28184,25 +30489,34 @@ impl AstNode for TsPropertySignatureTypeMember { } impl std::fmt::Debug for TsPropertySignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsPropertySignatureTypeMember") - .field( - "readonly_token", - &support::DebugOptionalElement(self.readonly_token()), - ) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "optional_token", - &support::DebugOptionalElement(self.optional_token()), - ) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsPropertySignatureTypeMember") + .field( + "readonly_token", + &support::DebugOptionalElement(self.readonly_token()), + ) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "optional_token", + &support::DebugOptionalElement(self.optional_token()), + ) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsPropertySignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28238,11 +30552,20 @@ impl AstNode for TsQualifiedModuleName { } impl std::fmt::Debug for TsQualifiedModuleName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsQualifiedModuleName") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsQualifiedModuleName") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("TsQualifiedModuleName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28278,11 +30601,20 @@ impl AstNode for TsQualifiedName { } impl std::fmt::Debug for TsQualifiedName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsQualifiedName") - .field("left", &support::DebugSyntaxResult(self.left())) - .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) - .field("right", &support::DebugSyntaxResult(self.right())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsQualifiedName") + .field("left", &support::DebugSyntaxResult(self.left())) + .field("dot_token", &support::DebugSyntaxResult(self.dot_token())) + .field("right", &support::DebugSyntaxResult(self.right())) + .finish() + } else { + f.debug_struct("TsQualifiedName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28318,12 +30650,21 @@ impl AstNode for TsReadonlyModifier { } impl std::fmt::Debug for TsReadonlyModifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsReadonlyModifier") - .field( - "modifier_token", - &support::DebugSyntaxResult(self.modifier_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsReadonlyModifier") + .field( + "modifier_token", + &support::DebugSyntaxResult(self.modifier_token()), + ) + .finish() + } else { + f.debug_struct("TsReadonlyModifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28359,13 +30700,22 @@ impl AstNode for TsReferenceType { } impl std::fmt::Debug for TsReferenceType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsReferenceType") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsReferenceType") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .finish() + } else { + f.debug_struct("TsReferenceType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28401,13 +30751,22 @@ impl AstNode for TsRestTupleTypeElement { } impl std::fmt::Debug for TsRestTupleTypeElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsRestTupleTypeElement") - .field( - "dotdotdot_token", - &support::DebugSyntaxResult(self.dotdotdot_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsRestTupleTypeElement") + .field( + "dotdotdot_token", + &support::DebugSyntaxResult(self.dotdotdot_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsRestTupleTypeElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28443,13 +30802,22 @@ impl AstNode for TsReturnTypeAnnotation { } impl std::fmt::Debug for TsReturnTypeAnnotation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsReturnTypeAnnotation") - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsReturnTypeAnnotation") + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsReturnTypeAnnotation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28485,14 +30853,23 @@ impl AstNode for TsSatisfiesAssignment { } impl std::fmt::Debug for TsSatisfiesAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsSatisfiesAssignment") - .field("assignment", &support::DebugSyntaxResult(self.assignment())) - .field( - "satisfies_token", - &support::DebugSyntaxResult(self.satisfies_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsSatisfiesAssignment") + .field("assignment", &support::DebugSyntaxResult(self.assignment())) + .field( + "satisfies_token", + &support::DebugSyntaxResult(self.satisfies_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsSatisfiesAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28528,14 +30905,23 @@ impl AstNode for TsSatisfiesExpression { } impl std::fmt::Debug for TsSatisfiesExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsSatisfiesExpression") - .field("expression", &support::DebugSyntaxResult(self.expression())) - .field( - "satisfies_token", - &support::DebugSyntaxResult(self.satisfies_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsSatisfiesExpression") + .field("expression", &support::DebugSyntaxResult(self.expression())) + .field( + "satisfies_token", + &support::DebugSyntaxResult(self.satisfies_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsSatisfiesExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28571,28 +30957,37 @@ impl AstNode for TsSetterSignatureClassMember { } impl std::fmt::Debug for TsSetterSignatureClassMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsSetterSignatureClassMember") - .field("modifiers", &self.modifiers()) - .field("set_token", &support::DebugSyntaxResult(self.set_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("parameter", &support::DebugSyntaxResult(self.parameter())) - .field( - "comma_token", - &support::DebugOptionalElement(self.comma_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsSetterSignatureClassMember") + .field("modifiers", &self.modifiers()) + .field("set_token", &support::DebugSyntaxResult(self.set_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("parameter", &support::DebugSyntaxResult(self.parameter())) + .field( + "comma_token", + &support::DebugOptionalElement(self.comma_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsSetterSignatureClassMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28628,27 +31023,36 @@ impl AstNode for TsSetterSignatureTypeMember { } impl std::fmt::Debug for TsSetterSignatureTypeMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsSetterSignatureTypeMember") - .field("set_token", &support::DebugSyntaxResult(self.set_token())) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field("parameter", &support::DebugSyntaxResult(self.parameter())) - .field( - "comma_token", - &support::DebugOptionalElement(self.comma_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) - .field( - "separator_token", - &support::DebugOptionalElement(self.separator_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsSetterSignatureTypeMember") + .field("set_token", &support::DebugSyntaxResult(self.set_token())) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "l_paren_token", + &support::DebugSyntaxResult(self.l_paren_token()), + ) + .field("parameter", &support::DebugSyntaxResult(self.parameter())) + .field( + "comma_token", + &support::DebugOptionalElement(self.comma_token()), + ) + .field( + "r_paren_token", + &support::DebugSyntaxResult(self.r_paren_token()), + ) + .field( + "separator_token", + &support::DebugOptionalElement(self.separator_token()), + ) + .finish() + } else { + f.debug_struct("TsSetterSignatureTypeMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28684,12 +31088,21 @@ impl AstNode for TsStringLiteralType { } impl std::fmt::Debug for TsStringLiteralType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsStringLiteralType") - .field( - "literal_token", - &support::DebugSyntaxResult(self.literal_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsStringLiteralType") + .field( + "literal_token", + &support::DebugSyntaxResult(self.literal_token()), + ) + .finish() + } else { + f.debug_struct("TsStringLiteralType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28725,12 +31138,21 @@ impl AstNode for TsStringType { } impl std::fmt::Debug for TsStringType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsStringType") - .field( - "string_token", - &support::DebugSyntaxResult(self.string_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsStringType") + .field( + "string_token", + &support::DebugSyntaxResult(self.string_token()), + ) + .finish() + } else { + f.debug_struct("TsStringType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28766,12 +31188,21 @@ impl AstNode for TsSymbolType { } impl std::fmt::Debug for TsSymbolType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsSymbolType") - .field( - "symbol_token", - &support::DebugSyntaxResult(self.symbol_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsSymbolType") + .field( + "symbol_token", + &support::DebugSyntaxResult(self.symbol_token()), + ) + .finish() + } else { + f.debug_struct("TsSymbolType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28807,12 +31238,21 @@ impl AstNode for TsTemplateChunkElement { } impl std::fmt::Debug for TsTemplateChunkElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTemplateChunkElement") - .field( - "template_chunk_token", - &support::DebugSyntaxResult(self.template_chunk_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTemplateChunkElement") + .field( + "template_chunk_token", + &support::DebugSyntaxResult(self.template_chunk_token()), + ) + .finish() + } else { + f.debug_struct("TsTemplateChunkElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28848,17 +31288,26 @@ impl AstNode for TsTemplateElement { } impl std::fmt::Debug for TsTemplateElement { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTemplateElement") - .field( - "dollar_curly_token", - &support::DebugSyntaxResult(self.dollar_curly_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTemplateElement") + .field( + "dollar_curly_token", + &support::DebugSyntaxResult(self.dollar_curly_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("TsTemplateElement").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28894,17 +31343,26 @@ impl AstNode for TsTemplateLiteralType { } impl std::fmt::Debug for TsTemplateLiteralType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTemplateLiteralType") - .field( - "l_tick_token", - &support::DebugSyntaxResult(self.l_tick_token()), - ) - .field("elements", &self.elements()) - .field( - "r_tick_token", - &support::DebugSyntaxResult(self.r_tick_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTemplateLiteralType") + .field( + "l_tick_token", + &support::DebugSyntaxResult(self.l_tick_token()), + ) + .field("elements", &self.elements()) + .field( + "r_tick_token", + &support::DebugSyntaxResult(self.r_tick_token()), + ) + .finish() + } else { + f.debug_struct("TsTemplateLiteralType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28940,13 +31398,22 @@ impl AstNode for TsThisParameter { } impl std::fmt::Debug for TsThisParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsThisParameter") - .field("this_token", &support::DebugSyntaxResult(self.this_token())) - .field( - "type_annotation", - &support::DebugOptionalElement(self.type_annotation()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsThisParameter") + .field("this_token", &support::DebugSyntaxResult(self.this_token())) + .field( + "type_annotation", + &support::DebugOptionalElement(self.type_annotation()), + ) + .finish() + } else { + f.debug_struct("TsThisParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -28982,9 +31449,18 @@ impl AstNode for TsThisType { } impl std::fmt::Debug for TsThisType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsThisType") - .field("this_token", &support::DebugSyntaxResult(self.this_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsThisType") + .field("this_token", &support::DebugSyntaxResult(self.this_token())) + .finish() + } else { + f.debug_struct("TsThisType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29020,17 +31496,26 @@ impl AstNode for TsTupleType { } impl std::fmt::Debug for TsTupleType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTupleType") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("elements", &self.elements()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTupleType") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("elements", &self.elements()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("TsTupleType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29066,23 +31551,32 @@ impl AstNode for TsTypeAliasDeclaration { } impl std::fmt::Debug for TsTypeAliasDeclaration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeAliasDeclaration") - .field("type_token", &support::DebugSyntaxResult(self.type_token())) - .field( - "binding_identifier", - &support::DebugSyntaxResult(self.binding_identifier()), - ) - .field( - "type_parameters", - &support::DebugOptionalElement(self.type_parameters()), - ) - .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field( - "semicolon_token", - &support::DebugOptionalElement(self.semicolon_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeAliasDeclaration") + .field("type_token", &support::DebugSyntaxResult(self.type_token())) + .field( + "binding_identifier", + &support::DebugSyntaxResult(self.binding_identifier()), + ) + .field( + "type_parameters", + &support::DebugOptionalElement(self.type_parameters()), + ) + .field("eq_token", &support::DebugSyntaxResult(self.eq_token())) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field( + "semicolon_token", + &support::DebugOptionalElement(self.semicolon_token()), + ) + .finish() + } else { + f.debug_struct("TsTypeAliasDeclaration").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29118,13 +31612,22 @@ impl AstNode for TsTypeAnnotation { } impl std::fmt::Debug for TsTypeAnnotation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeAnnotation") - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeAnnotation") + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsTypeAnnotation").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29160,17 +31663,26 @@ impl AstNode for TsTypeArguments { } impl std::fmt::Debug for TsTypeArguments { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeArguments") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("ts_type_argument_list", &self.ts_type_argument_list()) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeArguments") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("ts_type_argument_list", &self.ts_type_argument_list()) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("TsTypeArguments").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29206,18 +31718,27 @@ impl AstNode for TsTypeAssertionAssignment { } impl std::fmt::Debug for TsTypeAssertionAssignment { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeAssertionAssignment") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .field("assignment", &support::DebugSyntaxResult(self.assignment())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeAssertionAssignment") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .field("assignment", &support::DebugSyntaxResult(self.assignment())) + .finish() + } else { + f.debug_struct("TsTypeAssertionAssignment").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29253,18 +31774,27 @@ impl AstNode for TsTypeAssertionExpression { } impl std::fmt::Debug for TsTypeAssertionExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeAssertionExpression") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .field("expression", &support::DebugSyntaxResult(self.expression())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeAssertionExpression") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .field("expression", &support::DebugSyntaxResult(self.expression())) + .finish() + } else { + f.debug_struct("TsTypeAssertionExpression").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29300,13 +31830,22 @@ impl AstNode for TsTypeConstraintClause { } impl std::fmt::Debug for TsTypeConstraintClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeConstraintClause") - .field( - "extends_token", - &support::DebugSyntaxResult(self.extends_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeConstraintClause") + .field( + "extends_token", + &support::DebugSyntaxResult(self.extends_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsTypeConstraintClause").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29342,13 +31881,22 @@ impl AstNode for TsTypeOperatorType { } impl std::fmt::Debug for TsTypeOperatorType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeOperatorType") - .field( - "operator_token", - &support::DebugSyntaxResult(self.operator_token()), - ) - .field("ty", &support::DebugSyntaxResult(self.ty())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeOperatorType") + .field( + "operator_token", + &support::DebugSyntaxResult(self.operator_token()), + ) + .field("ty", &support::DebugSyntaxResult(self.ty())) + .finish() + } else { + f.debug_struct("TsTypeOperatorType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29384,15 +31932,24 @@ impl AstNode for TsTypeParameter { } impl std::fmt::Debug for TsTypeParameter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeParameter") - .field("modifiers", &self.modifiers()) - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "constraint", - &support::DebugOptionalElement(self.constraint()), - ) - .field("default", &support::DebugOptionalElement(self.default())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeParameter") + .field("modifiers", &self.modifiers()) + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "constraint", + &support::DebugOptionalElement(self.constraint()), + ) + .field("default", &support::DebugOptionalElement(self.default())) + .finish() + } else { + f.debug_struct("TsTypeParameter").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29428,12 +31985,21 @@ impl AstNode for TsTypeParameterName { } impl std::fmt::Debug for TsTypeParameterName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeParameterName") - .field( - "ident_token", - &support::DebugSyntaxResult(self.ident_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeParameterName") + .field( + "ident_token", + &support::DebugSyntaxResult(self.ident_token()), + ) + .finish() + } else { + f.debug_struct("TsTypeParameterName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29469,17 +32035,26 @@ impl AstNode for TsTypeParameters { } impl std::fmt::Debug for TsTypeParameters { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeParameters") - .field( - "l_angle_token", - &support::DebugSyntaxResult(self.l_angle_token()), - ) - .field("items", &self.items()) - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeParameters") + .field( + "l_angle_token", + &support::DebugSyntaxResult(self.l_angle_token()), + ) + .field("items", &self.items()) + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .finish() + } else { + f.debug_struct("TsTypeParameters").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29515,20 +32090,29 @@ impl AstNode for TsTypeofType { } impl std::fmt::Debug for TsTypeofType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsTypeofType") - .field( - "typeof_token", - &support::DebugSyntaxResult(self.typeof_token()), - ) - .field( - "expression_name", - &support::DebugSyntaxResult(self.expression_name()), - ) - .field( - "type_arguments", - &support::DebugOptionalElement(self.type_arguments()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsTypeofType") + .field( + "typeof_token", + &support::DebugSyntaxResult(self.typeof_token()), + ) + .field( + "expression_name", + &support::DebugSyntaxResult(self.expression_name()), + ) + .field( + "type_arguments", + &support::DebugOptionalElement(self.type_arguments()), + ) + .finish() + } else { + f.debug_struct("TsTypeofType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29564,12 +32148,21 @@ impl AstNode for TsUndefinedType { } impl std::fmt::Debug for TsUndefinedType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsUndefinedType") - .field( - "undefined_token", - &support::DebugSyntaxResult(self.undefined_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsUndefinedType") + .field( + "undefined_token", + &support::DebugSyntaxResult(self.undefined_token()), + ) + .finish() + } else { + f.debug_struct("TsUndefinedType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29605,13 +32198,22 @@ impl AstNode for TsUnionType { } impl std::fmt::Debug for TsUnionType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsUnionType") - .field( - "leading_separator_token", - &support::DebugOptionalElement(self.leading_separator_token()), - ) - .field("types", &self.types()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsUnionType") + .field( + "leading_separator_token", + &support::DebugOptionalElement(self.leading_separator_token()), + ) + .field("types", &self.types()) + .finish() + } else { + f.debug_struct("TsUnionType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29647,12 +32249,21 @@ impl AstNode for TsUnknownType { } impl std::fmt::Debug for TsUnknownType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsUnknownType") - .field( - "unknown_token", - &support::DebugSyntaxResult(self.unknown_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsUnknownType") + .field( + "unknown_token", + &support::DebugSyntaxResult(self.unknown_token()), + ) + .finish() + } else { + f.debug_struct("TsUnknownType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -29688,9 +32299,18 @@ impl AstNode for TsVoidType { } impl std::fmt::Debug for TsVoidType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("TsVoidType") - .field("void_token", &support::DebugSyntaxResult(self.void_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("TsVoidType") + .field("void_token", &support::DebugSyntaxResult(self.void_token())) + .finish() + } else { + f.debug_struct("TsVoidType").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_json_parser/tests/json_test_suite/undefined/structure_500_nested_arrays.json.snap b/crates/biome_json_parser/tests/json_test_suite/undefined/structure_500_nested_arrays.json.snap index e6aaef57e489..e148d6567188 100644 --- a/crates/biome_json_parser/tests/json_test_suite/undefined/structure_500_nested_arrays.json.snap +++ b/crates/biome_json_parser/tests/json_test_suite/undefined/structure_500_nested_arrays.json.snap @@ -2,7 +2,6 @@ source: crates/biome_json_parser/tests/spec_test.rs expression: snapshot --- - ## Input ```json @@ -63,2909 +62,7 @@ JsonRoot { JsonArrayValue { l_brack_token: L_BRACK@15..16 "[" [] [], elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@16..17 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@17..18 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@18..19 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@19..20 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@20..21 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@21..22 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@22..23 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@23..24 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@24..25 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@25..26 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@26..27 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@27..28 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@28..29 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@29..30 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@30..31 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@31..32 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@32..33 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@33..34 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@34..35 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@35..36 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@36..37 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@37..38 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@38..39 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@39..40 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@40..41 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@41..42 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@42..43 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@43..44 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@44..45 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@45..46 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@46..47 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@47..48 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@48..49 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@49..50 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@50..51 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@51..52 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@52..53 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@53..54 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@54..55 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@55..56 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@56..57 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@57..58 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@58..59 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@59..60 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@60..61 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@61..62 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@62..63 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@63..64 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@64..65 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@65..66 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@66..67 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@67..68 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@68..69 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@69..70 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@70..71 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@71..72 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@72..73 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@73..74 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@74..75 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@75..76 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@76..77 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@77..78 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@78..79 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@79..80 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@80..81 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@81..82 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@82..83 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@83..84 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@84..85 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@85..86 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@86..87 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@87..88 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@88..89 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@89..90 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@90..91 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@91..92 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@92..93 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@93..94 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@94..95 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@95..96 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@96..97 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@97..98 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@98..99 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@99..100 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@100..101 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@101..102 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@102..103 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@103..104 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@104..105 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@105..106 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@106..107 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@107..108 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@108..109 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@109..110 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@110..111 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@111..112 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@112..113 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@113..114 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@114..115 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@115..116 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@116..117 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@117..118 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@118..119 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@119..120 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@120..121 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@121..122 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@122..123 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@123..124 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@124..125 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@125..126 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@126..127 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@127..128 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@128..129 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@129..130 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@130..131 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@131..132 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@132..133 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@133..134 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@134..135 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@135..136 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@136..137 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@137..138 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@138..139 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@139..140 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@140..141 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@141..142 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@142..143 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@143..144 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@144..145 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@145..146 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@146..147 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@147..148 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@148..149 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@149..150 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@150..151 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@151..152 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@152..153 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@153..154 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@154..155 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@155..156 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@156..157 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@157..158 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@158..159 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@159..160 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@160..161 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@161..162 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@162..163 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@163..164 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@164..165 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@165..166 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@166..167 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@167..168 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@168..169 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@169..170 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@170..171 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@171..172 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@172..173 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@173..174 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@174..175 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@175..176 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@176..177 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@177..178 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@178..179 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@179..180 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@180..181 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@181..182 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@182..183 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@183..184 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@184..185 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@185..186 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@186..187 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@187..188 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@188..189 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@189..190 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@190..191 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@191..192 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@192..193 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@193..194 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@194..195 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@195..196 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@196..197 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@197..198 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@198..199 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@199..200 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@200..201 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@201..202 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@202..203 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@203..204 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@204..205 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@205..206 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@206..207 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@207..208 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@208..209 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@209..210 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@210..211 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@211..212 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@212..213 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@213..214 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@214..215 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@215..216 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@216..217 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@217..218 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@218..219 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@219..220 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@220..221 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@221..222 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@222..223 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@223..224 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@224..225 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@225..226 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@226..227 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@227..228 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@228..229 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@229..230 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@230..231 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@231..232 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@232..233 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@233..234 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@234..235 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@235..236 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@236..237 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@237..238 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@238..239 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@239..240 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@240..241 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@241..242 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@242..243 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@243..244 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@244..245 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@245..246 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@246..247 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@247..248 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@248..249 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@249..250 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@250..251 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@251..252 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@252..253 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@253..254 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@254..255 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@255..256 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@256..257 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@257..258 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@258..259 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@259..260 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@260..261 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@261..262 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@262..263 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@263..264 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@264..265 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@265..266 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@266..267 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@267..268 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@268..269 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@269..270 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@270..271 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@271..272 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@272..273 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@273..274 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@274..275 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@275..276 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@276..277 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@277..278 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@278..279 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@279..280 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@280..281 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@281..282 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@282..283 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@283..284 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@284..285 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@285..286 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@286..287 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@287..288 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@288..289 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@289..290 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@290..291 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@291..292 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@292..293 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@293..294 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@294..295 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@295..296 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@296..297 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@297..298 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@298..299 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@299..300 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@300..301 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@301..302 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@302..303 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@303..304 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@304..305 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@305..306 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@306..307 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@307..308 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@308..309 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@309..310 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@310..311 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@311..312 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@312..313 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@313..314 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@314..315 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@315..316 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@316..317 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@317..318 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@318..319 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@319..320 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@320..321 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@321..322 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@322..323 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@323..324 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@324..325 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@325..326 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@326..327 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@327..328 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@328..329 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@329..330 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@330..331 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@331..332 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@332..333 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@333..334 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@334..335 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@335..336 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@336..337 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@337..338 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@338..339 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@339..340 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@340..341 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@341..342 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@342..343 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@343..344 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@344..345 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@345..346 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@346..347 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@347..348 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@348..349 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@349..350 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@350..351 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@351..352 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@352..353 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@353..354 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@354..355 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@355..356 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@356..357 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@357..358 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@358..359 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@359..360 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@360..361 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@361..362 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@362..363 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@363..364 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@364..365 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@365..366 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@366..367 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@367..368 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@368..369 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@369..370 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@370..371 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@371..372 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@372..373 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@373..374 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@374..375 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@375..376 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@376..377 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@377..378 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@378..379 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@379..380 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@380..381 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@381..382 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@382..383 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@383..384 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@384..385 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@385..386 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@386..387 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@387..388 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@388..389 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@389..390 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@390..391 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@391..392 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@392..393 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@393..394 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@394..395 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@395..396 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@396..397 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@397..398 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@398..399 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@399..400 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@400..401 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@401..402 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@402..403 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@403..404 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@404..405 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@405..406 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@406..407 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@407..408 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@408..409 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@409..410 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@410..411 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@411..412 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@412..413 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@413..414 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@414..415 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@415..416 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@416..417 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@417..418 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@418..419 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@419..420 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@420..421 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@421..422 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@422..423 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@423..424 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@424..425 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@425..426 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@426..427 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@427..428 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@428..429 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@429..430 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@430..431 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@431..432 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@432..433 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@433..434 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@434..435 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@435..436 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@436..437 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@437..438 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@438..439 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@439..440 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@440..441 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@441..442 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@442..443 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@443..444 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@444..445 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@445..446 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@446..447 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@447..448 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@448..449 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@449..450 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@450..451 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@451..452 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@452..453 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@453..454 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@454..455 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@455..456 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@456..457 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@457..458 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@458..459 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@459..460 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@460..461 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@461..462 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@462..463 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@463..464 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@464..465 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@465..466 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@466..467 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@467..468 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@468..469 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@469..470 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@470..471 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@471..472 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@472..473 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@473..474 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@474..475 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@475..476 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@476..477 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@477..478 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@478..479 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@479..480 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@480..481 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@481..482 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@482..483 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@483..484 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@484..485 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@485..486 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@486..487 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@487..488 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@488..489 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@489..490 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@490..491 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@491..492 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@492..493 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@493..494 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@494..495 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@495..496 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@496..497 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@497..498 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@498..499 "[" [] [], - elements: JsonArrayElementList [ - JsonArrayValue { - l_brack_token: L_BRACK@499..500 "[" [] [], - elements: JsonArrayElementList [], - r_brack_token: R_BRACK@500..501 "]" [] [], - }, - ], - r_brack_token: R_BRACK@501..502 "]" [] [], - }, - ], - r_brack_token: R_BRACK@502..503 "]" [] [], - }, - ], - r_brack_token: R_BRACK@503..504 "]" [] [], - }, - ], - r_brack_token: R_BRACK@504..505 "]" [] [], - }, - ], - r_brack_token: R_BRACK@505..506 "]" [] [], - }, - ], - r_brack_token: R_BRACK@506..507 "]" [] [], - }, - ], - r_brack_token: R_BRACK@507..508 "]" [] [], - }, - ], - r_brack_token: R_BRACK@508..509 "]" [] [], - }, - ], - r_brack_token: R_BRACK@509..510 "]" [] [], - }, - ], - r_brack_token: R_BRACK@510..511 "]" [] [], - }, - ], - r_brack_token: R_BRACK@511..512 "]" [] [], - }, - ], - r_brack_token: R_BRACK@512..513 "]" [] [], - }, - ], - r_brack_token: R_BRACK@513..514 "]" [] [], - }, - ], - r_brack_token: R_BRACK@514..515 "]" [] [], - }, - ], - r_brack_token: R_BRACK@515..516 "]" [] [], - }, - ], - r_brack_token: R_BRACK@516..517 "]" [] [], - }, - ], - r_brack_token: R_BRACK@517..518 "]" [] [], - }, - ], - r_brack_token: R_BRACK@518..519 "]" [] [], - }, - ], - r_brack_token: R_BRACK@519..520 "]" [] [], - }, - ], - r_brack_token: R_BRACK@520..521 "]" [] [], - }, - ], - r_brack_token: R_BRACK@521..522 "]" [] [], - }, - ], - r_brack_token: R_BRACK@522..523 "]" [] [], - }, - ], - r_brack_token: R_BRACK@523..524 "]" [] [], - }, - ], - r_brack_token: R_BRACK@524..525 "]" [] [], - }, - ], - r_brack_token: R_BRACK@525..526 "]" [] [], - }, - ], - r_brack_token: R_BRACK@526..527 "]" [] [], - }, - ], - r_brack_token: R_BRACK@527..528 "]" [] [], - }, - ], - r_brack_token: R_BRACK@528..529 "]" [] [], - }, - ], - r_brack_token: R_BRACK@529..530 "]" [] [], - }, - ], - r_brack_token: R_BRACK@530..531 "]" [] [], - }, - ], - r_brack_token: R_BRACK@531..532 "]" [] [], - }, - ], - r_brack_token: R_BRACK@532..533 "]" [] [], - }, - ], - r_brack_token: R_BRACK@533..534 "]" [] [], - }, - ], - r_brack_token: R_BRACK@534..535 "]" [] [], - }, - ], - r_brack_token: R_BRACK@535..536 "]" [] [], - }, - ], - r_brack_token: R_BRACK@536..537 "]" [] [], - }, - ], - r_brack_token: R_BRACK@537..538 "]" [] [], - }, - ], - r_brack_token: R_BRACK@538..539 "]" [] [], - }, - ], - r_brack_token: R_BRACK@539..540 "]" [] [], - }, - ], - r_brack_token: R_BRACK@540..541 "]" [] [], - }, - ], - r_brack_token: R_BRACK@541..542 "]" [] [], - }, - ], - r_brack_token: R_BRACK@542..543 "]" [] [], - }, - ], - r_brack_token: R_BRACK@543..544 "]" [] [], - }, - ], - r_brack_token: R_BRACK@544..545 "]" [] [], - }, - ], - r_brack_token: R_BRACK@545..546 "]" [] [], - }, - ], - r_brack_token: R_BRACK@546..547 "]" [] [], - }, - ], - r_brack_token: R_BRACK@547..548 "]" [] [], - }, - ], - r_brack_token: R_BRACK@548..549 "]" [] [], - }, - ], - r_brack_token: R_BRACK@549..550 "]" [] [], - }, - ], - r_brack_token: R_BRACK@550..551 "]" [] [], - }, - ], - r_brack_token: R_BRACK@551..552 "]" [] [], - }, - ], - r_brack_token: R_BRACK@552..553 "]" [] [], - }, - ], - r_brack_token: R_BRACK@553..554 "]" [] [], - }, - ], - r_brack_token: R_BRACK@554..555 "]" [] [], - }, - ], - r_brack_token: R_BRACK@555..556 "]" [] [], - }, - ], - r_brack_token: R_BRACK@556..557 "]" [] [], - }, - ], - r_brack_token: R_BRACK@557..558 "]" [] [], - }, - ], - r_brack_token: R_BRACK@558..559 "]" [] [], - }, - ], - r_brack_token: R_BRACK@559..560 "]" [] [], - }, - ], - r_brack_token: R_BRACK@560..561 "]" [] [], - }, - ], - r_brack_token: R_BRACK@561..562 "]" [] [], - }, - ], - r_brack_token: R_BRACK@562..563 "]" [] [], - }, - ], - r_brack_token: R_BRACK@563..564 "]" [] [], - }, - ], - r_brack_token: R_BRACK@564..565 "]" [] [], - }, - ], - r_brack_token: R_BRACK@565..566 "]" [] [], - }, - ], - r_brack_token: R_BRACK@566..567 "]" [] [], - }, - ], - r_brack_token: R_BRACK@567..568 "]" [] [], - }, - ], - r_brack_token: R_BRACK@568..569 "]" [] [], - }, - ], - r_brack_token: R_BRACK@569..570 "]" [] [], - }, - ], - r_brack_token: R_BRACK@570..571 "]" [] [], - }, - ], - r_brack_token: R_BRACK@571..572 "]" [] [], - }, - ], - r_brack_token: R_BRACK@572..573 "]" [] [], - }, - ], - r_brack_token: R_BRACK@573..574 "]" [] [], - }, - ], - r_brack_token: R_BRACK@574..575 "]" [] [], - }, - ], - r_brack_token: R_BRACK@575..576 "]" [] [], - }, - ], - r_brack_token: R_BRACK@576..577 "]" [] [], - }, - ], - r_brack_token: R_BRACK@577..578 "]" [] [], - }, - ], - r_brack_token: R_BRACK@578..579 "]" [] [], - }, - ], - r_brack_token: R_BRACK@579..580 "]" [] [], - }, - ], - r_brack_token: R_BRACK@580..581 "]" [] [], - }, - ], - r_brack_token: R_BRACK@581..582 "]" [] [], - }, - ], - r_brack_token: R_BRACK@582..583 "]" [] [], - }, - ], - r_brack_token: R_BRACK@583..584 "]" [] [], - }, - ], - r_brack_token: R_BRACK@584..585 "]" [] [], - }, - ], - r_brack_token: R_BRACK@585..586 "]" [] [], - }, - ], - r_brack_token: R_BRACK@586..587 "]" [] [], - }, - ], - r_brack_token: R_BRACK@587..588 "]" [] [], - }, - ], - r_brack_token: R_BRACK@588..589 "]" [] [], - }, - ], - r_brack_token: R_BRACK@589..590 "]" [] [], - }, - ], - r_brack_token: R_BRACK@590..591 "]" [] [], - }, - ], - r_brack_token: R_BRACK@591..592 "]" [] [], - }, - ], - r_brack_token: R_BRACK@592..593 "]" [] [], - }, - ], - r_brack_token: R_BRACK@593..594 "]" [] [], - }, - ], - r_brack_token: R_BRACK@594..595 "]" [] [], - }, - ], - r_brack_token: R_BRACK@595..596 "]" [] [], - }, - ], - r_brack_token: R_BRACK@596..597 "]" [] [], - }, - ], - r_brack_token: R_BRACK@597..598 "]" [] [], - }, - ], - r_brack_token: R_BRACK@598..599 "]" [] [], - }, - ], - r_brack_token: R_BRACK@599..600 "]" [] [], - }, - ], - r_brack_token: R_BRACK@600..601 "]" [] [], - }, - ], - r_brack_token: R_BRACK@601..602 "]" [] [], - }, - ], - r_brack_token: R_BRACK@602..603 "]" [] [], - }, - ], - r_brack_token: R_BRACK@603..604 "]" [] [], - }, - ], - r_brack_token: R_BRACK@604..605 "]" [] [], - }, - ], - r_brack_token: R_BRACK@605..606 "]" [] [], - }, - ], - r_brack_token: R_BRACK@606..607 "]" [] [], - }, - ], - r_brack_token: R_BRACK@607..608 "]" [] [], - }, - ], - r_brack_token: R_BRACK@608..609 "]" [] [], - }, - ], - r_brack_token: R_BRACK@609..610 "]" [] [], - }, - ], - r_brack_token: R_BRACK@610..611 "]" [] [], - }, - ], - r_brack_token: R_BRACK@611..612 "]" [] [], - }, - ], - r_brack_token: R_BRACK@612..613 "]" [] [], - }, - ], - r_brack_token: R_BRACK@613..614 "]" [] [], - }, - ], - r_brack_token: R_BRACK@614..615 "]" [] [], - }, - ], - r_brack_token: R_BRACK@615..616 "]" [] [], - }, - ], - r_brack_token: R_BRACK@616..617 "]" [] [], - }, - ], - r_brack_token: R_BRACK@617..618 "]" [] [], - }, - ], - r_brack_token: R_BRACK@618..619 "]" [] [], - }, - ], - r_brack_token: R_BRACK@619..620 "]" [] [], - }, - ], - r_brack_token: R_BRACK@620..621 "]" [] [], - }, - ], - r_brack_token: R_BRACK@621..622 "]" [] [], - }, - ], - r_brack_token: R_BRACK@622..623 "]" [] [], - }, - ], - r_brack_token: R_BRACK@623..624 "]" [] [], - }, - ], - r_brack_token: R_BRACK@624..625 "]" [] [], - }, - ], - r_brack_token: R_BRACK@625..626 "]" [] [], - }, - ], - r_brack_token: R_BRACK@626..627 "]" [] [], - }, - ], - r_brack_token: R_BRACK@627..628 "]" [] [], - }, - ], - r_brack_token: R_BRACK@628..629 "]" [] [], - }, - ], - r_brack_token: R_BRACK@629..630 "]" [] [], - }, - ], - r_brack_token: R_BRACK@630..631 "]" [] [], - }, - ], - r_brack_token: R_BRACK@631..632 "]" [] [], - }, - ], - r_brack_token: R_BRACK@632..633 "]" [] [], - }, - ], - r_brack_token: R_BRACK@633..634 "]" [] [], - }, - ], - r_brack_token: R_BRACK@634..635 "]" [] [], - }, - ], - r_brack_token: R_BRACK@635..636 "]" [] [], - }, - ], - r_brack_token: R_BRACK@636..637 "]" [] [], - }, - ], - r_brack_token: R_BRACK@637..638 "]" [] [], - }, - ], - r_brack_token: R_BRACK@638..639 "]" [] [], - }, - ], - r_brack_token: R_BRACK@639..640 "]" [] [], - }, - ], - r_brack_token: R_BRACK@640..641 "]" [] [], - }, - ], - r_brack_token: R_BRACK@641..642 "]" [] [], - }, - ], - r_brack_token: R_BRACK@642..643 "]" [] [], - }, - ], - r_brack_token: R_BRACK@643..644 "]" [] [], - }, - ], - r_brack_token: R_BRACK@644..645 "]" [] [], - }, - ], - r_brack_token: R_BRACK@645..646 "]" [] [], - }, - ], - r_brack_token: R_BRACK@646..647 "]" [] [], - }, - ], - r_brack_token: R_BRACK@647..648 "]" [] [], - }, - ], - r_brack_token: R_BRACK@648..649 "]" [] [], - }, - ], - r_brack_token: R_BRACK@649..650 "]" [] [], - }, - ], - r_brack_token: R_BRACK@650..651 "]" [] [], - }, - ], - r_brack_token: R_BRACK@651..652 "]" [] [], - }, - ], - r_brack_token: R_BRACK@652..653 "]" [] [], - }, - ], - r_brack_token: R_BRACK@653..654 "]" [] [], - }, - ], - r_brack_token: R_BRACK@654..655 "]" [] [], - }, - ], - r_brack_token: R_BRACK@655..656 "]" [] [], - }, - ], - r_brack_token: R_BRACK@656..657 "]" [] [], - }, - ], - r_brack_token: R_BRACK@657..658 "]" [] [], - }, - ], - r_brack_token: R_BRACK@658..659 "]" [] [], - }, - ], - r_brack_token: R_BRACK@659..660 "]" [] [], - }, - ], - r_brack_token: R_BRACK@660..661 "]" [] [], - }, - ], - r_brack_token: R_BRACK@661..662 "]" [] [], - }, - ], - r_brack_token: R_BRACK@662..663 "]" [] [], - }, - ], - r_brack_token: R_BRACK@663..664 "]" [] [], - }, - ], - r_brack_token: R_BRACK@664..665 "]" [] [], - }, - ], - r_brack_token: R_BRACK@665..666 "]" [] [], - }, - ], - r_brack_token: R_BRACK@666..667 "]" [] [], - }, - ], - r_brack_token: R_BRACK@667..668 "]" [] [], - }, - ], - r_brack_token: R_BRACK@668..669 "]" [] [], - }, - ], - r_brack_token: R_BRACK@669..670 "]" [] [], - }, - ], - r_brack_token: R_BRACK@670..671 "]" [] [], - }, - ], - r_brack_token: R_BRACK@671..672 "]" [] [], - }, - ], - r_brack_token: R_BRACK@672..673 "]" [] [], - }, - ], - r_brack_token: R_BRACK@673..674 "]" [] [], - }, - ], - r_brack_token: R_BRACK@674..675 "]" [] [], - }, - ], - r_brack_token: R_BRACK@675..676 "]" [] [], - }, - ], - r_brack_token: R_BRACK@676..677 "]" [] [], - }, - ], - r_brack_token: R_BRACK@677..678 "]" [] [], - }, - ], - r_brack_token: R_BRACK@678..679 "]" [] [], - }, - ], - r_brack_token: R_BRACK@679..680 "]" [] [], - }, - ], - r_brack_token: R_BRACK@680..681 "]" [] [], - }, - ], - r_brack_token: R_BRACK@681..682 "]" [] [], - }, - ], - r_brack_token: R_BRACK@682..683 "]" [] [], - }, - ], - r_brack_token: R_BRACK@683..684 "]" [] [], - }, - ], - r_brack_token: R_BRACK@684..685 "]" [] [], - }, - ], - r_brack_token: R_BRACK@685..686 "]" [] [], - }, - ], - r_brack_token: R_BRACK@686..687 "]" [] [], - }, - ], - r_brack_token: R_BRACK@687..688 "]" [] [], - }, - ], - r_brack_token: R_BRACK@688..689 "]" [] [], - }, - ], - r_brack_token: R_BRACK@689..690 "]" [] [], - }, - ], - r_brack_token: R_BRACK@690..691 "]" [] [], - }, - ], - r_brack_token: R_BRACK@691..692 "]" [] [], - }, - ], - r_brack_token: R_BRACK@692..693 "]" [] [], - }, - ], - r_brack_token: R_BRACK@693..694 "]" [] [], - }, - ], - r_brack_token: R_BRACK@694..695 "]" [] [], - }, - ], - r_brack_token: R_BRACK@695..696 "]" [] [], - }, - ], - r_brack_token: R_BRACK@696..697 "]" [] [], - }, - ], - r_brack_token: R_BRACK@697..698 "]" [] [], - }, - ], - r_brack_token: R_BRACK@698..699 "]" [] [], - }, - ], - r_brack_token: R_BRACK@699..700 "]" [] [], - }, - ], - r_brack_token: R_BRACK@700..701 "]" [] [], - }, - ], - r_brack_token: R_BRACK@701..702 "]" [] [], - }, - ], - r_brack_token: R_BRACK@702..703 "]" [] [], - }, - ], - r_brack_token: R_BRACK@703..704 "]" [] [], - }, - ], - r_brack_token: R_BRACK@704..705 "]" [] [], - }, - ], - r_brack_token: R_BRACK@705..706 "]" [] [], - }, - ], - r_brack_token: R_BRACK@706..707 "]" [] [], - }, - ], - r_brack_token: R_BRACK@707..708 "]" [] [], - }, - ], - r_brack_token: R_BRACK@708..709 "]" [] [], - }, - ], - r_brack_token: R_BRACK@709..710 "]" [] [], - }, - ], - r_brack_token: R_BRACK@710..711 "]" [] [], - }, - ], - r_brack_token: R_BRACK@711..712 "]" [] [], - }, - ], - r_brack_token: R_BRACK@712..713 "]" [] [], - }, - ], - r_brack_token: R_BRACK@713..714 "]" [] [], - }, - ], - r_brack_token: R_BRACK@714..715 "]" [] [], - }, - ], - r_brack_token: R_BRACK@715..716 "]" [] [], - }, - ], - r_brack_token: R_BRACK@716..717 "]" [] [], - }, - ], - r_brack_token: R_BRACK@717..718 "]" [] [], - }, - ], - r_brack_token: R_BRACK@718..719 "]" [] [], - }, - ], - r_brack_token: R_BRACK@719..720 "]" [] [], - }, - ], - r_brack_token: R_BRACK@720..721 "]" [] [], - }, - ], - r_brack_token: R_BRACK@721..722 "]" [] [], - }, - ], - r_brack_token: R_BRACK@722..723 "]" [] [], - }, - ], - r_brack_token: R_BRACK@723..724 "]" [] [], - }, - ], - r_brack_token: R_BRACK@724..725 "]" [] [], - }, - ], - r_brack_token: R_BRACK@725..726 "]" [] [], - }, - ], - r_brack_token: R_BRACK@726..727 "]" [] [], - }, - ], - r_brack_token: R_BRACK@727..728 "]" [] [], - }, - ], - r_brack_token: R_BRACK@728..729 "]" [] [], - }, - ], - r_brack_token: R_BRACK@729..730 "]" [] [], - }, - ], - r_brack_token: R_BRACK@730..731 "]" [] [], - }, - ], - r_brack_token: R_BRACK@731..732 "]" [] [], - }, - ], - r_brack_token: R_BRACK@732..733 "]" [] [], - }, - ], - r_brack_token: R_BRACK@733..734 "]" [] [], - }, - ], - r_brack_token: R_BRACK@734..735 "]" [] [], - }, - ], - r_brack_token: R_BRACK@735..736 "]" [] [], - }, - ], - r_brack_token: R_BRACK@736..737 "]" [] [], - }, - ], - r_brack_token: R_BRACK@737..738 "]" [] [], - }, - ], - r_brack_token: R_BRACK@738..739 "]" [] [], - }, - ], - r_brack_token: R_BRACK@739..740 "]" [] [], - }, - ], - r_brack_token: R_BRACK@740..741 "]" [] [], - }, - ], - r_brack_token: R_BRACK@741..742 "]" [] [], - }, - ], - r_brack_token: R_BRACK@742..743 "]" [] [], - }, - ], - r_brack_token: R_BRACK@743..744 "]" [] [], - }, - ], - r_brack_token: R_BRACK@744..745 "]" [] [], - }, - ], - r_brack_token: R_BRACK@745..746 "]" [] [], - }, - ], - r_brack_token: R_BRACK@746..747 "]" [] [], - }, - ], - r_brack_token: R_BRACK@747..748 "]" [] [], - }, - ], - r_brack_token: R_BRACK@748..749 "]" [] [], - }, - ], - r_brack_token: R_BRACK@749..750 "]" [] [], - }, - ], - r_brack_token: R_BRACK@750..751 "]" [] [], - }, - ], - r_brack_token: R_BRACK@751..752 "]" [] [], - }, - ], - r_brack_token: R_BRACK@752..753 "]" [] [], - }, - ], - r_brack_token: R_BRACK@753..754 "]" [] [], - }, - ], - r_brack_token: R_BRACK@754..755 "]" [] [], - }, - ], - r_brack_token: R_BRACK@755..756 "]" [] [], - }, - ], - r_brack_token: R_BRACK@756..757 "]" [] [], - }, - ], - r_brack_token: R_BRACK@757..758 "]" [] [], - }, - ], - r_brack_token: R_BRACK@758..759 "]" [] [], - }, - ], - r_brack_token: R_BRACK@759..760 "]" [] [], - }, - ], - r_brack_token: R_BRACK@760..761 "]" [] [], - }, - ], - r_brack_token: R_BRACK@761..762 "]" [] [], - }, - ], - r_brack_token: R_BRACK@762..763 "]" [] [], - }, - ], - r_brack_token: R_BRACK@763..764 "]" [] [], - }, - ], - r_brack_token: R_BRACK@764..765 "]" [] [], - }, - ], - r_brack_token: R_BRACK@765..766 "]" [] [], - }, - ], - r_brack_token: R_BRACK@766..767 "]" [] [], - }, - ], - r_brack_token: R_BRACK@767..768 "]" [] [], - }, - ], - r_brack_token: R_BRACK@768..769 "]" [] [], - }, - ], - r_brack_token: R_BRACK@769..770 "]" [] [], - }, - ], - r_brack_token: R_BRACK@770..771 "]" [] [], - }, - ], - r_brack_token: R_BRACK@771..772 "]" [] [], - }, - ], - r_brack_token: R_BRACK@772..773 "]" [] [], - }, - ], - r_brack_token: R_BRACK@773..774 "]" [] [], - }, - ], - r_brack_token: R_BRACK@774..775 "]" [] [], - }, - ], - r_brack_token: R_BRACK@775..776 "]" [] [], - }, - ], - r_brack_token: R_BRACK@776..777 "]" [] [], - }, - ], - r_brack_token: R_BRACK@777..778 "]" [] [], - }, - ], - r_brack_token: R_BRACK@778..779 "]" [] [], - }, - ], - r_brack_token: R_BRACK@779..780 "]" [] [], - }, - ], - r_brack_token: R_BRACK@780..781 "]" [] [], - }, - ], - r_brack_token: R_BRACK@781..782 "]" [] [], - }, - ], - r_brack_token: R_BRACK@782..783 "]" [] [], - }, - ], - r_brack_token: R_BRACK@783..784 "]" [] [], - }, - ], - r_brack_token: R_BRACK@784..785 "]" [] [], - }, - ], - r_brack_token: R_BRACK@785..786 "]" [] [], - }, - ], - r_brack_token: R_BRACK@786..787 "]" [] [], - }, - ], - r_brack_token: R_BRACK@787..788 "]" [] [], - }, - ], - r_brack_token: R_BRACK@788..789 "]" [] [], - }, - ], - r_brack_token: R_BRACK@789..790 "]" [] [], - }, - ], - r_brack_token: R_BRACK@790..791 "]" [] [], - }, - ], - r_brack_token: R_BRACK@791..792 "]" [] [], - }, - ], - r_brack_token: R_BRACK@792..793 "]" [] [], - }, - ], - r_brack_token: R_BRACK@793..794 "]" [] [], - }, - ], - r_brack_token: R_BRACK@794..795 "]" [] [], - }, - ], - r_brack_token: R_BRACK@795..796 "]" [] [], - }, - ], - r_brack_token: R_BRACK@796..797 "]" [] [], - }, - ], - r_brack_token: R_BRACK@797..798 "]" [] [], - }, - ], - r_brack_token: R_BRACK@798..799 "]" [] [], - }, - ], - r_brack_token: R_BRACK@799..800 "]" [] [], - }, - ], - r_brack_token: R_BRACK@800..801 "]" [] [], - }, - ], - r_brack_token: R_BRACK@801..802 "]" [] [], - }, - ], - r_brack_token: R_BRACK@802..803 "]" [] [], - }, - ], - r_brack_token: R_BRACK@803..804 "]" [] [], - }, - ], - r_brack_token: R_BRACK@804..805 "]" [] [], - }, - ], - r_brack_token: R_BRACK@805..806 "]" [] [], - }, - ], - r_brack_token: R_BRACK@806..807 "]" [] [], - }, - ], - r_brack_token: R_BRACK@807..808 "]" [] [], - }, - ], - r_brack_token: R_BRACK@808..809 "]" [] [], - }, - ], - r_brack_token: R_BRACK@809..810 "]" [] [], - }, - ], - r_brack_token: R_BRACK@810..811 "]" [] [], - }, - ], - r_brack_token: R_BRACK@811..812 "]" [] [], - }, - ], - r_brack_token: R_BRACK@812..813 "]" [] [], - }, - ], - r_brack_token: R_BRACK@813..814 "]" [] [], - }, - ], - r_brack_token: R_BRACK@814..815 "]" [] [], - }, - ], - r_brack_token: R_BRACK@815..816 "]" [] [], - }, - ], - r_brack_token: R_BRACK@816..817 "]" [] [], - }, - ], - r_brack_token: R_BRACK@817..818 "]" [] [], - }, - ], - r_brack_token: R_BRACK@818..819 "]" [] [], - }, - ], - r_brack_token: R_BRACK@819..820 "]" [] [], - }, - ], - r_brack_token: R_BRACK@820..821 "]" [] [], - }, - ], - r_brack_token: R_BRACK@821..822 "]" [] [], - }, - ], - r_brack_token: R_BRACK@822..823 "]" [] [], - }, - ], - r_brack_token: R_BRACK@823..824 "]" [] [], - }, - ], - r_brack_token: R_BRACK@824..825 "]" [] [], - }, - ], - r_brack_token: R_BRACK@825..826 "]" [] [], - }, - ], - r_brack_token: R_BRACK@826..827 "]" [] [], - }, - ], - r_brack_token: R_BRACK@827..828 "]" [] [], - }, - ], - r_brack_token: R_BRACK@828..829 "]" [] [], - }, - ], - r_brack_token: R_BRACK@829..830 "]" [] [], - }, - ], - r_brack_token: R_BRACK@830..831 "]" [] [], - }, - ], - r_brack_token: R_BRACK@831..832 "]" [] [], - }, - ], - r_brack_token: R_BRACK@832..833 "]" [] [], - }, - ], - r_brack_token: R_BRACK@833..834 "]" [] [], - }, - ], - r_brack_token: R_BRACK@834..835 "]" [] [], - }, - ], - r_brack_token: R_BRACK@835..836 "]" [] [], - }, - ], - r_brack_token: R_BRACK@836..837 "]" [] [], - }, - ], - r_brack_token: R_BRACK@837..838 "]" [] [], - }, - ], - r_brack_token: R_BRACK@838..839 "]" [] [], - }, - ], - r_brack_token: R_BRACK@839..840 "]" [] [], - }, - ], - r_brack_token: R_BRACK@840..841 "]" [] [], - }, - ], - r_brack_token: R_BRACK@841..842 "]" [] [], - }, - ], - r_brack_token: R_BRACK@842..843 "]" [] [], - }, - ], - r_brack_token: R_BRACK@843..844 "]" [] [], - }, - ], - r_brack_token: R_BRACK@844..845 "]" [] [], - }, - ], - r_brack_token: R_BRACK@845..846 "]" [] [], - }, - ], - r_brack_token: R_BRACK@846..847 "]" [] [], - }, - ], - r_brack_token: R_BRACK@847..848 "]" [] [], - }, - ], - r_brack_token: R_BRACK@848..849 "]" [] [], - }, - ], - r_brack_token: R_BRACK@849..850 "]" [] [], - }, - ], - r_brack_token: R_BRACK@850..851 "]" [] [], - }, - ], - r_brack_token: R_BRACK@851..852 "]" [] [], - }, - ], - r_brack_token: R_BRACK@852..853 "]" [] [], - }, - ], - r_brack_token: R_BRACK@853..854 "]" [] [], - }, - ], - r_brack_token: R_BRACK@854..855 "]" [] [], - }, - ], - r_brack_token: R_BRACK@855..856 "]" [] [], - }, - ], - r_brack_token: R_BRACK@856..857 "]" [] [], - }, - ], - r_brack_token: R_BRACK@857..858 "]" [] [], - }, - ], - r_brack_token: R_BRACK@858..859 "]" [] [], - }, - ], - r_brack_token: R_BRACK@859..860 "]" [] [], - }, - ], - r_brack_token: R_BRACK@860..861 "]" [] [], - }, - ], - r_brack_token: R_BRACK@861..862 "]" [] [], - }, - ], - r_brack_token: R_BRACK@862..863 "]" [] [], - }, - ], - r_brack_token: R_BRACK@863..864 "]" [] [], - }, - ], - r_brack_token: R_BRACK@864..865 "]" [] [], - }, - ], - r_brack_token: R_BRACK@865..866 "]" [] [], - }, - ], - r_brack_token: R_BRACK@866..867 "]" [] [], - }, - ], - r_brack_token: R_BRACK@867..868 "]" [] [], - }, - ], - r_brack_token: R_BRACK@868..869 "]" [] [], - }, - ], - r_brack_token: R_BRACK@869..870 "]" [] [], - }, - ], - r_brack_token: R_BRACK@870..871 "]" [] [], - }, - ], - r_brack_token: R_BRACK@871..872 "]" [] [], - }, - ], - r_brack_token: R_BRACK@872..873 "]" [] [], - }, - ], - r_brack_token: R_BRACK@873..874 "]" [] [], - }, - ], - r_brack_token: R_BRACK@874..875 "]" [] [], - }, - ], - r_brack_token: R_BRACK@875..876 "]" [] [], - }, - ], - r_brack_token: R_BRACK@876..877 "]" [] [], - }, - ], - r_brack_token: R_BRACK@877..878 "]" [] [], - }, - ], - r_brack_token: R_BRACK@878..879 "]" [] [], - }, - ], - r_brack_token: R_BRACK@879..880 "]" [] [], - }, - ], - r_brack_token: R_BRACK@880..881 "]" [] [], - }, - ], - r_brack_token: R_BRACK@881..882 "]" [] [], - }, - ], - r_brack_token: R_BRACK@882..883 "]" [] [], - }, - ], - r_brack_token: R_BRACK@883..884 "]" [] [], - }, - ], - r_brack_token: R_BRACK@884..885 "]" [] [], - }, - ], - r_brack_token: R_BRACK@885..886 "]" [] [], - }, - ], - r_brack_token: R_BRACK@886..887 "]" [] [], - }, - ], - r_brack_token: R_BRACK@887..888 "]" [] [], - }, - ], - r_brack_token: R_BRACK@888..889 "]" [] [], - }, - ], - r_brack_token: R_BRACK@889..890 "]" [] [], - }, - ], - r_brack_token: R_BRACK@890..891 "]" [] [], - }, - ], - r_brack_token: R_BRACK@891..892 "]" [] [], - }, - ], - r_brack_token: R_BRACK@892..893 "]" [] [], - }, - ], - r_brack_token: R_BRACK@893..894 "]" [] [], - }, - ], - r_brack_token: R_BRACK@894..895 "]" [] [], - }, - ], - r_brack_token: R_BRACK@895..896 "]" [] [], - }, - ], - r_brack_token: R_BRACK@896..897 "]" [] [], - }, - ], - r_brack_token: R_BRACK@897..898 "]" [] [], - }, - ], - r_brack_token: R_BRACK@898..899 "]" [] [], - }, - ], - r_brack_token: R_BRACK@899..900 "]" [] [], - }, - ], - r_brack_token: R_BRACK@900..901 "]" [] [], - }, - ], - r_brack_token: R_BRACK@901..902 "]" [] [], - }, - ], - r_brack_token: R_BRACK@902..903 "]" [] [], - }, - ], - r_brack_token: R_BRACK@903..904 "]" [] [], - }, - ], - r_brack_token: R_BRACK@904..905 "]" [] [], - }, - ], - r_brack_token: R_BRACK@905..906 "]" [] [], - }, - ], - r_brack_token: R_BRACK@906..907 "]" [] [], - }, - ], - r_brack_token: R_BRACK@907..908 "]" [] [], - }, - ], - r_brack_token: R_BRACK@908..909 "]" [] [], - }, - ], - r_brack_token: R_BRACK@909..910 "]" [] [], - }, - ], - r_brack_token: R_BRACK@910..911 "]" [] [], - }, - ], - r_brack_token: R_BRACK@911..912 "]" [] [], - }, - ], - r_brack_token: R_BRACK@912..913 "]" [] [], - }, - ], - r_brack_token: R_BRACK@913..914 "]" [] [], - }, - ], - r_brack_token: R_BRACK@914..915 "]" [] [], - }, - ], - r_brack_token: R_BRACK@915..916 "]" [] [], - }, - ], - r_brack_token: R_BRACK@916..917 "]" [] [], - }, - ], - r_brack_token: R_BRACK@917..918 "]" [] [], - }, - ], - r_brack_token: R_BRACK@918..919 "]" [] [], - }, - ], - r_brack_token: R_BRACK@919..920 "]" [] [], - }, - ], - r_brack_token: R_BRACK@920..921 "]" [] [], - }, - ], - r_brack_token: R_BRACK@921..922 "]" [] [], - }, - ], - r_brack_token: R_BRACK@922..923 "]" [] [], - }, - ], - r_brack_token: R_BRACK@923..924 "]" [] [], - }, - ], - r_brack_token: R_BRACK@924..925 "]" [] [], - }, - ], - r_brack_token: R_BRACK@925..926 "]" [] [], - }, - ], - r_brack_token: R_BRACK@926..927 "]" [] [], - }, - ], - r_brack_token: R_BRACK@927..928 "]" [] [], - }, - ], - r_brack_token: R_BRACK@928..929 "]" [] [], - }, - ], - r_brack_token: R_BRACK@929..930 "]" [] [], - }, - ], - r_brack_token: R_BRACK@930..931 "]" [] [], - }, - ], - r_brack_token: R_BRACK@931..932 "]" [] [], - }, - ], - r_brack_token: R_BRACK@932..933 "]" [] [], - }, - ], - r_brack_token: R_BRACK@933..934 "]" [] [], - }, - ], - r_brack_token: R_BRACK@934..935 "]" [] [], - }, - ], - r_brack_token: R_BRACK@935..936 "]" [] [], - }, - ], - r_brack_token: R_BRACK@936..937 "]" [] [], - }, - ], - r_brack_token: R_BRACK@937..938 "]" [] [], - }, - ], - r_brack_token: R_BRACK@938..939 "]" [] [], - }, - ], - r_brack_token: R_BRACK@939..940 "]" [] [], - }, - ], - r_brack_token: R_BRACK@940..941 "]" [] [], - }, - ], - r_brack_token: R_BRACK@941..942 "]" [] [], - }, - ], - r_brack_token: R_BRACK@942..943 "]" [] [], - }, - ], - r_brack_token: R_BRACK@943..944 "]" [] [], - }, - ], - r_brack_token: R_BRACK@944..945 "]" [] [], - }, - ], - r_brack_token: R_BRACK@945..946 "]" [] [], - }, - ], - r_brack_token: R_BRACK@946..947 "]" [] [], - }, - ], - r_brack_token: R_BRACK@947..948 "]" [] [], - }, - ], - r_brack_token: R_BRACK@948..949 "]" [] [], - }, - ], - r_brack_token: R_BRACK@949..950 "]" [] [], - }, - ], - r_brack_token: R_BRACK@950..951 "]" [] [], - }, - ], - r_brack_token: R_BRACK@951..952 "]" [] [], - }, - ], - r_brack_token: R_BRACK@952..953 "]" [] [], - }, - ], - r_brack_token: R_BRACK@953..954 "]" [] [], - }, - ], - r_brack_token: R_BRACK@954..955 "]" [] [], - }, - ], - r_brack_token: R_BRACK@955..956 "]" [] [], - }, - ], - r_brack_token: R_BRACK@956..957 "]" [] [], - }, - ], - r_brack_token: R_BRACK@957..958 "]" [] [], - }, - ], - r_brack_token: R_BRACK@958..959 "]" [] [], - }, - ], - r_brack_token: R_BRACK@959..960 "]" [] [], - }, - ], - r_brack_token: R_BRACK@960..961 "]" [] [], - }, - ], - r_brack_token: R_BRACK@961..962 "]" [] [], - }, - ], - r_brack_token: R_BRACK@962..963 "]" [] [], - }, - ], - r_brack_token: R_BRACK@963..964 "]" [] [], - }, - ], - r_brack_token: R_BRACK@964..965 "]" [] [], - }, - ], - r_brack_token: R_BRACK@965..966 "]" [] [], - }, - ], - r_brack_token: R_BRACK@966..967 "]" [] [], - }, - ], - r_brack_token: R_BRACK@967..968 "]" [] [], - }, - ], - r_brack_token: R_BRACK@968..969 "]" [] [], - }, - ], - r_brack_token: R_BRACK@969..970 "]" [] [], - }, - ], - r_brack_token: R_BRACK@970..971 "]" [] [], - }, - ], - r_brack_token: R_BRACK@971..972 "]" [] [], - }, - ], - r_brack_token: R_BRACK@972..973 "]" [] [], - }, - ], - r_brack_token: R_BRACK@973..974 "]" [] [], - }, - ], - r_brack_token: R_BRACK@974..975 "]" [] [], - }, - ], - r_brack_token: R_BRACK@975..976 "]" [] [], - }, - ], - r_brack_token: R_BRACK@976..977 "]" [] [], - }, - ], - r_brack_token: R_BRACK@977..978 "]" [] [], - }, - ], - r_brack_token: R_BRACK@978..979 "]" [] [], - }, - ], - r_brack_token: R_BRACK@979..980 "]" [] [], - }, - ], - r_brack_token: R_BRACK@980..981 "]" [] [], - }, - ], - r_brack_token: R_BRACK@981..982 "]" [] [], - }, - ], - r_brack_token: R_BRACK@982..983 "]" [] [], - }, - ], - r_brack_token: R_BRACK@983..984 "]" [] [], - }, + JsonArrayValue, ], r_brack_token: R_BRACK@984..985 "]" [] [], }, @@ -5026,5 +2123,3 @@ JsonRoot { 2: EOF@1000..1000 "" [] [] ``` - - diff --git a/crates/biome_json_syntax/src/generated/nodes.rs b/crates/biome_json_syntax/src/generated/nodes.rs index 3aa3996c7d4b..dde1f16a8c4a 100644 --- a/crates/biome_json_syntax/src/generated/nodes.rs +++ b/crates/biome_json_syntax/src/generated/nodes.rs @@ -451,17 +451,26 @@ impl AstNode for JsonArrayValue { } impl std::fmt::Debug for JsonArrayValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonArrayValue") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("elements", &self.elements()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonArrayValue") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("elements", &self.elements()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("JsonArrayValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -497,12 +506,21 @@ impl AstNode for JsonBooleanValue { } impl std::fmt::Debug for JsonBooleanValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonBooleanValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonBooleanValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsonBooleanValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -538,14 +556,23 @@ impl AstNode for JsonMember { } impl std::fmt::Debug for JsonMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonMember") - .field("name", &support::DebugSyntaxResult(self.name())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonMember") + .field("name", &support::DebugSyntaxResult(self.name())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("JsonMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -581,12 +608,21 @@ impl AstNode for JsonMemberName { } impl std::fmt::Debug for JsonMemberName { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonMemberName") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonMemberName") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsonMemberName").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -622,12 +658,21 @@ impl AstNode for JsonNullValue { } impl std::fmt::Debug for JsonNullValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonNullValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonNullValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsonNullValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -663,12 +708,21 @@ impl AstNode for JsonNumberValue { } impl std::fmt::Debug for JsonNumberValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonNumberValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonNumberValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsonNumberValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -704,17 +758,26 @@ impl AstNode for JsonObjectValue { } impl std::fmt::Debug for JsonObjectValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonObjectValue") - .field( - "l_curly_token", - &support::DebugSyntaxResult(self.l_curly_token()), - ) - .field("json_member_list", &self.json_member_list()) - .field( - "r_curly_token", - &support::DebugSyntaxResult(self.r_curly_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonObjectValue") + .field( + "l_curly_token", + &support::DebugSyntaxResult(self.l_curly_token()), + ) + .field("json_member_list", &self.json_member_list()) + .field( + "r_curly_token", + &support::DebugSyntaxResult(self.r_curly_token()), + ) + .finish() + } else { + f.debug_struct("JsonObjectValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -750,14 +813,23 @@ impl AstNode for JsonRoot { } impl std::fmt::Debug for JsonRoot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonRoot") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonRoot") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("JsonRoot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -793,12 +865,21 @@ impl AstNode for JsonStringValue { } impl std::fmt::Debug for JsonStringValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("JsonStringValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("JsonStringValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("JsonStringValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_markdown_syntax/src/generated/nodes.rs b/crates/biome_markdown_syntax/src/generated/nodes.rs index 8023ce6338ef..5653d0da38b0 100644 --- a/crates/biome_markdown_syntax/src/generated/nodes.rs +++ b/crates/biome_markdown_syntax/src/generated/nodes.rs @@ -1007,9 +1007,18 @@ impl AstNode for MdBulletListItem { } impl std::fmt::Debug for MdBulletListItem { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdBulletListItem") - .field("md_bullet_list", &self.md_bullet_list()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdBulletListItem") + .field("md_bullet_list", &self.md_bullet_list()) + .finish() + } else { + f.debug_struct("MdBulletListItem").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1045,14 +1054,23 @@ impl AstNode for MdDocument { } impl std::fmt::Debug for MdDocument { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdDocument") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field("value", &self.value()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdDocument") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field("value", &self.value()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("MdDocument").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1088,9 +1106,18 @@ impl AstNode for MdFencedCodeBlock { } impl std::fmt::Debug for MdFencedCodeBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdFencedCodeBlock") - .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdFencedCodeBlock") + .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) + .finish() + } else { + f.debug_struct("MdFencedCodeBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1126,12 +1153,21 @@ impl AstNode for MdHardLine { } impl std::fmt::Debug for MdHardLine { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdHardLine") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdHardLine") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("MdHardLine").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1167,9 +1203,18 @@ impl AstNode for MdHash { } impl std::fmt::Debug for MdHash { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdHash") - .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdHash") + .field("hash_token", &support::DebugSyntaxResult(self.hash_token())) + .finish() + } else { + f.debug_struct("MdHash").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1205,14 +1250,23 @@ impl AstNode for MdHeader { } impl std::fmt::Debug for MdHeader { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdHeader") - .field("before", &self.before()) - .field( - "md_paragraph", - &support::DebugOptionalElement(self.md_paragraph()), - ) - .field("after", &self.after()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdHeader") + .field("before", &self.before()) + .field( + "md_paragraph", + &support::DebugOptionalElement(self.md_paragraph()), + ) + .field("after", &self.after()) + .finish() + } else { + f.debug_struct("MdHeader").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1248,9 +1302,18 @@ impl AstNode for MdHtmlBlock { } impl std::fmt::Debug for MdHtmlBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdHtmlBlock") - .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdHtmlBlock") + .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) + .finish() + } else { + f.debug_struct("MdHtmlBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1286,12 +1349,21 @@ impl AstNode for MdIndent { } impl std::fmt::Debug for MdIndent { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdIndent") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdIndent") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("MdIndent").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1327,9 +1399,18 @@ impl AstNode for MdIndentCodeBlock { } impl std::fmt::Debug for MdIndentCodeBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdIndentCodeBlock") - .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdIndentCodeBlock") + .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) + .finish() + } else { + f.debug_struct("MdIndentCodeBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1365,9 +1446,18 @@ impl AstNode for MdInlineCode { } impl std::fmt::Debug for MdInlineCode { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdInlineCode") - .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdInlineCode") + .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) + .finish() + } else { + f.debug_struct("MdInlineCode").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1403,9 +1493,18 @@ impl AstNode for MdInlineEmphasis { } impl std::fmt::Debug for MdInlineEmphasis { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdInlineEmphasis") - .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdInlineEmphasis") + .field("md_textual", &support::DebugSyntaxResult(self.md_textual())) + .finish() + } else { + f.debug_struct("MdInlineEmphasis").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1441,11 +1540,20 @@ impl AstNode for MdInlineImage { } impl std::fmt::Debug for MdInlineImage { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdInlineImage") - .field("alt", &support::DebugSyntaxResult(self.alt())) - .field("src", &support::DebugSyntaxResult(self.src())) - .field("title", &support::DebugOptionalElement(self.title())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdInlineImage") + .field("alt", &support::DebugSyntaxResult(self.alt())) + .field("src", &support::DebugSyntaxResult(self.src())) + .field("title", &support::DebugOptionalElement(self.title())) + .finish() + } else { + f.debug_struct("MdInlineImage").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1481,11 +1589,20 @@ impl AstNode for MdInlineLink { } impl std::fmt::Debug for MdInlineLink { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdInlineLink") - .field("label", &support::DebugSyntaxResult(self.label())) - .field("url", &support::DebugSyntaxResult(self.url())) - .field("title", &support::DebugOptionalElement(self.title())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdInlineLink") + .field("label", &support::DebugSyntaxResult(self.label())) + .field("url", &support::DebugSyntaxResult(self.url())) + .field("title", &support::DebugOptionalElement(self.title())) + .finish() + } else { + f.debug_struct("MdInlineLink").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1521,11 +1638,20 @@ impl AstNode for MdLinkBlock { } impl std::fmt::Debug for MdLinkBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdLinkBlock") - .field("label", &support::DebugSyntaxResult(self.label())) - .field("url", &support::DebugSyntaxResult(self.url())) - .field("title", &support::DebugOptionalElement(self.title())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdLinkBlock") + .field("label", &support::DebugSyntaxResult(self.label())) + .field("url", &support::DebugSyntaxResult(self.url())) + .field("title", &support::DebugOptionalElement(self.title())) + .finish() + } else { + f.debug_struct("MdLinkBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1561,9 +1687,18 @@ impl AstNode for MdOrderListItem { } impl std::fmt::Debug for MdOrderListItem { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdOrderListItem") - .field("md_bullet_list", &self.md_bullet_list()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdOrderListItem") + .field("md_bullet_list", &self.md_bullet_list()) + .finish() + } else { + f.debug_struct("MdOrderListItem").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1599,9 +1734,18 @@ impl AstNode for MdParagraph { } impl std::fmt::Debug for MdParagraph { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdParagraph") - .field("md_paragraph_item_list", &self.md_paragraph_item_list()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdParagraph") + .field("md_paragraph_item_list", &self.md_paragraph_item_list()) + .finish() + } else { + f.debug_struct("MdParagraph").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1637,12 +1781,21 @@ impl AstNode for MdQuote { } impl std::fmt::Debug for MdQuote { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdQuote") - .field( - "any_md_block", - &support::DebugSyntaxResult(self.any_md_block()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdQuote") + .field( + "any_md_block", + &support::DebugSyntaxResult(self.any_md_block()), + ) + .finish() + } else { + f.debug_struct("MdQuote").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1678,12 +1831,21 @@ impl AstNode for MdSetextHeader { } impl std::fmt::Debug for MdSetextHeader { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdSetextHeader") - .field( - "md_paragraph", - &support::DebugSyntaxResult(self.md_paragraph()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdSetextHeader") + .field( + "md_paragraph", + &support::DebugSyntaxResult(self.md_paragraph()), + ) + .finish() + } else { + f.debug_struct("MdSetextHeader").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1719,12 +1881,21 @@ impl AstNode for MdSoftBreak { } impl std::fmt::Debug for MdSoftBreak { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdSoftBreak") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdSoftBreak") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("MdSoftBreak").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1760,12 +1931,21 @@ impl AstNode for MdTextual { } impl std::fmt::Debug for MdTextual { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdTextual") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdTextual") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("MdTextual").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1801,12 +1981,21 @@ impl AstNode for MdThematicBreakBlock { } impl std::fmt::Debug for MdThematicBreakBlock { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MdThematicBreakBlock") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("MdThematicBreakBlock") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("MdThematicBreakBlock").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/crates/biome_yaml_syntax/src/generated/nodes.rs b/crates/biome_yaml_syntax/src/generated/nodes.rs index e419aaec40d9..d3cb53c6a3c5 100644 --- a/crates/biome_yaml_syntax/src/generated/nodes.rs +++ b/crates/biome_yaml_syntax/src/generated/nodes.rs @@ -695,9 +695,18 @@ impl AstNode for YamlArray { } impl std::fmt::Debug for YamlArray { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlArray") - .field("items", &self.items()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlArray") + .field("items", &self.items()) + .finish() + } else { + f.debug_struct("YamlArray").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -733,17 +742,26 @@ impl AstNode for YamlArrayInline { } impl std::fmt::Debug for YamlArrayInline { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlArrayInline") - .field( - "l_brack_token", - &support::DebugSyntaxResult(self.l_brack_token()), - ) - .field("items", &self.items()) - .field( - "r_brack_token", - &support::DebugSyntaxResult(self.r_brack_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlArrayInline") + .field( + "l_brack_token", + &support::DebugSyntaxResult(self.l_brack_token()), + ) + .field("items", &self.items()) + .field( + "r_brack_token", + &support::DebugSyntaxResult(self.r_brack_token()), + ) + .finish() + } else { + f.debug_struct("YamlArrayInline").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -779,13 +797,22 @@ impl AstNode for YamlArrayItem { } impl std::fmt::Debug for YamlArrayItem { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlArrayItem") - .field( - "minus_token", - &support::DebugSyntaxResult(self.minus_token()), - ) - .field("item", &support::DebugSyntaxResult(self.item())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlArrayItem") + .field( + "minus_token", + &support::DebugSyntaxResult(self.minus_token()), + ) + .field("item", &support::DebugSyntaxResult(self.item())) + .finish() + } else { + f.debug_struct("YamlArrayItem").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -821,13 +848,22 @@ impl AstNode for YamlBlockFolded { } impl std::fmt::Debug for YamlBlockFolded { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlBlockFolded") - .field( - "r_angle_token", - &support::DebugSyntaxResult(self.r_angle_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlBlockFolded") + .field( + "r_angle_token", + &support::DebugSyntaxResult(self.r_angle_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("YamlBlockFolded").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -863,13 +899,22 @@ impl AstNode for YamlBlockLiteral { } impl std::fmt::Debug for YamlBlockLiteral { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlBlockLiteral") - .field( - "bitwise_or_token", - &support::DebugSyntaxResult(self.bitwise_or_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlBlockLiteral") + .field( + "bitwise_or_token", + &support::DebugSyntaxResult(self.bitwise_or_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("YamlBlockLiteral").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -905,12 +950,21 @@ impl AstNode for YamlBlockValue { } impl std::fmt::Debug for YamlBlockValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlBlockValue") - .field( - "yaml_block_value_token", - &support::DebugSyntaxResult(self.yaml_block_value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlBlockValue") + .field( + "yaml_block_value_token", + &support::DebugSyntaxResult(self.yaml_block_value_token()), + ) + .finish() + } else { + f.debug_struct("YamlBlockValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -946,12 +1000,21 @@ impl AstNode for YamlBooleanValue { } impl std::fmt::Debug for YamlBooleanValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlBooleanValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlBooleanValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("YamlBooleanValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -987,17 +1050,26 @@ impl AstNode for YamlDocument { } impl std::fmt::Debug for YamlDocument { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlDocument") - .field( - "dashdashdash_token", - &support::DebugOptionalElement(self.dashdashdash_token()), - ) - .field("body", &support::DebugSyntaxResult(self.body())) - .field( - "dotdotdot_token", - &support::DebugOptionalElement(self.dotdotdot_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlDocument") + .field( + "dashdashdash_token", + &support::DebugOptionalElement(self.dashdashdash_token()), + ) + .field("body", &support::DebugSyntaxResult(self.body())) + .field( + "dotdotdot_token", + &support::DebugOptionalElement(self.dotdotdot_token()), + ) + .finish() + } else { + f.debug_struct("YamlDocument").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1033,12 +1105,21 @@ impl AstNode for YamlIdentifier { } impl std::fmt::Debug for YamlIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlIdentifier") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlIdentifier") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("YamlIdentifier").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1074,12 +1155,21 @@ impl AstNode for YamlNullValue { } impl std::fmt::Debug for YamlNullValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlNullValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlNullValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("YamlNullValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1115,12 +1205,21 @@ impl AstNode for YamlNumberValue { } impl std::fmt::Debug for YamlNumberValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlNumberValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlNumberValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("YamlNumberValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1156,9 +1255,18 @@ impl AstNode for YamlObject { } impl std::fmt::Debug for YamlObject { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlObject") - .field("members", &self.members()) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlObject") + .field("members", &self.members()) + .finish() + } else { + f.debug_struct("YamlObject").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1194,14 +1302,23 @@ impl AstNode for YamlObjectMember { } impl std::fmt::Debug for YamlObjectMember { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlObjectMember") - .field("key", &support::DebugSyntaxResult(self.key())) - .field( - "colon_token", - &support::DebugSyntaxResult(self.colon_token()), - ) - .field("value", &support::DebugSyntaxResult(self.value())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlObjectMember") + .field("key", &support::DebugSyntaxResult(self.key())) + .field( + "colon_token", + &support::DebugSyntaxResult(self.colon_token()), + ) + .field("value", &support::DebugSyntaxResult(self.value())) + .finish() + } else { + f.debug_struct("YamlObjectMember").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1237,14 +1354,23 @@ impl AstNode for YamlRoot { } impl std::fmt::Debug for YamlRoot { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlRoot") - .field( - "bom_token", - &support::DebugOptionalElement(self.bom_token()), - ) - .field("documents", &self.documents()) - .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlRoot") + .field( + "bom_token", + &support::DebugOptionalElement(self.bom_token()), + ) + .field("documents", &self.documents()) + .field("eof_token", &support::DebugSyntaxResult(self.eof_token())) + .finish() + } else { + f.debug_struct("YamlRoot").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { @@ -1280,12 +1406,21 @@ impl AstNode for YamlStringValue { } impl std::fmt::Debug for YamlStringValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("YamlStringValue") - .field( - "value_token", - &support::DebugSyntaxResult(self.value_token()), - ) - .finish() + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct("YamlStringValue") + .field( + "value_token", + &support::DebugSyntaxResult(self.value_token()), + ) + .finish() + } else { + f.debug_struct("YamlStringValue").finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result } } impl From for SyntaxNode { diff --git a/xtask/codegen/src/generate_nodes.rs b/xtask/codegen/src/generate_nodes.rs index 7e8f15e66609..4f5fc6bcdea2 100644 --- a/xtask/codegen/src/generate_nodes.rs +++ b/xtask/codegen/src/generate_nodes.rs @@ -238,6 +238,27 @@ pub fn generate_nodes(ast: &AstSrc, language_kind: LanguageKind) -> Result 0 { + quote! { + use std::sync::atomic::{AtomicUsize, Ordering}; + static DEPTH: AtomicUsize = AtomicUsize::new(0); + let current_depth = DEPTH.fetch_add(1, Ordering::Relaxed); + let result = if current_depth < 16 { + f.debug_struct(#string_name) + #(#fields)* + .finish() + } else { + f.debug_struct(#string_name).finish() + }; + DEPTH.fetch_sub(1, Ordering::Relaxed); + result + } + } else { + quote! { + f.debug_struct(#string_name).finish() + } + }; + ( quote! { // TODO: review documentation @@ -295,9 +316,7 @@ pub fn generate_nodes(ast: &AstSrc, language_kind: LanguageKind) -> Result) -> std::fmt::Result { - f.debug_struct(#string_name) - #(#fields)* - .finish() + #debug_fmt_impl } }