git.delta.rocks / jrsonnet / refs/commits / a7bbbb48a2fd

difftreelog

feat try to parse locals as statements, not as expressions

Yaroslav Bolyukin2023-05-09parent: #e17e60d.patch.diff
in: master

13 files changed

modifiedcrates/jrsonnet-rowan-parser/jsonnet.ungramdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/jsonnet.ungram
+++ b/crates/jrsonnet-rowan-parser/jsonnet.ungram
@@ -65,11 +65,6 @@
 
 ExprVar =
     name:Name
-ExprLocal =
-    'local'
-    (Bind (',' Bind)* ','?)
-    ';'
-    Expr
 
 ExprIfThenElse =
     'if'
@@ -92,7 +87,15 @@
     'error'
     Expr
 
+StmtLocal =
+    'local'
+    (Bind (',' Bind)* ','?)
+    ';'
+
 Expr =
+    StmtLocal*
+    ExprBase
+ExprBase =
     ExprBinary
 |   ExprUnary
 |   ExprSlice
@@ -109,7 +112,6 @@
 |   ExprArrayComp
 |   ExprImport
 |   ExprVar
-|   ExprLocal
 |   ExprIfThenElse
 |   ExprFunction
 |   ExprAssert
modifiedcrates/jrsonnet-rowan-parser/src/generated/nodes.rsdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/generated/nodes.rs
+++ b/crates/jrsonnet-rowan-parser/src/generated/nodes.rs
@@ -19,6 +19,19 @@
 }
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct Expr {
+	pub(crate) syntax: SyntaxNode,
+}
+impl Expr {
+	pub fn stmt_locals(&self) -> AstChildren<StmtLocal> {
+		support::children(&self.syntax)
+	}
+	pub fn expr_base(&self) -> Option<ExprBase> {
+		support::child(&self.syntax)
+	}
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
 pub struct ExprBinary {
 	pub(crate) syntax: SyntaxNode,
 }
@@ -303,25 +316,6 @@
 }
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprLocal {
-	pub(crate) syntax: SyntaxNode,
-}
-impl ExprLocal {
-	pub fn local_kw_token(&self) -> Option<SyntaxToken> {
-		support::token(&self.syntax, T![local])
-	}
-	pub fn binds(&self) -> AstChildren<Bind> {
-		support::children(&self.syntax)
-	}
-	pub fn semi_token(&self) -> Option<SyntaxToken> {
-		support::token(&self.syntax, T![;])
-	}
-	pub fn expr(&self) -> Option<Expr> {
-		support::child(&self.syntax)
-	}
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
 pub struct ExprIfThenElse {
 	pub(crate) syntax: SyntaxNode,
 }
@@ -453,6 +447,22 @@
 }
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct StmtLocal {
+	pub(crate) syntax: SyntaxNode,
+}
+impl StmtLocal {
+	pub fn local_kw_token(&self) -> Option<SyntaxToken> {
+		support::token(&self.syntax, T![local])
+	}
+	pub fn binds(&self) -> AstChildren<Bind> {
+		support::children(&self.syntax)
+	}
+	pub fn semi_token(&self) -> Option<SyntaxToken> {
+		support::token(&self.syntax, T![;])
+	}
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
 pub struct SliceDescEnd {
 	pub(crate) syntax: SyntaxNode,
 }
@@ -810,7 +820,25 @@
 }
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum Expr {
+pub enum ObjBody {
+	ObjBodyComp(ObjBodyComp),
+	ObjBodyMemberList(ObjBodyMemberList),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum CompSpec {
+	ForSpec(ForSpec),
+	IfSpec(IfSpec),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Bind {
+	BindDestruct(BindDestruct),
+	BindFunction(BindFunction),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum ExprBase {
 	ExprBinary(ExprBinary),
 	ExprUnary(ExprUnary),
 	ExprSlice(ExprSlice),
@@ -827,32 +855,13 @@
 	ExprArrayComp(ExprArrayComp),
 	ExprImport(ExprImport),
 	ExprVar(ExprVar),
-	ExprLocal(ExprLocal),
 	ExprIfThenElse(ExprIfThenElse),
 	ExprFunction(ExprFunction),
 	ExprAssert(ExprAssert),
 	ExprError(ExprError),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum ObjBody {
-	ObjBodyComp(ObjBodyComp),
-	ObjBodyMemberList(ObjBodyMemberList),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum CompSpec {
-	ForSpec(ForSpec),
-	IfSpec(IfSpec),
 }
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum Bind {
-	BindDestruct(BindDestruct),
-	BindFunction(BindFunction),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
 pub enum MemberComp {
 	MemberBindStmt(MemberBindStmt),
 	MemberFieldNormal(MemberFieldNormal),
@@ -1054,6 +1063,21 @@
 		&self.syntax
 	}
 }
+impl AstNode for Expr {
+	fn can_cast(kind: SyntaxKind) -> bool {
+		kind == EXPR
+	}
+	fn cast(syntax: SyntaxNode) -> Option<Self> {
+		if Self::can_cast(syntax.kind()) {
+			Some(Self { syntax })
+		} else {
+			None
+		}
+	}
+	fn syntax(&self) -> &SyntaxNode {
+		&self.syntax
+	}
+}
 impl AstNode for ExprBinary {
 	fn can_cast(kind: SyntaxKind) -> bool {
 		kind == EXPR_BINARY
@@ -1342,22 +1366,7 @@
 impl AstNode for ExprVar {
 	fn can_cast(kind: SyntaxKind) -> bool {
 		kind == EXPR_VAR
-	}
-	fn cast(syntax: SyntaxNode) -> Option<Self> {
-		if Self::can_cast(syntax.kind()) {
-			Some(Self { syntax })
-		} else {
-			None
-		}
-	}
-	fn syntax(&self) -> &SyntaxNode {
-		&self.syntax
 	}
-}
-impl AstNode for ExprLocal {
-	fn can_cast(kind: SyntaxKind) -> bool {
-		kind == EXPR_LOCAL
-	}
 	fn cast(syntax: SyntaxNode) -> Option<Self> {
 		if Self::can_cast(syntax.kind()) {
 			Some(Self { syntax })
@@ -1489,6 +1498,21 @@
 		&self.syntax
 	}
 }
+impl AstNode for StmtLocal {
+	fn can_cast(kind: SyntaxKind) -> bool {
+		kind == STMT_LOCAL
+	}
+	fn cast(syntax: SyntaxNode) -> Option<Self> {
+		if Self::can_cast(syntax.kind()) {
+			Some(Self { syntax })
+		} else {
+			None
+		}
+	}
+	fn syntax(&self) -> &SyntaxNode {
+		&self.syntax
+	}
+}
 impl AstNode for SliceDescEnd {
 	fn can_cast(kind: SyntaxKind) -> bool {
 		kind == SLICE_DESC_END
@@ -1847,175 +1871,7 @@
 	}
 	fn syntax(&self) -> &SyntaxNode {
 		&self.syntax
-	}
-}
-impl From<ExprBinary> for Expr {
-	fn from(node: ExprBinary) -> Expr {
-		Expr::ExprBinary(node)
-	}
-}
-impl From<ExprUnary> for Expr {
-	fn from(node: ExprUnary) -> Expr {
-		Expr::ExprUnary(node)
-	}
-}
-impl From<ExprSlice> for Expr {
-	fn from(node: ExprSlice) -> Expr {
-		Expr::ExprSlice(node)
-	}
-}
-impl From<ExprIndex> for Expr {
-	fn from(node: ExprIndex) -> Expr {
-		Expr::ExprIndex(node)
-	}
-}
-impl From<ExprIndexExpr> for Expr {
-	fn from(node: ExprIndexExpr) -> Expr {
-		Expr::ExprIndexExpr(node)
-	}
-}
-impl From<ExprApply> for Expr {
-	fn from(node: ExprApply) -> Expr {
-		Expr::ExprApply(node)
-	}
-}
-impl From<ExprObjExtend> for Expr {
-	fn from(node: ExprObjExtend) -> Expr {
-		Expr::ExprObjExtend(node)
-	}
-}
-impl From<ExprParened> for Expr {
-	fn from(node: ExprParened) -> Expr {
-		Expr::ExprParened(node)
-	}
-}
-impl From<ExprString> for Expr {
-	fn from(node: ExprString) -> Expr {
-		Expr::ExprString(node)
-	}
-}
-impl From<ExprNumber> for Expr {
-	fn from(node: ExprNumber) -> Expr {
-		Expr::ExprNumber(node)
-	}
-}
-impl From<ExprLiteral> for Expr {
-	fn from(node: ExprLiteral) -> Expr {
-		Expr::ExprLiteral(node)
-	}
-}
-impl From<ExprArray> for Expr {
-	fn from(node: ExprArray) -> Expr {
-		Expr::ExprArray(node)
-	}
-}
-impl From<ExprObject> for Expr {
-	fn from(node: ExprObject) -> Expr {
-		Expr::ExprObject(node)
-	}
-}
-impl From<ExprArrayComp> for Expr {
-	fn from(node: ExprArrayComp) -> Expr {
-		Expr::ExprArrayComp(node)
-	}
-}
-impl From<ExprImport> for Expr {
-	fn from(node: ExprImport) -> Expr {
-		Expr::ExprImport(node)
-	}
-}
-impl From<ExprVar> for Expr {
-	fn from(node: ExprVar) -> Expr {
-		Expr::ExprVar(node)
-	}
-}
-impl From<ExprLocal> for Expr {
-	fn from(node: ExprLocal) -> Expr {
-		Expr::ExprLocal(node)
-	}
-}
-impl From<ExprIfThenElse> for Expr {
-	fn from(node: ExprIfThenElse) -> Expr {
-		Expr::ExprIfThenElse(node)
-	}
-}
-impl From<ExprFunction> for Expr {
-	fn from(node: ExprFunction) -> Expr {
-		Expr::ExprFunction(node)
-	}
-}
-impl From<ExprAssert> for Expr {
-	fn from(node: ExprAssert) -> Expr {
-		Expr::ExprAssert(node)
-	}
-}
-impl From<ExprError> for Expr {
-	fn from(node: ExprError) -> Expr {
-		Expr::ExprError(node)
-	}
-}
-impl AstNode for Expr {
-	fn can_cast(kind: SyntaxKind) -> bool {
-		match kind {
-			EXPR_BINARY | EXPR_UNARY | EXPR_SLICE | EXPR_INDEX | EXPR_INDEX_EXPR | EXPR_APPLY
-			| EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING | EXPR_NUMBER | EXPR_LITERAL
-			| EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP | EXPR_IMPORT | EXPR_VAR | EXPR_LOCAL
-			| EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ASSERT | EXPR_ERROR => true,
-			_ => false,
-		}
 	}
-	fn cast(syntax: SyntaxNode) -> Option<Self> {
-		let res = match syntax.kind() {
-			EXPR_BINARY => Expr::ExprBinary(ExprBinary { syntax }),
-			EXPR_UNARY => Expr::ExprUnary(ExprUnary { syntax }),
-			EXPR_SLICE => Expr::ExprSlice(ExprSlice { syntax }),
-			EXPR_INDEX => Expr::ExprIndex(ExprIndex { syntax }),
-			EXPR_INDEX_EXPR => Expr::ExprIndexExpr(ExprIndexExpr { syntax }),
-			EXPR_APPLY => Expr::ExprApply(ExprApply { syntax }),
-			EXPR_OBJ_EXTEND => Expr::ExprObjExtend(ExprObjExtend { syntax }),
-			EXPR_PARENED => Expr::ExprParened(ExprParened { syntax }),
-			EXPR_STRING => Expr::ExprString(ExprString { syntax }),
-			EXPR_NUMBER => Expr::ExprNumber(ExprNumber { syntax }),
-			EXPR_LITERAL => Expr::ExprLiteral(ExprLiteral { syntax }),
-			EXPR_ARRAY => Expr::ExprArray(ExprArray { syntax }),
-			EXPR_OBJECT => Expr::ExprObject(ExprObject { syntax }),
-			EXPR_ARRAY_COMP => Expr::ExprArrayComp(ExprArrayComp { syntax }),
-			EXPR_IMPORT => Expr::ExprImport(ExprImport { syntax }),
-			EXPR_VAR => Expr::ExprVar(ExprVar { syntax }),
-			EXPR_LOCAL => Expr::ExprLocal(ExprLocal { syntax }),
-			EXPR_IF_THEN_ELSE => Expr::ExprIfThenElse(ExprIfThenElse { syntax }),
-			EXPR_FUNCTION => Expr::ExprFunction(ExprFunction { syntax }),
-			EXPR_ASSERT => Expr::ExprAssert(ExprAssert { syntax }),
-			EXPR_ERROR => Expr::ExprError(ExprError { syntax }),
-			_ => return None,
-		};
-		Some(res)
-	}
-	fn syntax(&self) -> &SyntaxNode {
-		match self {
-			Expr::ExprBinary(it) => &it.syntax,
-			Expr::ExprUnary(it) => &it.syntax,
-			Expr::ExprSlice(it) => &it.syntax,
-			Expr::ExprIndex(it) => &it.syntax,
-			Expr::ExprIndexExpr(it) => &it.syntax,
-			Expr::ExprApply(it) => &it.syntax,
-			Expr::ExprObjExtend(it) => &it.syntax,
-			Expr::ExprParened(it) => &it.syntax,
-			Expr::ExprString(it) => &it.syntax,
-			Expr::ExprNumber(it) => &it.syntax,
-			Expr::ExprLiteral(it) => &it.syntax,
-			Expr::ExprArray(it) => &it.syntax,
-			Expr::ExprObject(it) => &it.syntax,
-			Expr::ExprArrayComp(it) => &it.syntax,
-			Expr::ExprImport(it) => &it.syntax,
-			Expr::ExprVar(it) => &it.syntax,
-			Expr::ExprLocal(it) => &it.syntax,
-			Expr::ExprIfThenElse(it) => &it.syntax,
-			Expr::ExprFunction(it) => &it.syntax,
-			Expr::ExprAssert(it) => &it.syntax,
-			Expr::ExprError(it) => &it.syntax,
-		}
-	}
 }
 impl From<ObjBodyComp> for ObjBody {
 	fn from(node: ObjBodyComp) -> ObjBody {
@@ -2113,6 +1969,167 @@
 		}
 	}
 }
+impl From<ExprBinary> for ExprBase {
+	fn from(node: ExprBinary) -> ExprBase {
+		ExprBase::ExprBinary(node)
+	}
+}
+impl From<ExprUnary> for ExprBase {
+	fn from(node: ExprUnary) -> ExprBase {
+		ExprBase::ExprUnary(node)
+	}
+}
+impl From<ExprSlice> for ExprBase {
+	fn from(node: ExprSlice) -> ExprBase {
+		ExprBase::ExprSlice(node)
+	}
+}
+impl From<ExprIndex> for ExprBase {
+	fn from(node: ExprIndex) -> ExprBase {
+		ExprBase::ExprIndex(node)
+	}
+}
+impl From<ExprIndexExpr> for ExprBase {
+	fn from(node: ExprIndexExpr) -> ExprBase {
+		ExprBase::ExprIndexExpr(node)
+	}
+}
+impl From<ExprApply> for ExprBase {
+	fn from(node: ExprApply) -> ExprBase {
+		ExprBase::ExprApply(node)
+	}
+}
+impl From<ExprObjExtend> for ExprBase {
+	fn from(node: ExprObjExtend) -> ExprBase {
+		ExprBase::ExprObjExtend(node)
+	}
+}
+impl From<ExprParened> for ExprBase {
+	fn from(node: ExprParened) -> ExprBase {
+		ExprBase::ExprParened(node)
+	}
+}
+impl From<ExprString> for ExprBase {
+	fn from(node: ExprString) -> ExprBase {
+		ExprBase::ExprString(node)
+	}
+}
+impl From<ExprNumber> for ExprBase {
+	fn from(node: ExprNumber) -> ExprBase {
+		ExprBase::ExprNumber(node)
+	}
+}
+impl From<ExprLiteral> for ExprBase {
+	fn from(node: ExprLiteral) -> ExprBase {
+		ExprBase::ExprLiteral(node)
+	}
+}
+impl From<ExprArray> for ExprBase {
+	fn from(node: ExprArray) -> ExprBase {
+		ExprBase::ExprArray(node)
+	}
+}
+impl From<ExprObject> for ExprBase {
+	fn from(node: ExprObject) -> ExprBase {
+		ExprBase::ExprObject(node)
+	}
+}
+impl From<ExprArrayComp> for ExprBase {
+	fn from(node: ExprArrayComp) -> ExprBase {
+		ExprBase::ExprArrayComp(node)
+	}
+}
+impl From<ExprImport> for ExprBase {
+	fn from(node: ExprImport) -> ExprBase {
+		ExprBase::ExprImport(node)
+	}
+}
+impl From<ExprVar> for ExprBase {
+	fn from(node: ExprVar) -> ExprBase {
+		ExprBase::ExprVar(node)
+	}
+}
+impl From<ExprIfThenElse> for ExprBase {
+	fn from(node: ExprIfThenElse) -> ExprBase {
+		ExprBase::ExprIfThenElse(node)
+	}
+}
+impl From<ExprFunction> for ExprBase {
+	fn from(node: ExprFunction) -> ExprBase {
+		ExprBase::ExprFunction(node)
+	}
+}
+impl From<ExprAssert> for ExprBase {
+	fn from(node: ExprAssert) -> ExprBase {
+		ExprBase::ExprAssert(node)
+	}
+}
+impl From<ExprError> for ExprBase {
+	fn from(node: ExprError) -> ExprBase {
+		ExprBase::ExprError(node)
+	}
+}
+impl AstNode for ExprBase {
+	fn can_cast(kind: SyntaxKind) -> bool {
+		match kind {
+			EXPR_BINARY | EXPR_UNARY | EXPR_SLICE | EXPR_INDEX | EXPR_INDEX_EXPR | EXPR_APPLY
+			| EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING | EXPR_NUMBER | EXPR_LITERAL
+			| EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP | EXPR_IMPORT | EXPR_VAR
+			| EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ASSERT | EXPR_ERROR => true,
+			_ => false,
+		}
+	}
+	fn cast(syntax: SyntaxNode) -> Option<Self> {
+		let res = match syntax.kind() {
+			EXPR_BINARY => ExprBase::ExprBinary(ExprBinary { syntax }),
+			EXPR_UNARY => ExprBase::ExprUnary(ExprUnary { syntax }),
+			EXPR_SLICE => ExprBase::ExprSlice(ExprSlice { syntax }),
+			EXPR_INDEX => ExprBase::ExprIndex(ExprIndex { syntax }),
+			EXPR_INDEX_EXPR => ExprBase::ExprIndexExpr(ExprIndexExpr { syntax }),
+			EXPR_APPLY => ExprBase::ExprApply(ExprApply { syntax }),
+			EXPR_OBJ_EXTEND => ExprBase::ExprObjExtend(ExprObjExtend { syntax }),
+			EXPR_PARENED => ExprBase::ExprParened(ExprParened { syntax }),
+			EXPR_STRING => ExprBase::ExprString(ExprString { syntax }),
+			EXPR_NUMBER => ExprBase::ExprNumber(ExprNumber { syntax }),
+			EXPR_LITERAL => ExprBase::ExprLiteral(ExprLiteral { syntax }),
+			EXPR_ARRAY => ExprBase::ExprArray(ExprArray { syntax }),
+			EXPR_OBJECT => ExprBase::ExprObject(ExprObject { syntax }),
+			EXPR_ARRAY_COMP => ExprBase::ExprArrayComp(ExprArrayComp { syntax }),
+			EXPR_IMPORT => ExprBase::ExprImport(ExprImport { syntax }),
+			EXPR_VAR => ExprBase::ExprVar(ExprVar { syntax }),
+			EXPR_IF_THEN_ELSE => ExprBase::ExprIfThenElse(ExprIfThenElse { syntax }),
+			EXPR_FUNCTION => ExprBase::ExprFunction(ExprFunction { syntax }),
+			EXPR_ASSERT => ExprBase::ExprAssert(ExprAssert { syntax }),
+			EXPR_ERROR => ExprBase::ExprError(ExprError { syntax }),
+			_ => return None,
+		};
+		Some(res)
+	}
+	fn syntax(&self) -> &SyntaxNode {
+		match self {
+			ExprBase::ExprBinary(it) => &it.syntax,
+			ExprBase::ExprUnary(it) => &it.syntax,
+			ExprBase::ExprSlice(it) => &it.syntax,
+			ExprBase::ExprIndex(it) => &it.syntax,
+			ExprBase::ExprIndexExpr(it) => &it.syntax,
+			ExprBase::ExprApply(it) => &it.syntax,
+			ExprBase::ExprObjExtend(it) => &it.syntax,
+			ExprBase::ExprParened(it) => &it.syntax,
+			ExprBase::ExprString(it) => &it.syntax,
+			ExprBase::ExprNumber(it) => &it.syntax,
+			ExprBase::ExprLiteral(it) => &it.syntax,
+			ExprBase::ExprArray(it) => &it.syntax,
+			ExprBase::ExprObject(it) => &it.syntax,
+			ExprBase::ExprArrayComp(it) => &it.syntax,
+			ExprBase::ExprImport(it) => &it.syntax,
+			ExprBase::ExprVar(it) => &it.syntax,
+			ExprBase::ExprIfThenElse(it) => &it.syntax,
+			ExprBase::ExprFunction(it) => &it.syntax,
+			ExprBase::ExprAssert(it) => &it.syntax,
+			ExprBase::ExprError(it) => &it.syntax,
+		}
+	}
+}
 impl From<MemberBindStmt> for MemberComp {
 	fn from(node: MemberBindStmt) -> MemberComp {
 		MemberComp::MemberBindStmt(node)
@@ -2725,22 +2742,22 @@
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
-impl std::fmt::Display for Expr {
+impl std::fmt::Display for ObjBody {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
-impl std::fmt::Display for ObjBody {
+impl std::fmt::Display for CompSpec {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
-impl std::fmt::Display for CompSpec {
+impl std::fmt::Display for Bind {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
-impl std::fmt::Display for Bind {
+impl std::fmt::Display for ExprBase {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
@@ -2775,6 +2792,11 @@
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
+impl std::fmt::Display for Expr {
+	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+		std::fmt::Display::fmt(self.syntax(), f)
+	}
+}
 impl std::fmt::Display for ExprBinary {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
@@ -2875,11 +2897,6 @@
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
-impl std::fmt::Display for ExprLocal {
-	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-		std::fmt::Display::fmt(self.syntax(), f)
-	}
-}
 impl std::fmt::Display for ExprIfThenElse {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
@@ -2920,6 +2937,11 @@
 		std::fmt::Display::fmt(self.syntax(), f)
 	}
 }
+impl std::fmt::Display for StmtLocal {
+	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+		std::fmt::Display::fmt(self.syntax(), f)
+	}
+}
 impl std::fmt::Display for SliceDescEnd {
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
 		std::fmt::Display::fmt(self.syntax(), f)
modifiedcrates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rsdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs
+++ b/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs
@@ -143,8 +143,6 @@
 	IMPORTBIN_KW,
 	#[token("import")]
 	IMPORT_KW,
-	#[token("local")]
-	LOCAL_KW,
 	#[token("if")]
 	IF_KW,
 	#[token("then")]
@@ -155,6 +153,8 @@
 	FUNCTION_KW,
 	#[token("error")]
 	ERROR_KW,
+	#[token("local")]
+	LOCAL_KW,
 	#[token("in")]
 	IN_KW,
 	META_OBJECT_APPLY,
@@ -180,6 +180,7 @@
 	#[error]
 	LEXING_ERROR,
 	SOURCE_FILE,
+	EXPR,
 	EXPR_BINARY,
 	LHS_EXPR,
 	EXPR_UNARY,
@@ -200,7 +201,6 @@
 	EXPR_ARRAY_COMP,
 	EXPR_IMPORT,
 	EXPR_VAR,
-	EXPR_LOCAL,
 	EXPR_IF_THEN_ELSE,
 	TRUE_EXPR,
 	FALSE_EXPR,
@@ -209,6 +209,7 @@
 	EXPR_ASSERT,
 	ASSERTION,
 	EXPR_ERROR,
+	STMT_LOCAL,
 	SLICE_DESC_END,
 	SLICE_DESC_STEP,
 	ARG,
@@ -233,10 +234,10 @@
 	DESTRUCT_OBJECT_FIELD,
 	DESTRUCT_REST,
 	DESTRUCT_ARRAY_ELEMENT,
-	EXPR,
 	OBJ_BODY,
 	COMP_SPEC,
 	BIND,
+	EXPR_BASE,
 	MEMBER_COMP,
 	MEMBER,
 	FIELD_NAME,
@@ -262,17 +263,17 @@
 			| PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK | L_PAREN
 			| R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON | SEMI | DOT
 			| DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW
-			| IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | LOCAL_KW | IF_KW | THEN_KW | ELSE_KW
-			| FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW
-			| SUPER_KW | FOR_KW | ASSERT_KW => true,
+			| IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW | FUNCTION_KW
+			| ERROR_KW | LOCAL_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW | SUPER_KW
+			| FOR_KW | ASSERT_KW => true,
 			_ => false,
 		}
 	}
 	pub fn is_enum(self) -> bool {
 		match self {
-			EXPR | OBJ_BODY | COMP_SPEC | BIND | MEMBER_COMP | MEMBER | FIELD_NAME | DESTRUCT
-			| DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL | TEXT | NUMBER
-			| IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
+			OBJ_BODY | COMP_SPEC | BIND | EXPR_BASE | MEMBER_COMP | MEMBER | FIELD_NAME
+			| DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL
+			| TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
 			_ => false,
 		}
 	}
@@ -285,5 +286,5 @@
 	}
 }
 #[macro_export]
-macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }
+macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }
 pub use T;
modifiedcrates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -293,6 +293,26 @@
 }
 
 fn expr(p: &mut Parser) -> CompletedMarker {
+	while p.at(T![local]) {
+		let m = p.start();
+
+		p.bump();
+		loop {
+			if p.at(T![;]) {
+				p.bump();
+				break;
+			}
+			bind(p);
+
+			if p.at(T![,]) {
+				p.bump();
+				continue;
+			}
+			p.expect(T![;]);
+			break;
+		}
+		m.complete(p, STMT_LOCAL);
+	}
 	match expr_binding_power(p, 0) {
 		Ok(m) => m,
 		Err(m) => m,
@@ -658,6 +678,7 @@
 	m.complete(p, SLICE_DESC);
 	true
 }
+
 fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
 	let mut lhs = lhs_basic(p)?;
 
@@ -853,25 +874,6 @@
 		array(p)
 	} else if p.at(T!['{']) {
 		object(p)
-	} else if p.at(T![local]) {
-		let m = p.start();
-		p.bump();
-		loop {
-			if p.at(T![;]) {
-				p.bump();
-				break;
-			}
-			bind(p);
-
-			if p.at(T![,]) {
-				p.bump();
-				continue;
-			}
-			p.expect(T![;]);
-			break;
-		}
-		expr(p);
-		m.complete(p, EXPR_LOCAL)
 	} else if p.at(T![function]) {
 		let m = p.start();
 		p.bump();
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snapdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
@@ -3,7 +3,7 @@
 expression: "local intr = $intrinsic(test);\n\nlocal a = 1, b = 2, c = a + b;\n\n[c]\n"
 ---
 SOURCE_FILE@0..68
-  EXPR_LOCAL@0..29
+  STMT_LOCAL@0..23
     LOCAL_KW@0..5 "local"
     WHITESPACE@5..6 " "
     BIND_DESTRUCT@6..14
@@ -17,12 +17,12 @@
         DOLLAR@13..14 "$"
     ERROR_UNEXPECTED_TOKEN@14..23
       IDENT@14..23 "intrinsic"
-    EXPR_PARENED@23..29
-      L_PAREN@23..24 "("
-      EXPR_VAR@24..28
-        NAME@24..28
-          IDENT@24..28 "test"
-      R_PAREN@28..29 ")"
+  EXPR_PARENED@23..29
+    L_PAREN@23..24 "("
+    EXPR_VAR@24..28
+      NAME@24..28
+        IDENT@24..28 "test"
+    R_PAREN@28..29 ")"
   ERROR_CUSTOM@29..67
     SEMI@29..30 ";"
     WHITESPACE@30..32 "\n\n"
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snapdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap
@@ -3,7 +3,7 @@
 expression: "local [a, b, c] = arr;\nlocal [a, ...] = arr_rest;\nlocal [..., a] = rest_arr;\nlocal [...] = rest_in_arr;\nlocal [a, ...n] = arr_rest_n;\nlocal [...n, a] = rest_arr_n;\nlocal [...n] = rest_in_arr_n;\n\nlocal {a, b, c} = obj;\nlocal {a, b, c, ...} = obj_rest;\nlocal {a, b, c, ...n} = obj_rest_n;\n\nnull\n"
 ---
 SOURCE_FILE@0..293
-  EXPR_LOCAL@0..292
+  STMT_LOCAL@0..22
     LOCAL_KW@0..5 "local"
     WHITESPACE@5..6 " "
     BIND_DESTRUCT@6..21
@@ -30,226 +30,225 @@
         NAME@18..21
           IDENT@18..21 "arr"
     SEMI@21..22 ";"
-    WHITESPACE@22..23 "\n"
-    EXPR_LOCAL@23..292
-      LOCAL_KW@23..28 "local"
-      WHITESPACE@28..29 " "
-      BIND_DESTRUCT@29..48
-        DESTRUCT_ARRAY@29..37
-          L_BRACK@29..30 "["
-          DESTRUCT_FULL@30..31
-            NAME@30..31
-              IDENT@30..31 "a"
-          COMMA@31..32 ","
-          WHITESPACE@32..33 " "
-          DESTRUCT_REST@33..36
-            DOTDOTDOT@33..36 "..."
-          R_BRACK@36..37 "]"
-        WHITESPACE@37..38 " "
-        ASSIGN@38..39 "="
-        WHITESPACE@39..40 " "
-        EXPR_VAR@40..48
-          NAME@40..48
-            IDENT@40..48 "arr_rest"
-      SEMI@48..49 ";"
-      WHITESPACE@49..50 "\n"
-      EXPR_LOCAL@50..292
-        LOCAL_KW@50..55 "local"
-        WHITESPACE@55..56 " "
-        BIND_DESTRUCT@56..75
-          DESTRUCT_ARRAY@56..64
-            L_BRACK@56..57 "["
-            DESTRUCT_REST@57..60
-              DOTDOTDOT@57..60 "..."
-            COMMA@60..61 ","
-            WHITESPACE@61..62 " "
-            DESTRUCT_FULL@62..63
-              NAME@62..63
-                IDENT@62..63 "a"
-            R_BRACK@63..64 "]"
-          WHITESPACE@64..65 " "
-          ASSIGN@65..66 "="
-          WHITESPACE@66..67 " "
-          EXPR_VAR@67..75
-            NAME@67..75
-              IDENT@67..75 "rest_arr"
-        SEMI@75..76 ";"
-        WHITESPACE@76..77 "\n"
-        EXPR_LOCAL@77..292
-          LOCAL_KW@77..82 "local"
-          WHITESPACE@82..83 " "
-          BIND_DESTRUCT@83..102
-            DESTRUCT_ARRAY@83..88
-              L_BRACK@83..84 "["
-              DESTRUCT_REST@84..87
-                DOTDOTDOT@84..87 "..."
-              R_BRACK@87..88 "]"
-            WHITESPACE@88..89 " "
-            ASSIGN@89..90 "="
-            WHITESPACE@90..91 " "
-            EXPR_VAR@91..102
-              NAME@91..102
-                IDENT@91..102 "rest_in_arr"
-          SEMI@102..103 ";"
-          WHITESPACE@103..104 "\n"
-          EXPR_LOCAL@104..292
-            LOCAL_KW@104..109 "local"
-            WHITESPACE@109..110 " "
-            BIND_DESTRUCT@110..132
-              DESTRUCT_ARRAY@110..119
-                L_BRACK@110..111 "["
-                DESTRUCT_FULL@111..112
-                  NAME@111..112
-                    IDENT@111..112 "a"
-                COMMA@112..113 ","
-                WHITESPACE@113..114 " "
-                DESTRUCT_REST@114..118
-                  DOTDOTDOT@114..117 "..."
-                  IDENT@117..118 "n"
-                R_BRACK@118..119 "]"
-              WHITESPACE@119..120 " "
-              ASSIGN@120..121 "="
-              WHITESPACE@121..122 " "
-              EXPR_VAR@122..132
-                NAME@122..132
-                  IDENT@122..132 "arr_rest_n"
-            SEMI@132..133 ";"
-            WHITESPACE@133..134 "\n"
-            EXPR_LOCAL@134..292
-              LOCAL_KW@134..139 "local"
-              WHITESPACE@139..140 " "
-              BIND_DESTRUCT@140..162
-                DESTRUCT_ARRAY@140..149
-                  L_BRACK@140..141 "["
-                  DESTRUCT_REST@141..145
-                    DOTDOTDOT@141..144 "..."
-                    IDENT@144..145 "n"
-                  COMMA@145..146 ","
-                  WHITESPACE@146..147 " "
-                  DESTRUCT_FULL@147..148
-                    NAME@147..148
-                      IDENT@147..148 "a"
-                  R_BRACK@148..149 "]"
-                WHITESPACE@149..150 " "
-                ASSIGN@150..151 "="
-                WHITESPACE@151..152 " "
-                EXPR_VAR@152..162
-                  NAME@152..162
-                    IDENT@152..162 "rest_arr_n"
-              SEMI@162..163 ";"
-              WHITESPACE@163..164 "\n"
-              EXPR_LOCAL@164..292
-                LOCAL_KW@164..169 "local"
-                WHITESPACE@169..170 " "
-                BIND_DESTRUCT@170..192
-                  DESTRUCT_ARRAY@170..176
-                    L_BRACK@170..171 "["
-                    DESTRUCT_REST@171..175
-                      DOTDOTDOT@171..174 "..."
-                      IDENT@174..175 "n"
-                    R_BRACK@175..176 "]"
-                  WHITESPACE@176..177 " "
-                  ASSIGN@177..178 "="
-                  WHITESPACE@178..179 " "
-                  EXPR_VAR@179..192
-                    NAME@179..192
-                      IDENT@179..192 "rest_in_arr_n"
-                SEMI@192..193 ";"
-                WHITESPACE@193..195 "\n\n"
-                EXPR_LOCAL@195..292
-                  LOCAL_KW@195..200 "local"
-                  WHITESPACE@200..201 " "
-                  BIND_DESTRUCT@201..216
-                    DESTRUCT_OBJECT@201..210
-                      L_BRACE@201..202 "{"
-                      DESTRUCT_OBJECT_FIELD@202..203
-                        NAME@202..203
-                          IDENT@202..203 "a"
-                      COMMA@203..204 ","
-                      WHITESPACE@204..205 " "
-                      DESTRUCT_OBJECT_FIELD@205..206
-                        NAME@205..206
-                          IDENT@205..206 "b"
-                      COMMA@206..207 ","
-                      WHITESPACE@207..208 " "
-                      DESTRUCT_OBJECT_FIELD@208..209
-                        NAME@208..209
-                          IDENT@208..209 "c"
-                      R_BRACE@209..210 "}"
-                    WHITESPACE@210..211 " "
-                    ASSIGN@211..212 "="
-                    WHITESPACE@212..213 " "
-                    EXPR_VAR@213..216
-                      NAME@213..216
-                        IDENT@213..216 "obj"
-                  SEMI@216..217 ";"
-                  WHITESPACE@217..218 "\n"
-                  EXPR_LOCAL@218..292
-                    LOCAL_KW@218..223 "local"
-                    WHITESPACE@223..224 " "
-                    BIND_DESTRUCT@224..249
-                      DESTRUCT_OBJECT@224..238
-                        L_BRACE@224..225 "{"
-                        DESTRUCT_OBJECT_FIELD@225..226
-                          NAME@225..226
-                            IDENT@225..226 "a"
-                        COMMA@226..227 ","
-                        WHITESPACE@227..228 " "
-                        DESTRUCT_OBJECT_FIELD@228..229
-                          NAME@228..229
-                            IDENT@228..229 "b"
-                        COMMA@229..230 ","
-                        WHITESPACE@230..231 " "
-                        DESTRUCT_OBJECT_FIELD@231..232
-                          NAME@231..232
-                            IDENT@231..232 "c"
-                        COMMA@232..233 ","
-                        WHITESPACE@233..234 " "
-                        DESTRUCT_REST@234..237
-                          DOTDOTDOT@234..237 "..."
-                        R_BRACE@237..238 "}"
-                      WHITESPACE@238..239 " "
-                      ASSIGN@239..240 "="
-                      WHITESPACE@240..241 " "
-                      EXPR_VAR@241..249
-                        NAME@241..249
-                          IDENT@241..249 "obj_rest"
-                    SEMI@249..250 ";"
-                    WHITESPACE@250..251 "\n"
-                    EXPR_LOCAL@251..292
-                      LOCAL_KW@251..256 "local"
-                      WHITESPACE@256..257 " "
-                      BIND_DESTRUCT@257..285
-                        DESTRUCT_OBJECT@257..272
-                          L_BRACE@257..258 "{"
-                          DESTRUCT_OBJECT_FIELD@258..259
-                            NAME@258..259
-                              IDENT@258..259 "a"
-                          COMMA@259..260 ","
-                          WHITESPACE@260..261 " "
-                          DESTRUCT_OBJECT_FIELD@261..262
-                            NAME@261..262
-                              IDENT@261..262 "b"
-                          COMMA@262..263 ","
-                          WHITESPACE@263..264 " "
-                          DESTRUCT_OBJECT_FIELD@264..265
-                            NAME@264..265
-                              IDENT@264..265 "c"
-                          COMMA@265..266 ","
-                          WHITESPACE@266..267 " "
-                          DESTRUCT_REST@267..271
-                            DOTDOTDOT@267..270 "..."
-                            IDENT@270..271 "n"
-                          R_BRACE@271..272 "}"
-                        WHITESPACE@272..273 " "
-                        ASSIGN@273..274 "="
-                        WHITESPACE@274..275 " "
-                        EXPR_VAR@275..285
-                          NAME@275..285
-                            IDENT@275..285 "obj_rest_n"
-                      SEMI@285..286 ";"
-                      WHITESPACE@286..288 "\n\n"
-                      EXPR_LITERAL@288..292
-                        NULL_KW@288..292 "null"
+  WHITESPACE@22..23 "\n"
+  STMT_LOCAL@23..49
+    LOCAL_KW@23..28 "local"
+    WHITESPACE@28..29 " "
+    BIND_DESTRUCT@29..48
+      DESTRUCT_ARRAY@29..37
+        L_BRACK@29..30 "["
+        DESTRUCT_FULL@30..31
+          NAME@30..31
+            IDENT@30..31 "a"
+        COMMA@31..32 ","
+        WHITESPACE@32..33 " "
+        DESTRUCT_REST@33..36
+          DOTDOTDOT@33..36 "..."
+        R_BRACK@36..37 "]"
+      WHITESPACE@37..38 " "
+      ASSIGN@38..39 "="
+      WHITESPACE@39..40 " "
+      EXPR_VAR@40..48
+        NAME@40..48
+          IDENT@40..48 "arr_rest"
+    SEMI@48..49 ";"
+  WHITESPACE@49..50 "\n"
+  STMT_LOCAL@50..76
+    LOCAL_KW@50..55 "local"
+    WHITESPACE@55..56 " "
+    BIND_DESTRUCT@56..75
+      DESTRUCT_ARRAY@56..64
+        L_BRACK@56..57 "["
+        DESTRUCT_REST@57..60
+          DOTDOTDOT@57..60 "..."
+        COMMA@60..61 ","
+        WHITESPACE@61..62 " "
+        DESTRUCT_FULL@62..63
+          NAME@62..63
+            IDENT@62..63 "a"
+        R_BRACK@63..64 "]"
+      WHITESPACE@64..65 " "
+      ASSIGN@65..66 "="
+      WHITESPACE@66..67 " "
+      EXPR_VAR@67..75
+        NAME@67..75
+          IDENT@67..75 "rest_arr"
+    SEMI@75..76 ";"
+  WHITESPACE@76..77 "\n"
+  STMT_LOCAL@77..103
+    LOCAL_KW@77..82 "local"
+    WHITESPACE@82..83 " "
+    BIND_DESTRUCT@83..102
+      DESTRUCT_ARRAY@83..88
+        L_BRACK@83..84 "["
+        DESTRUCT_REST@84..87
+          DOTDOTDOT@84..87 "..."
+        R_BRACK@87..88 "]"
+      WHITESPACE@88..89 " "
+      ASSIGN@89..90 "="
+      WHITESPACE@90..91 " "
+      EXPR_VAR@91..102
+        NAME@91..102
+          IDENT@91..102 "rest_in_arr"
+    SEMI@102..103 ";"
+  WHITESPACE@103..104 "\n"
+  STMT_LOCAL@104..133
+    LOCAL_KW@104..109 "local"
+    WHITESPACE@109..110 " "
+    BIND_DESTRUCT@110..132
+      DESTRUCT_ARRAY@110..119
+        L_BRACK@110..111 "["
+        DESTRUCT_FULL@111..112
+          NAME@111..112
+            IDENT@111..112 "a"
+        COMMA@112..113 ","
+        WHITESPACE@113..114 " "
+        DESTRUCT_REST@114..118
+          DOTDOTDOT@114..117 "..."
+          IDENT@117..118 "n"
+        R_BRACK@118..119 "]"
+      WHITESPACE@119..120 " "
+      ASSIGN@120..121 "="
+      WHITESPACE@121..122 " "
+      EXPR_VAR@122..132
+        NAME@122..132
+          IDENT@122..132 "arr_rest_n"
+    SEMI@132..133 ";"
+  WHITESPACE@133..134 "\n"
+  STMT_LOCAL@134..163
+    LOCAL_KW@134..139 "local"
+    WHITESPACE@139..140 " "
+    BIND_DESTRUCT@140..162
+      DESTRUCT_ARRAY@140..149
+        L_BRACK@140..141 "["
+        DESTRUCT_REST@141..145
+          DOTDOTDOT@141..144 "..."
+          IDENT@144..145 "n"
+        COMMA@145..146 ","
+        WHITESPACE@146..147 " "
+        DESTRUCT_FULL@147..148
+          NAME@147..148
+            IDENT@147..148 "a"
+        R_BRACK@148..149 "]"
+      WHITESPACE@149..150 " "
+      ASSIGN@150..151 "="
+      WHITESPACE@151..152 " "
+      EXPR_VAR@152..162
+        NAME@152..162
+          IDENT@152..162 "rest_arr_n"
+    SEMI@162..163 ";"
+  WHITESPACE@163..164 "\n"
+  STMT_LOCAL@164..193
+    LOCAL_KW@164..169 "local"
+    WHITESPACE@169..170 " "
+    BIND_DESTRUCT@170..192
+      DESTRUCT_ARRAY@170..176
+        L_BRACK@170..171 "["
+        DESTRUCT_REST@171..175
+          DOTDOTDOT@171..174 "..."
+          IDENT@174..175 "n"
+        R_BRACK@175..176 "]"
+      WHITESPACE@176..177 " "
+      ASSIGN@177..178 "="
+      WHITESPACE@178..179 " "
+      EXPR_VAR@179..192
+        NAME@179..192
+          IDENT@179..192 "rest_in_arr_n"
+    SEMI@192..193 ";"
+  WHITESPACE@193..195 "\n\n"
+  STMT_LOCAL@195..217
+    LOCAL_KW@195..200 "local"
+    WHITESPACE@200..201 " "
+    BIND_DESTRUCT@201..216
+      DESTRUCT_OBJECT@201..210
+        L_BRACE@201..202 "{"
+        DESTRUCT_OBJECT_FIELD@202..203
+          NAME@202..203
+            IDENT@202..203 "a"
+        COMMA@203..204 ","
+        WHITESPACE@204..205 " "
+        DESTRUCT_OBJECT_FIELD@205..206
+          NAME@205..206
+            IDENT@205..206 "b"
+        COMMA@206..207 ","
+        WHITESPACE@207..208 " "
+        DESTRUCT_OBJECT_FIELD@208..209
+          NAME@208..209
+            IDENT@208..209 "c"
+        R_BRACE@209..210 "}"
+      WHITESPACE@210..211 " "
+      ASSIGN@211..212 "="
+      WHITESPACE@212..213 " "
+      EXPR_VAR@213..216
+        NAME@213..216
+          IDENT@213..216 "obj"
+    SEMI@216..217 ";"
+  WHITESPACE@217..218 "\n"
+  STMT_LOCAL@218..250
+    LOCAL_KW@218..223 "local"
+    WHITESPACE@223..224 " "
+    BIND_DESTRUCT@224..249
+      DESTRUCT_OBJECT@224..238
+        L_BRACE@224..225 "{"
+        DESTRUCT_OBJECT_FIELD@225..226
+          NAME@225..226
+            IDENT@225..226 "a"
+        COMMA@226..227 ","
+        WHITESPACE@227..228 " "
+        DESTRUCT_OBJECT_FIELD@228..229
+          NAME@228..229
+            IDENT@228..229 "b"
+        COMMA@229..230 ","
+        WHITESPACE@230..231 " "
+        DESTRUCT_OBJECT_FIELD@231..232
+          NAME@231..232
+            IDENT@231..232 "c"
+        COMMA@232..233 ","
+        WHITESPACE@233..234 " "
+        DESTRUCT_REST@234..237
+          DOTDOTDOT@234..237 "..."
+        R_BRACE@237..238 "}"
+      WHITESPACE@238..239 " "
+      ASSIGN@239..240 "="
+      WHITESPACE@240..241 " "
+      EXPR_VAR@241..249
+        NAME@241..249
+          IDENT@241..249 "obj_rest"
+    SEMI@249..250 ";"
+  WHITESPACE@250..251 "\n"
+  STMT_LOCAL@251..286
+    LOCAL_KW@251..256 "local"
+    WHITESPACE@256..257 " "
+    BIND_DESTRUCT@257..285
+      DESTRUCT_OBJECT@257..272
+        L_BRACE@257..258 "{"
+        DESTRUCT_OBJECT_FIELD@258..259
+          NAME@258..259
+            IDENT@258..259 "a"
+        COMMA@259..260 ","
+        WHITESPACE@260..261 " "
+        DESTRUCT_OBJECT_FIELD@261..262
+          NAME@261..262
+            IDENT@261..262 "b"
+        COMMA@262..263 ","
+        WHITESPACE@263..264 " "
+        DESTRUCT_OBJECT_FIELD@264..265
+          NAME@264..265
+            IDENT@264..265 "c"
+        COMMA@265..266 ","
+        WHITESPACE@266..267 " "
+        DESTRUCT_REST@267..271
+          DOTDOTDOT@267..270 "..."
+          IDENT@270..271 "n"
+        R_BRACE@271..272 "}"
+      WHITESPACE@272..273 " "
+      ASSIGN@273..274 "="
+      WHITESPACE@274..275 " "
+      EXPR_VAR@275..285
+        NAME@275..285
+          IDENT@275..285 "obj_rest_n"
+    SEMI@285..286 ";"
+  WHITESPACE@286..288 "\n\n"
+  EXPR_LITERAL@288..292
+    NULL_KW@288..292 "null"
   WHITESPACE@292..293 "\n"
-
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snapdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap
@@ -3,7 +3,7 @@
 expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n"
 ---
 SOURCE_FILE@0..41
-  EXPR_LOCAL@0..40
+  STMT_LOCAL@0..38
     LOCAL_KW@0..5 "local"
     WHITESPACE@5..7 "\n\t"
     BIND_FUNCTION@7..15
@@ -45,8 +45,8 @@
     COMMA@35..36 ","
     WHITESPACE@36..37 "\n"
     SEMI@37..38 ";"
-    WHITESPACE@38..39 " "
-    EXPR_VAR@39..40
-      NAME@39..40
-        IDENT@39..40 "c"
+  WHITESPACE@38..39 " "
+  EXPR_VAR@39..40
+    NAME@39..40
+      IDENT@39..40 "c"
   WHITESPACE@40..41 "\n"
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snapdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
@@ -3,7 +3,7 @@
 expression: "local a =\nlocal b = 3;\n1\n"
 ---
 SOURCE_FILE@0..25
-  EXPR_LOCAL@0..25
+  STMT_LOCAL@0..25
     LOCAL_KW@0..5 "local"
     WHITESPACE@5..6 " "
     BIND_DESTRUCT@6..24
@@ -13,7 +13,7 @@
       WHITESPACE@7..8 " "
       ASSIGN@8..9 "="
       WHITESPACE@9..10 "\n"
-      EXPR_LOCAL@10..24
+      STMT_LOCAL@10..22
         LOCAL_KW@10..15 "local"
         WHITESPACE@15..16 " "
         BIND_DESTRUCT@16..21
@@ -26,12 +26,12 @@
           EXPR_NUMBER@20..21
             FLOAT@20..21 "3"
         SEMI@21..22 ";"
-        WHITESPACE@22..23 "\n"
-        EXPR_NUMBER@23..24
-          FLOAT@23..24 "1"
+      WHITESPACE@22..23 "\n"
+      EXPR_NUMBER@23..24
+        FLOAT@23..24 "1"
     WHITESPACE@24..25 "\n"
-    ERROR_MISSING_TOKEN@25..25
     ERROR_MISSING_TOKEN@25..25
+  ERROR_MISSING_TOKEN@25..25
 ===
 LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])) }, range: 25..25 }
 LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snapdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
@@ -3,7 +3,7 @@
 expression: "local a =\n"
 ---
 SOURCE_FILE@0..10
-  EXPR_LOCAL@0..10
+  STMT_LOCAL@0..10
     LOCAL_KW@0..5 "local"
     WHITESPACE@5..6 " "
     BIND_DESTRUCT@6..10
@@ -15,7 +15,7 @@
       WHITESPACE@9..10 "\n"
       ERROR_MISSING_TOKEN@10..10
     ERROR_MISSING_TOKEN@10..10
-    ERROR_MISSING_TOKEN@10..10
+  ERROR_MISSING_TOKEN@10..10
 ===
 LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }
 LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snapdiffbeforeafterboth
before · crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap
1---2source: crates/jrsonnet-rowan-parser/src/tests.rs3expression: "{\n  local std = self,\n  local id = std.id,\n\n  thisFile:: error 'std.thisFile is deprecated, to enable its support in jrsonnet - recompile it with \"legacy-this-file\" support.\\nThis will slow down stdlib caching a bit, though',\n\n  toString(a):: '' + a,\n\n  lstripChars(str, chars)::\n    if std.length(str) > 0 && std.member(chars, str[0]) then\n      std.lstripChars(str[1:], chars)\n    else\n      str,\n\n  rstripChars(str, chars)::\n    local len = std.length(str);\n    if len > 0 && std.member(chars, str[len - 1]) then\n      std.rstripChars(str[:len - 1], chars)\n    else\n      str,\n\n  stripChars(str, chars)::\n    std.lstripChars(std.rstripChars(str, chars), chars),\n\n  stringChars(str)::\n    std.makeArray(std.length(str), function(i) str[i]),\n\n  splitLimitR(str, c, maxsplits)::\n    if maxsplits == -1 then\n      std.splitLimit(str, c, -1)\n    else\n      local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n      std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n  split(str, c):: std.splitLimit(str, c, -1),\n\n  mapWithIndex(func, arr)::\n    if !std.isFunction(func) then\n      error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n    else if !std.isArray(arr) && !std.isString(arr) then\n      error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n    else\n      std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n  mapWithKey(func, obj)::\n    if !std.isFunction(func) then\n      error ('std.mapWithKey first param must be function, got ' + std.type(func))\n    else if !std.isObject(obj) then\n      error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n    else\n      { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n  lines(arr)::\n    std.join('\\n', arr + ['']),\n\n  deepJoin(arr)::\n    if std.isString(arr) then\n      arr\n    else if std.isArray(arr) then\n      std.join('', [std.deepJoin(x) for x in arr])\n    else\n      error 'Expected string or array, got %s' % std.type(arr),\n\n  filterMap(filter_func, map_func, arr)::\n    if !std.isFunction(filter_func) then\n      error ('std.filterMap first param must be function, got ' + std.type(filter_func))\n    else if !std.isFunction(map_func) then\n      error ('std.filterMap second param must be function, got ' + std.type(map_func))\n    else if !std.isArray(arr) then\n      error ('std.filterMap third param must be array, got ' + std.type(arr))\n    else\n      std.map(map_func, std.filter(filter_func, arr)),\n\n  assertEqual(a, b)::\n    if a == b then\n      true\n    else\n      error 'Assertion failed. ' + a + ' != ' + b,\n\n  clamp(x, minVal, maxVal)::\n    if x < minVal then minVal\n    else if x > maxVal then maxVal\n    else x,\n\n  flattenArrays(arrs)::\n    std.foldl(function(a, b) a + b, arrs, []),\n\n  manifestIni(ini)::\n    local body_lines(body) =\n      std.join([], [\n        local value_or_values = body[k];\n        if std.isArray(value_or_values) then\n          ['%s = %s' % [k, value] for value in value_or_values]\n        else\n          ['%s = %s' % [k, value_or_values]]\n\n        for k in std.objectFields(body)\n      ]);\n\n    local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n          main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n          all_sections = [\n      section_lines(k, ini.sections[k])\n      for k in std.objectFields(ini.sections)\n    ];\n    std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n  manifestToml(value):: std.manifestTomlEx(value, '  '),\n\n  escapeStringPython(str)::\n    std.escapeStringJson(str),\n\n  escapeStringBash(str_)::\n    local str = std.toString(str_);\n    local trans(ch) =\n      if ch == \"'\" then\n        \"'\\\"'\\\"'\"\n      else\n        ch;\n    \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n  escapeStringDollars(str_)::\n    local str = std.toString(str_);\n    local trans(ch) =\n      if ch == '$' then\n        '$$'\n      else\n        ch;\n    std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n  local xml_escapes = {\n    '<': '&lt;',\n    '>': '&gt;',\n    '&': '&amp;',\n    '\"': '&quot;',\n    \"'\": '&apos;',\n  },\n\n  escapeStringXML(str_)::\n    local str = std.toString(str_);\n    std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n  manifestJson(value):: std.manifestJsonEx(value, '    ') tailstrict,\n\n  manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n  manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n    if !std.isArray(value) then\n      error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n    else\n      '---\\n' + std.join(\n        '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n      ) + if c_document_end then '\\n...\\n' else '\\n',\n\n  manifestPython(v)::\n    if std.isObject(v) then\n      local fields = [\n        '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n        for k in std.objectFields(v)\n      ];\n      '{%s}' % [std.join(', ', fields)]\n    else if std.isArray(v) then\n      '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n    else if std.isString(v) then\n      '%s' % [std.escapeStringPython(v)]\n    else if std.isFunction(v) then\n      error 'cannot manifest function'\n    else if std.isNumber(v) then\n      std.toString(v)\n    else if v == true then\n      'True'\n    else if v == false then\n      'False'\n    else if v == null then\n      'None',\n\n  manifestPythonVars(conf)::\n    local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n    std.join('\\n', vars + ['']),\n\n  manifestXmlJsonml(value)::\n    if !std.isArray(value) then\n      error 'Expected a JSONML value (an array), got %s' % std.type(value)\n    else\n      local aux(v) =\n        if std.isString(v) then\n          v\n        else\n          local tag = v[0];\n          local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n          local attrs = if has_attrs then v[1] else {};\n          local children = if has_attrs then v[2:] else v[1:];\n          local attrs_str =\n            std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n          std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '</', tag, '>']);\n\n      aux(value),\n\n  uniq(arr, keyF=id)::\n    local f(a, b) =\n      if std.length(a) == 0 then\n        [b]\n      else if keyF(a[std.length(a) - 1]) == keyF(b) then\n        a\n      else\n        a + [b];\n    std.foldl(f, arr, []),\n\n  set(arr, keyF=id)::\n    std.uniq(std.sort(arr, keyF), keyF),\n\n  setMember(x, arr, keyF=id)::\n    // TODO(dcunnin): Binary chop for O(log n) complexity\n    std.length(std.setInter([x], arr, keyF)) > 0,\n\n  setUnion(a, b, keyF=id)::\n    // NOTE: order matters, values in `a` win\n    local aux(a, b, i, j, acc) =\n      if i >= std.length(a) then\n        acc + b[j:]\n      else if j >= std.length(b) then\n        acc + a[i:]\n      else\n        local ak = keyF(a[i]);\n        local bk = keyF(b[j]);\n        if ak == bk then\n          aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n        else if ak < bk then\n          aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n        else\n          aux(a, b, i, j + 1, acc + [b[j]]) tailstrict;\n    aux(a, b, 0, 0, []),\n\n  setInter(a, b, keyF=id)::\n    local aux(a, b, i, j, acc) =\n      if i >= std.length(a) || j >= std.length(b) then\n        acc\n      else\n        if keyF(a[i]) == keyF(b[j]) then\n          aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n        else if keyF(a[i]) < keyF(b[j]) then\n          aux(a, b, i + 1, j, acc) tailstrict\n        else\n          aux(a, b, i, j + 1, acc) tailstrict;\n    aux(a, b, 0, 0, []) tailstrict,\n\n  setDiff(a, b, keyF=id)::\n    local aux(a, b, i, j, acc) =\n      if i >= std.length(a) then\n        acc\n      else if j >= std.length(b) then\n        acc + a[i:]\n      else\n        if keyF(a[i]) == keyF(b[j]) then\n          aux(a, b, i + 1, j + 1, acc) tailstrict\n        else if keyF(a[i]) < keyF(b[j]) then\n          aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n        else\n          aux(a, b, i, j + 1, acc) tailstrict;\n    aux(a, b, 0, 0, []) tailstrict,\n\n  mergePatch(target, patch)::\n    if std.isObject(patch) then\n      local target_object =\n        if std.isObject(target) then target else {};\n\n      local target_fields =\n        if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n      local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n      local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n      {\n        [k]:\n          if !std.objectHas(patch, k) then\n            target_object[k]\n          else if !std.objectHas(target_object, k) then\n            std.mergePatch(null, patch[k]) tailstrict\n          else\n            std.mergePatch(target_object[k], patch[k]) tailstrict\n        for k in std.setDiff(both_fields, null_fields)\n      }\n    else\n      patch,\n\n  get(o, f, default=null, inc_hidden=true)::\n    if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n  objectFields(o)::\n    std.objectFieldsEx(o, false),\n\n  objectFieldsAll(o)::\n    std.objectFieldsEx(o, true),\n\n  objectHas(o, f)::\n    std.objectHasEx(o, f, false),\n\n  objectHasAll(o, f)::\n    std.objectHasEx(o, f, true),\n\n  objectValues(o)::\n    [o[k] for k in std.objectFields(o)],\n\n  objectValuesAll(o)::\n    [o[k] for k in std.objectFieldsAll(o)],\n\n  resolvePath(f, r)::\n    local arr = std.split(f, '/');\n    std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n  prune(a)::\n    local isContent(b) =\n      if b == null then\n        false\n      else if std.isArray(b) then\n        std.length(b) > 0\n      else if std.isObject(b) then\n        std.length(b) > 0\n      else\n        true;\n    if std.isArray(a) then\n      [std.prune(x) for x in a if isContent($.prune(x))]\n    else if std.isObject(a) then {\n      [x]: $.prune(a[x])\n      for x in std.objectFields(a)\n      if isContent(std.prune(a[x]))\n    } else\n      a,\n\n  find(value, arr)::\n    if !std.isArray(arr) then\n      error 'find second parameter should be an array, got ' + std.type(arr)\n    else\n      std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n}\n"4---5SOURCE_FILE@0..102826  EXPR_OBJECT@0..102817    OBJ_BODY_MEMBER_LIST@0..102818      L_BRACE@0..1 "{"9      WHITESPACE@1..4 "\n  "10      MEMBER_BIND_STMT@4..2011        OBJ_LOCAL@4..2012          LOCAL_KW@4..9 "local"13          WHITESPACE@9..10 " "14          BIND_DESTRUCT@10..2015            DESTRUCT_FULL@10..1316              NAME@10..1317                IDENT@10..13 "std"18            WHITESPACE@13..14 " "19            ASSIGN@14..15 "="20            WHITESPACE@15..16 " "21            EXPR_LITERAL@16..2022              SELF_KW@16..20 "self"23      COMMA@20..21 ","24      WHITESPACE@21..24 "\n  "25      MEMBER_BIND_STMT@24..4126        OBJ_LOCAL@24..4127          LOCAL_KW@24..29 "local"28          WHITESPACE@29..30 " "29          BIND_DESTRUCT@30..4130            DESTRUCT_FULL@30..3231              NAME@30..3232                IDENT@30..32 "id"33            WHITESPACE@32..33 " "34            ASSIGN@33..34 "="35            WHITESPACE@34..35 " "36            EXPR_INDEX@35..4137              EXPR_VAR@35..3838                NAME@35..3839                  IDENT@35..38 "std"40              DOT@38..39 "."41              NAME@39..4142                IDENT@39..41 "id"43      COMMA@41..42 ","44      WHITESPACE@42..46 "\n\n  "45      MEMBER_FIELD_NORMAL@46..22446        FIELD_NAME_FIXED@46..5447          NAME@46..5448            IDENT@46..54 "thisFile"49        COLONCOLON@54..56 "::"50        WHITESPACE@56..57 " "51        EXPR_ERROR@57..22452          ERROR_KW@57..62 "error"53          WHITESPACE@62..63 " "54          EXPR_STRING@63..22455            STRING_SINGLE@63..224 "'std.thisFile is depr ..."56      COMMA@224..225 ","57      WHITESPACE@225..229 "\n\n  "58      MEMBER_FIELD_METHOD@229..24959        FIELD_NAME_FIXED@229..23760          NAME@229..23761            IDENT@229..237 "toString"62        PARAMS_DESC@237..24063          L_PAREN@237..238 "("64          PARAM@238..23965            DESTRUCT_FULL@238..23966              NAME@238..23967                IDENT@238..239 "a"68          R_PAREN@239..240 ")"69        COLONCOLON@240..242 "::"70        WHITESPACE@242..243 " "71        EXPR_BINARY@243..24972          LHS_EXPR@243..24573            EXPR_STRING@243..24574              STRING_SINGLE@243..245 "''"75          WHITESPACE@245..246 " "76          PLUS@246..247 "+"77          WHITESPACE@247..248 " "78          EXPR_VAR@248..24979            NAME@248..24980              IDENT@248..249 "a"81      COMMA@249..250 ","82      WHITESPACE@250..254 "\n\n  "83      MEMBER_FIELD_METHOD@254..39784        FIELD_NAME_FIXED@254..26585          NAME@254..26586            IDENT@254..265 "lstripChars"87        PARAMS_DESC@265..27788          L_PAREN@265..266 "("89          PARAM@266..26990            DESTRUCT_FULL@266..26991              NAME@266..26992                IDENT@266..269 "str"93          COMMA@269..270 ","94          WHITESPACE@270..271 " "95          PARAM@271..27696            DESTRUCT_FULL@271..27697              NAME@271..27698                IDENT@271..276 "chars"99          R_PAREN@276..277 ")"100        COLONCOLON@277..279 "::"101        WHITESPACE@279..284 "\n    "102        EXPR_IF_THEN_ELSE@284..397103          IF_KW@284..286 "if"104          WHITESPACE@286..287 " "105          EXPR_BINARY@287..335106            LHS_EXPR@287..306107              EXPR_BINARY@287..306108                LHS_EXPR@287..302109                  EXPR_APPLY@287..302110                    EXPR_INDEX@287..297111                      EXPR_VAR@287..290112                        NAME@287..290113                          IDENT@287..290 "std"114                      DOT@290..291 "."115                      NAME@291..297116                        IDENT@291..297 "length"117                    ARGS_DESC@297..302118                      L_PAREN@297..298 "("119                      ARG@298..301120                        EXPR_VAR@298..301121                          NAME@298..301122                            IDENT@298..301 "str"123                      R_PAREN@301..302 ")"124                WHITESPACE@302..303 " "125                GT@303..304 ">"126                WHITESPACE@304..305 " "127                EXPR_NUMBER@305..306128                  FLOAT@305..306 "0"129            WHITESPACE@306..307 " "130            AND@307..309 "&&"131            WHITESPACE@309..310 " "132            EXPR_APPLY@310..335133              EXPR_INDEX@310..320134                EXPR_VAR@310..313135                  NAME@310..313136                    IDENT@310..313 "std"137                DOT@313..314 "."138                NAME@314..320139                  IDENT@314..320 "member"140              ARGS_DESC@320..335141                L_PAREN@320..321 "("142                ARG@321..326143                  EXPR_VAR@321..326144                    NAME@321..326145                      IDENT@321..326 "chars"146                COMMA@326..327 ","147                WHITESPACE@327..328 " "148                ARG@328..334149                  EXPR_INDEX_EXPR@328..334150                    LHS_EXPR@328..331151                      EXPR_VAR@328..331152                        NAME@328..331153                          IDENT@328..331 "str"154                    L_BRACK@331..332 "["155                    EXPR_NUMBER@332..333156                      FLOAT@332..333 "0"157                    R_BRACK@333..334 "]"158                R_PAREN@334..335 ")"159          WHITESPACE@335..336 " "160          THEN_KW@336..340 "then"161          WHITESPACE@340..347 "\n      "162          TRUE_EXPR@347..378163            EXPR_APPLY@347..378164              EXPR_INDEX@347..362165                EXPR_VAR@347..350166                  NAME@347..350167                    IDENT@347..350 "std"168                DOT@350..351 "."169                NAME@351..362170                  IDENT@351..362 "lstripChars"171              ARGS_DESC@362..378172                L_PAREN@362..363 "("173                ARG@363..370174                  EXPR_SLICE@363..370175                    EXPR_VAR@363..366176                      NAME@363..366177                        IDENT@363..366 "str"178                    SLICE_DESC@366..370179                      L_BRACK@366..367 "["180                      EXPR_NUMBER@367..368181                        FLOAT@367..368 "1"182                      COLON@368..369 ":"183                      R_BRACK@369..370 "]"184                COMMA@370..371 ","185                WHITESPACE@371..372 " "186                ARG@372..377187                  EXPR_VAR@372..377188                    NAME@372..377189                      IDENT@372..377 "chars"190                R_PAREN@377..378 ")"191          WHITESPACE@378..383 "\n    "192          ELSE_KW@383..387 "else"193          WHITESPACE@387..394 "\n      "194          FALSE_EXPR@394..397195            EXPR_VAR@394..397196              NAME@394..397197                IDENT@394..397 "str"198      COMMA@397..398 ","199      WHITESPACE@398..402 "\n\n  "200      MEMBER_FIELD_METHOD@402..578201        FIELD_NAME_FIXED@402..413202          NAME@402..413203            IDENT@402..413 "rstripChars"204        PARAMS_DESC@413..425205          L_PAREN@413..414 "("206          PARAM@414..417207            DESTRUCT_FULL@414..417208              NAME@414..417209                IDENT@414..417 "str"210          COMMA@417..418 ","211          WHITESPACE@418..419 " "212          PARAM@419..424213            DESTRUCT_FULL@419..424214              NAME@419..424215                IDENT@419..424 "chars"216          R_PAREN@424..425 ")"217        COLONCOLON@425..427 "::"218        WHITESPACE@427..432 "\n    "219        EXPR_LOCAL@432..578220          LOCAL_KW@432..437 "local"221          WHITESPACE@437..438 " "222          BIND_DESTRUCT@438..459223            DESTRUCT_FULL@438..441224              NAME@438..441225                IDENT@438..441 "len"226            WHITESPACE@441..442 " "227            ASSIGN@442..443 "="228            WHITESPACE@443..444 " "229            EXPR_APPLY@444..459230              EXPR_INDEX@444..454231                EXPR_VAR@444..447232                  NAME@444..447233                    IDENT@444..447 "std"234                DOT@447..448 "."235                NAME@448..454236                  IDENT@448..454 "length"237              ARGS_DESC@454..459238                L_PAREN@454..455 "("239                ARG@455..458240                  EXPR_VAR@455..458241                    NAME@455..458242                      IDENT@455..458 "str"243                R_PAREN@458..459 ")"244          SEMI@459..460 ";"245          WHITESPACE@460..465 "\n    "246          EXPR_IF_THEN_ELSE@465..578247            IF_KW@465..467 "if"248            WHITESPACE@467..468 " "249            EXPR_BINARY@468..510250              LHS_EXPR@468..475251                EXPR_BINARY@468..475252                  LHS_EXPR@468..471253                    EXPR_VAR@468..471254                      NAME@468..471255                        IDENT@468..471 "len"256                  WHITESPACE@471..472 " "257                  GT@472..473 ">"258                  WHITESPACE@473..474 " "259                  EXPR_NUMBER@474..475260                    FLOAT@474..475 "0"261              WHITESPACE@475..476 " "262              AND@476..478 "&&"263              WHITESPACE@478..479 " "264              EXPR_APPLY@479..510265                EXPR_INDEX@479..489266                  EXPR_VAR@479..482267                    NAME@479..482268                      IDENT@479..482 "std"269                  DOT@482..483 "."270                  NAME@483..489271                    IDENT@483..489 "member"272                ARGS_DESC@489..510273                  L_PAREN@489..490 "("274                  ARG@490..495275                    EXPR_VAR@490..495276                      NAME@490..495277                        IDENT@490..495 "chars"278                  COMMA@495..496 ","279                  WHITESPACE@496..497 " "280                  ARG@497..509281                    EXPR_INDEX_EXPR@497..509282                      LHS_EXPR@497..500283                        EXPR_VAR@497..500284                          NAME@497..500285                            IDENT@497..500 "str"286                      L_BRACK@500..501 "["287                      EXPR_BINARY@501..508288                        LHS_EXPR@501..504289                          EXPR_VAR@501..504290                            NAME@501..504291                              IDENT@501..504 "len"292                        WHITESPACE@504..505 " "293                        MINUS@505..506 "-"294                        WHITESPACE@506..507 " "295                        EXPR_NUMBER@507..508296                          FLOAT@507..508 "1"297                      R_BRACK@508..509 "]"298                  R_PAREN@509..510 ")"299            WHITESPACE@510..511 " "300            THEN_KW@511..515 "then"301            WHITESPACE@515..522 "\n      "302            TRUE_EXPR@522..559303              EXPR_APPLY@522..559304                EXPR_INDEX@522..537305                  EXPR_VAR@522..525306                    NAME@522..525307                      IDENT@522..525 "std"308                  DOT@525..526 "."309                  NAME@526..537310                    IDENT@526..537 "rstripChars"311                ARGS_DESC@537..559312                  L_PAREN@537..538 "("313                  ARG@538..551314                    EXPR_SLICE@538..551315                      EXPR_VAR@538..541316                        NAME@538..541317                          IDENT@538..541 "str"318                      SLICE_DESC@541..551319                        L_BRACK@541..542 "["320                        COLON@542..543 ":"321                        SLICE_DESC_END@543..550322                          EXPR_BINARY@543..550323                            LHS_EXPR@543..546324                              EXPR_VAR@543..546325                                NAME@543..546326                                  IDENT@543..546 "len"327                            WHITESPACE@546..547 " "328                            MINUS@547..548 "-"329                            WHITESPACE@548..549 " "330                            EXPR_NUMBER@549..550331                              FLOAT@549..550 "1"332                        R_BRACK@550..551 "]"333                  COMMA@551..552 ","334                  WHITESPACE@552..553 " "335                  ARG@553..558336                    EXPR_VAR@553..558337                      NAME@553..558338                        IDENT@553..558 "chars"339                  R_PAREN@558..559 ")"340            WHITESPACE@559..564 "\n    "341            ELSE_KW@564..568 "else"342            WHITESPACE@568..575 "\n      "343            FALSE_EXPR@575..578344              EXPR_VAR@575..578345                NAME@575..578346                  IDENT@575..578 "str"347      COMMA@578..579 ","348      WHITESPACE@579..583 "\n\n  "349      MEMBER_FIELD_METHOD@583..663350        FIELD_NAME_FIXED@583..593351          NAME@583..593352            IDENT@583..593 "stripChars"353        PARAMS_DESC@593..605354          L_PAREN@593..594 "("355          PARAM@594..597356            DESTRUCT_FULL@594..597357              NAME@594..597358                IDENT@594..597 "str"359          COMMA@597..598 ","360          WHITESPACE@598..599 " "361          PARAM@599..604362            DESTRUCT_FULL@599..604363              NAME@599..604364                IDENT@599..604 "chars"365          R_PAREN@604..605 ")"366        COLONCOLON@605..607 "::"367        WHITESPACE@607..612 "\n    "368        EXPR_APPLY@612..663369          EXPR_INDEX@612..627370            EXPR_VAR@612..615371              NAME@612..615372                IDENT@612..615 "std"373            DOT@615..616 "."374            NAME@616..627375              IDENT@616..627 "lstripChars"376          ARGS_DESC@627..663377            L_PAREN@627..628 "("378            ARG@628..655379              EXPR_APPLY@628..655380                EXPR_INDEX@628..643381                  EXPR_VAR@628..631382                    NAME@628..631383                      IDENT@628..631 "std"384                  DOT@631..632 "."385                  NAME@632..643386                    IDENT@632..643 "rstripChars"387                ARGS_DESC@643..655388                  L_PAREN@643..644 "("389                  ARG@644..647390                    EXPR_VAR@644..647391                      NAME@644..647392                        IDENT@644..647 "str"393                  COMMA@647..648 ","394                  WHITESPACE@648..649 " "395                  ARG@649..654396                    EXPR_VAR@649..654397                      NAME@649..654398                        IDENT@649..654 "chars"399                  R_PAREN@654..655 ")"400            COMMA@655..656 ","401            WHITESPACE@656..657 " "402            ARG@657..662403              EXPR_VAR@657..662404                NAME@657..662405                  IDENT@657..662 "chars"406            R_PAREN@662..663 ")"407      COMMA@663..664 ","408      WHITESPACE@664..668 "\n\n  "409      MEMBER_FIELD_METHOD@668..741410        FIELD_NAME_FIXED@668..679411          NAME@668..679412            IDENT@668..679 "stringChars"413        PARAMS_DESC@679..684414          L_PAREN@679..680 "("415          PARAM@680..683416            DESTRUCT_FULL@680..683417              NAME@680..683418                IDENT@680..683 "str"419          R_PAREN@683..684 ")"420        COLONCOLON@684..686 "::"421        WHITESPACE@686..691 "\n    "422        EXPR_APPLY@691..741423          EXPR_INDEX@691..704424            EXPR_VAR@691..694425              NAME@691..694426                IDENT@691..694 "std"427            DOT@694..695 "."428            NAME@695..704429              IDENT@695..704 "makeArray"430          ARGS_DESC@704..741431            L_PAREN@704..705 "("432            ARG@705..720433              EXPR_APPLY@705..720434                EXPR_INDEX@705..715435                  EXPR_VAR@705..708436                    NAME@705..708437                      IDENT@705..708 "std"438                  DOT@708..709 "."439                  NAME@709..715440                    IDENT@709..715 "length"441                ARGS_DESC@715..720442                  L_PAREN@715..716 "("443                  ARG@716..719444                    EXPR_VAR@716..719445                      NAME@716..719446                        IDENT@716..719 "str"447                  R_PAREN@719..720 ")"448            COMMA@720..721 ","449            WHITESPACE@721..722 " "450            ARG@722..740451              EXPR_FUNCTION@722..740452                FUNCTION_KW@722..730 "function"453                PARAMS_DESC@730..733454                  L_PAREN@730..731 "("455                  PARAM@731..732456                    DESTRUCT_FULL@731..732457                      NAME@731..732458                        IDENT@731..732 "i"459                  R_PAREN@732..733 ")"460                WHITESPACE@733..734 " "461                EXPR_INDEX_EXPR@734..740462                  LHS_EXPR@734..737463                    EXPR_VAR@734..737464                      NAME@734..737465                        IDENT@734..737 "str"466                  L_BRACK@737..738 "["467                  EXPR_VAR@738..739468                    NAME@738..739469                      IDENT@738..739 "i"470                  R_BRACK@739..740 "]"471            R_PAREN@740..741 ")"472      COMMA@741..742 ","473      WHITESPACE@742..746 "\n\n  "474      MEMBER_FIELD_METHOD@746..1024475        FIELD_NAME_FIXED@746..757476          NAME@746..757477            IDENT@746..757 "splitLimitR"478        PARAMS_DESC@757..776479          L_PAREN@757..758 "("480          PARAM@758..761481            DESTRUCT_FULL@758..761482              NAME@758..761483                IDENT@758..761 "str"484          COMMA@761..762 ","485          WHITESPACE@762..763 " "486          PARAM@763..764487            DESTRUCT_FULL@763..764488              NAME@763..764489                IDENT@763..764 "c"490          COMMA@764..765 ","491          WHITESPACE@765..766 " "492          PARAM@766..775493            DESTRUCT_FULL@766..775494              NAME@766..775495                IDENT@766..775 "maxsplits"496          R_PAREN@775..776 ")"497        COLONCOLON@776..778 "::"498        WHITESPACE@778..783 "\n    "499        EXPR_IF_THEN_ELSE@783..1024500          IF_KW@783..785 "if"501          WHITESPACE@785..786 " "502          EXPR_BINARY@786..801503            LHS_EXPR@786..795504              EXPR_VAR@786..795505                NAME@786..795506                  IDENT@786..795 "maxsplits"507            WHITESPACE@795..796 " "508            EQ@796..798 "=="509            WHITESPACE@798..799 " "510            EXPR_UNARY@799..801511              MINUS@799..800 "-"512              EXPR_NUMBER@800..801513                FLOAT@800..801 "1"514          WHITESPACE@801..802 " "515          THEN_KW@802..806 "then"516          WHITESPACE@806..813 "\n      "517          TRUE_EXPR@813..839518            EXPR_APPLY@813..839519              EXPR_INDEX@813..827520                EXPR_VAR@813..816521                  NAME@813..816522                    IDENT@813..816 "std"523                DOT@816..817 "."524                NAME@817..827525                  IDENT@817..827 "splitLimit"526              ARGS_DESC@827..839527                L_PAREN@827..828 "("528                ARG@828..831529                  EXPR_VAR@828..831530                    NAME@828..831531                      IDENT@828..831 "str"532                COMMA@831..832 ","533                WHITESPACE@832..833 " "534                ARG@833..834535                  EXPR_VAR@833..834536                    NAME@833..834537                      IDENT@833..834 "c"538                COMMA@834..835 ","539                WHITESPACE@835..836 " "540                ARG@836..838541                  EXPR_UNARY@836..838542                    MINUS@836..837 "-"543                    EXPR_NUMBER@837..838544                      FLOAT@837..838 "1"545                R_PAREN@838..839 ")"546          WHITESPACE@839..844 "\n    "547          ELSE_KW@844..848 "else"548          WHITESPACE@848..855 "\n      "549          FALSE_EXPR@855..1024550            EXPR_LOCAL@855..1024551              LOCAL_KW@855..860 "local"552              WHITESPACE@860..861 " "553              BIND_FUNCTION@861..922554                NAME@861..867555                  IDENT@861..867 "revStr"556                PARAMS_DESC@867..872557                  L_PAREN@867..868 "("558                  PARAM@868..871559                    DESTRUCT_FULL@868..871560                      NAME@868..871561                        IDENT@868..871 "str"562                  R_PAREN@871..872 ")"563                WHITESPACE@872..873 " "564                ASSIGN@873..874 "="565                WHITESPACE@874..875 " "566                EXPR_APPLY@875..922567                  EXPR_INDEX@875..883568                    EXPR_VAR@875..878569                      NAME@875..878570                        IDENT@875..878 "std"571                    DOT@878..879 "."572                    NAME@879..883573                      IDENT@879..883 "join"574                  ARGS_DESC@883..922575                    L_PAREN@883..884 "("576                    ARG@884..886577                      EXPR_STRING@884..886578                        STRING_SINGLE@884..886 "''"579                    COMMA@886..887 ","580                    WHITESPACE@887..888 " "581                    ARG@888..921582                      EXPR_APPLY@888..921583                        EXPR_INDEX@888..899584                          EXPR_VAR@888..891585                            NAME@888..891586                              IDENT@888..891 "std"587                          DOT@891..892 "."588                          NAME@892..899589                            IDENT@892..899 "reverse"590                        ARGS_DESC@899..921591                          L_PAREN@899..900 "("592                          ARG@900..920593                            EXPR_APPLY@900..920594                              EXPR_INDEX@900..915595                                EXPR_VAR@900..903596                                  NAME@900..903597                                    IDENT@900..903 "std"598                                DOT@903..904 "."599                                NAME@904..915600                                  IDENT@904..915 "stringChars"601                              ARGS_DESC@915..920602                                L_PAREN@915..916 "("603                                ARG@916..919604                                  EXPR_VAR@916..919605                                    NAME@916..919606                                      IDENT@916..919 "str"607                                R_PAREN@919..920 ")"608                          R_PAREN@920..921 ")"609                    R_PAREN@921..922 ")"610              SEMI@922..923 ";"611              WHITESPACE@923..930 "\n      "612              EXPR_APPLY@930..1024613                EXPR_INDEX@930..937614                  EXPR_VAR@930..933615                    NAME@930..933616                      IDENT@930..933 "std"617                  DOT@933..934 "."618                  NAME@934..937619                    IDENT@934..937 "map"620                ARGS_DESC@937..1024621                  L_PAREN@937..938 "("622                  ARG@938..959623                    EXPR_FUNCTION@938..959624                      FUNCTION_KW@938..946 "function"625                      PARAMS_DESC@946..949626                        L_PAREN@946..947 "("627                        PARAM@947..948628                          DESTRUCT_FULL@947..948629                            NAME@947..948630                              IDENT@947..948 "e"631                        R_PAREN@948..949 ")"632                      WHITESPACE@949..950 " "633                      EXPR_APPLY@950..959634                        EXPR_VAR@950..956635                          NAME@950..956636                            IDENT@950..956 "revStr"637                        ARGS_DESC@956..959638                          L_PAREN@956..957 "("639                          ARG@957..958640                            EXPR_VAR@957..958641                              NAME@957..958642                                IDENT@957..958 "e"643                          R_PAREN@958..959 ")"644                  COMMA@959..960 ","645                  WHITESPACE@960..961 " "646                  ARG@961..1023647                    EXPR_APPLY@961..1023648                      EXPR_INDEX@961..972649                        EXPR_VAR@961..964650                          NAME@961..964651                            IDENT@961..964 "std"652                        DOT@964..965 "."653                        NAME@965..972654                          IDENT@965..972 "reverse"655                      ARGS_DESC@972..1023656                        L_PAREN@972..973 "("657                        ARG@973..1022658                          EXPR_APPLY@973..1022659                            EXPR_INDEX@973..987660                              EXPR_VAR@973..976661                                NAME@973..976662                                  IDENT@973..976 "std"663                              DOT@976..977 "."664                              NAME@977..987665                                IDENT@977..987 "splitLimit"666                            ARGS_DESC@987..1022667                              L_PAREN@987..988 "("668                              ARG@988..999669                                EXPR_APPLY@988..999670                                  EXPR_VAR@988..994671                                    NAME@988..994672                                      IDENT@988..994 "revStr"673                                  ARGS_DESC@994..999674                                    L_PAREN@994..995 "("675                                    ARG@995..998676                                      EXPR_VAR@995..998677                                        NAME@995..998678                                          IDENT@995..998 "str"679                                    R_PAREN@998..999 ")"680                              COMMA@999..1000 ","681                              WHITESPACE@1000..1001 " "682                              ARG@1001..1010683                                EXPR_APPLY@1001..1010684                                  EXPR_VAR@1001..1007685                                    NAME@1001..1007686                                      IDENT@1001..1007 "revStr"687                                  ARGS_DESC@1007..1010688                                    L_PAREN@1007..1008 "("689                                    ARG@1008..1009690                                      EXPR_VAR@1008..1009691                                        NAME@1008..1009692                                          IDENT@1008..1009 "c"693                                    R_PAREN@1009..1010 ")"694                              COMMA@1010..1011 ","695                              WHITESPACE@1011..1012 " "696                              ARG@1012..1021697                                EXPR_VAR@1012..1021698                                  NAME@1012..1021699                                    IDENT@1012..1021 "maxsplits"700                              R_PAREN@1021..1022 ")"701                        R_PAREN@1022..1023 ")"702                  R_PAREN@1023..1024 ")"703      COMMA@1024..1025 ","704      WHITESPACE@1025..1029 "\n\n  "705      MEMBER_FIELD_METHOD@1029..1071706        FIELD_NAME_FIXED@1029..1034707          NAME@1029..1034708            IDENT@1029..1034 "split"709        PARAMS_DESC@1034..1042710          L_PAREN@1034..1035 "("711          PARAM@1035..1038712            DESTRUCT_FULL@1035..1038713              NAME@1035..1038714                IDENT@1035..1038 "str"715          COMMA@1038..1039 ","716          WHITESPACE@1039..1040 " "717          PARAM@1040..1041718            DESTRUCT_FULL@1040..1041719              NAME@1040..1041720                IDENT@1040..1041 "c"721          R_PAREN@1041..1042 ")"722        COLONCOLON@1042..1044 "::"723        WHITESPACE@1044..1045 " "724        EXPR_APPLY@1045..1071725          EXPR_INDEX@1045..1059726            EXPR_VAR@1045..1048727              NAME@1045..1048728                IDENT@1045..1048 "std"729            DOT@1048..1049 "."730            NAME@1049..1059731              IDENT@1049..1059 "splitLimit"732          ARGS_DESC@1059..1071733            L_PAREN@1059..1060 "("734            ARG@1060..1063735              EXPR_VAR@1060..1063736                NAME@1060..1063737                  IDENT@1060..1063 "str"738            COMMA@1063..1064 ","739            WHITESPACE@1064..1065 " "740            ARG@1065..1066741              EXPR_VAR@1065..1066742                NAME@1065..1066743                  IDENT@1065..1066 "c"744            COMMA@1066..1067 ","745            WHITESPACE@1067..1068 " "746            ARG@1068..1070747              EXPR_UNARY@1068..1070748                MINUS@1068..1069 "-"749                EXPR_NUMBER@1069..1070750                  FLOAT@1069..1070 "1"751            R_PAREN@1070..1071 ")"752      COMMA@1071..1072 ","753      WHITESPACE@1072..1076 "\n\n  "754      MEMBER_FIELD_METHOD@1076..1434755        FIELD_NAME_FIXED@1076..1088756          NAME@1076..1088757            IDENT@1076..1088 "mapWithIndex"758        PARAMS_DESC@1088..1099759          L_PAREN@1088..1089 "("760          PARAM@1089..1093761            DESTRUCT_FULL@1089..1093762              NAME@1089..1093763                IDENT@1089..1093 "func"764          COMMA@1093..1094 ","765          WHITESPACE@1094..1095 " "766          PARAM@1095..1098767            DESTRUCT_FULL@1095..1098768              NAME@1095..1098769                IDENT@1095..1098 "arr"770          R_PAREN@1098..1099 ")"771        COLONCOLON@1099..1101 "::"772        WHITESPACE@1101..1106 "\n    "773        EXPR_IF_THEN_ELSE@1106..1434774          IF_KW@1106..1108 "if"775          WHITESPACE@1108..1109 " "776          EXPR_UNARY@1109..1130777            NOT@1109..1110 "!"778            EXPR_APPLY@1110..1130779              EXPR_INDEX@1110..1124780                EXPR_VAR@1110..1113781                  NAME@1110..1113782                    IDENT@1110..1113 "std"783                DOT@1113..1114 "."784                NAME@1114..1124785                  IDENT@1114..1124 "isFunction"786              ARGS_DESC@1124..1130787                L_PAREN@1124..1125 "("788                ARG@1125..1129789                  EXPR_VAR@1125..1129790                    NAME@1125..1129791                      IDENT@1125..1129 "func"792                R_PAREN@1129..1130 ")"793          WHITESPACE@1130..1131 " "794          THEN_KW@1131..1135 "then"795          WHITESPACE@1135..1142 "\n      "796          TRUE_EXPR@1142..1220797            EXPR_ERROR@1142..1220798              ERROR_KW@1142..1147 "error"799              WHITESPACE@1147..1148 " "800              EXPR_PARENED@1148..1220801                L_PAREN@1148..1149 "("802                EXPR_BINARY@1149..1219803                  LHS_EXPR@1149..1202804                    EXPR_STRING@1149..1202805                      STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..."806                  WHITESPACE@1202..1203 " "807                  PLUS@1203..1204 "+"808                  WHITESPACE@1204..1205 " "809                  EXPR_APPLY@1205..1219810                    EXPR_INDEX@1205..1213811                      EXPR_VAR@1205..1208812                        NAME@1205..1208813                          IDENT@1205..1208 "std"814                      DOT@1208..1209 "."815                      NAME@1209..1213816                        IDENT@1209..1213 "type"817                    ARGS_DESC@1213..1219818                      L_PAREN@1213..1214 "("819                      ARG@1214..1218820                        EXPR_VAR@1214..1218821                          NAME@1214..1218822                            IDENT@1214..1218 "func"823                      R_PAREN@1218..1219 ")"824                R_PAREN@1219..1220 ")"825          WHITESPACE@1220..1225 "\n    "826          ELSE_KW@1225..1229 "else"827          WHITESPACE@1229..1230 " "828          FALSE_EXPR@1230..1434829            EXPR_IF_THEN_ELSE@1230..1434830              IF_KW@1230..1232 "if"831              WHITESPACE@1232..1233 " "832              EXPR_BINARY@1233..1272833                LHS_EXPR@1233..1250834                  EXPR_UNARY@1233..1250835                    NOT@1233..1234 "!"836                    EXPR_APPLY@1234..1250837                      EXPR_INDEX@1234..1245838                        EXPR_VAR@1234..1237839                          NAME@1234..1237840                            IDENT@1234..1237 "std"841                        DOT@1237..1238 "."842                        NAME@1238..1245843                          IDENT@1238..1245 "isArray"844                      ARGS_DESC@1245..1250845                        L_PAREN@1245..1246 "("846                        ARG@1246..1249847                          EXPR_VAR@1246..1249848                            NAME@1246..1249849                              IDENT@1246..1249 "arr"850                        R_PAREN@1249..1250 ")"851                WHITESPACE@1250..1251 " "852                AND@1251..1253 "&&"853                WHITESPACE@1253..1254 " "854                EXPR_UNARY@1254..1272855                  NOT@1254..1255 "!"856                  EXPR_APPLY@1255..1272857                    EXPR_INDEX@1255..1267858                      EXPR_VAR@1255..1258859                        NAME@1255..1258860                          IDENT@1255..1258 "std"861                      DOT@1258..1259 "."862                      NAME@1259..1267863                        IDENT@1259..1267 "isString"864                    ARGS_DESC@1267..1272865                      L_PAREN@1267..1268 "("866                      ARG@1268..1271867                        EXPR_VAR@1268..1271868                          NAME@1268..1271869                            IDENT@1268..1271 "arr"870                      R_PAREN@1271..1272 ")"871              WHITESPACE@1272..1273 " "872              THEN_KW@1273..1277 "then"873              WHITESPACE@1277..1284 "\n      "874              TRUE_EXPR@1284..1359875                EXPR_ERROR@1284..1359876                  ERROR_KW@1284..1289 "error"877                  WHITESPACE@1289..1290 " "878                  EXPR_PARENED@1290..1359879                    L_PAREN@1290..1291 "("880                    EXPR_BINARY@1291..1358881                      LHS_EXPR@1291..1342882                        EXPR_STRING@1291..1342883                          STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..."884                      WHITESPACE@1342..1343 " "885                      PLUS@1343..1344 "+"886                      WHITESPACE@1344..1345 " "887                      EXPR_APPLY@1345..1358888                        EXPR_INDEX@1345..1353889                          EXPR_VAR@1345..1348890                            NAME@1345..1348891                              IDENT@1345..1348 "std"892                          DOT@1348..1349 "."893                          NAME@1349..1353894                            IDENT@1349..1353 "type"895                        ARGS_DESC@1353..1358896                          L_PAREN@1353..1354 "("897                          ARG@1354..1357898                            EXPR_VAR@1354..1357899                              NAME@1354..1357900                                IDENT@1354..1357 "arr"901                          R_PAREN@1357..1358 ")"902                    R_PAREN@1358..1359 ")"903              WHITESPACE@1359..1364 "\n    "904              ELSE_KW@1364..1368 "else"905              WHITESPACE@1368..1375 "\n      "906              FALSE_EXPR@1375..1434907                EXPR_APPLY@1375..1434908                  EXPR_INDEX@1375..1388909                    EXPR_VAR@1375..1378910                      NAME@1375..1378911                        IDENT@1375..1378 "std"912                    DOT@1378..1379 "."913                    NAME@1379..1388914                      IDENT@1379..1388 "makeArray"915                  ARGS_DESC@1388..1434916                    L_PAREN@1388..1389 "("917                    ARG@1389..1404918                      EXPR_APPLY@1389..1404919                        EXPR_INDEX@1389..1399920                          EXPR_VAR@1389..1392921                            NAME@1389..1392922                              IDENT@1389..1392 "std"923                          DOT@1392..1393 "."924                          NAME@1393..1399925                            IDENT@1393..1399 "length"926                        ARGS_DESC@1399..1404927                          L_PAREN@1399..1400 "("928                          ARG@1400..1403929                            EXPR_VAR@1400..1403930                              NAME@1400..1403931                                IDENT@1400..1403 "arr"932                          R_PAREN@1403..1404 ")"933                    COMMA@1404..1405 ","934                    WHITESPACE@1405..1406 " "935                    ARG@1406..1433936                      EXPR_FUNCTION@1406..1433937                        FUNCTION_KW@1406..1414 "function"938                        PARAMS_DESC@1414..1417939                          L_PAREN@1414..1415 "("940                          PARAM@1415..1416941                            DESTRUCT_FULL@1415..1416942                              NAME@1415..1416943                                IDENT@1415..1416 "i"944                          R_PAREN@1416..1417 ")"945                        WHITESPACE@1417..1418 " "946                        EXPR_APPLY@1418..1433947                          EXPR_VAR@1418..1422948                            NAME@1418..1422949                              IDENT@1418..1422 "func"950                          ARGS_DESC@1422..1433951                            L_PAREN@1422..1423 "("952                            ARG@1423..1424953                              EXPR_VAR@1423..1424954                                NAME@1423..1424955                                  IDENT@1423..1424 "i"956                            COMMA@1424..1425 ","957                            WHITESPACE@1425..1426 " "958                            ARG@1426..1432959                              EXPR_INDEX_EXPR@1426..1432960                                LHS_EXPR@1426..1429961                                  EXPR_VAR@1426..1429962                                    NAME@1426..1429963                                      IDENT@1426..1429 "arr"964                                L_BRACK@1429..1430 "["965                                EXPR_VAR@1430..1431966                                  NAME@1430..1431967                                    IDENT@1430..1431 "i"968                                R_BRACK@1431..1432 "]"969                            R_PAREN@1432..1433 ")"970                    R_PAREN@1433..1434 ")"971      COMMA@1434..1435 ","972      WHITESPACE@1435..1439 "\n\n  "973      MEMBER_FIELD_METHOD@1439..1767974        FIELD_NAME_FIXED@1439..1449975          NAME@1439..1449976            IDENT@1439..1449 "mapWithKey"977        PARAMS_DESC@1449..1460978          L_PAREN@1449..1450 "("979          PARAM@1450..1454980            DESTRUCT_FULL@1450..1454981              NAME@1450..1454982                IDENT@1450..1454 "func"983          COMMA@1454..1455 ","984          WHITESPACE@1455..1456 " "985          PARAM@1456..1459986            DESTRUCT_FULL@1456..1459987              NAME@1456..1459988                IDENT@1456..1459 "obj"989          R_PAREN@1459..1460 ")"990        COLONCOLON@1460..1462 "::"991        WHITESPACE@1462..1467 "\n    "992        EXPR_IF_THEN_ELSE@1467..1767993          IF_KW@1467..1469 "if"994          WHITESPACE@1469..1470 " "995          EXPR_UNARY@1470..1491996            NOT@1470..1471 "!"997            EXPR_APPLY@1471..1491998              EXPR_INDEX@1471..1485999                EXPR_VAR@1471..14741000                  NAME@1471..14741001                    IDENT@1471..1474 "std"1002                DOT@1474..1475 "."1003                NAME@1475..14851004                  IDENT@1475..1485 "isFunction"1005              ARGS_DESC@1485..14911006                L_PAREN@1485..1486 "("1007                ARG@1486..14901008                  EXPR_VAR@1486..14901009                    NAME@1486..14901010                      IDENT@1486..1490 "func"1011                R_PAREN@1490..1491 ")"1012          WHITESPACE@1491..1492 " "1013          THEN_KW@1492..1496 "then"1014          WHITESPACE@1496..1503 "\n      "1015          TRUE_EXPR@1503..15791016            EXPR_ERROR@1503..15791017              ERROR_KW@1503..1508 "error"1018              WHITESPACE@1508..1509 " "1019              EXPR_PARENED@1509..15791020                L_PAREN@1509..1510 "("1021                EXPR_BINARY@1510..15781022                  LHS_EXPR@1510..15611023                    EXPR_STRING@1510..15611024                      STRING_SINGLE@1510..1561 "'std.mapWithKey first ..."1025                  WHITESPACE@1561..1562 " "1026                  PLUS@1562..1563 "+"1027                  WHITESPACE@1563..1564 " "1028                  EXPR_APPLY@1564..15781029                    EXPR_INDEX@1564..15721030                      EXPR_VAR@1564..15671031                        NAME@1564..15671032                          IDENT@1564..1567 "std"1033                      DOT@1567..1568 "."1034                      NAME@1568..15721035                        IDENT@1568..1572 "type"1036                    ARGS_DESC@1572..15781037                      L_PAREN@1572..1573 "("1038                      ARG@1573..15771039                        EXPR_VAR@1573..15771040                          NAME@1573..15771041                            IDENT@1573..1577 "func"1042                      R_PAREN@1577..1578 ")"1043                R_PAREN@1578..1579 ")"1044          WHITESPACE@1579..1584 "\n    "1045          ELSE_KW@1584..1588 "else"1046          WHITESPACE@1588..1589 " "1047          FALSE_EXPR@1589..17671048            EXPR_IF_THEN_ELSE@1589..17671049              IF_KW@1589..1591 "if"1050              WHITESPACE@1591..1592 " "1051              EXPR_UNARY@1592..16101052                NOT@1592..1593 "!"1053                EXPR_APPLY@1593..16101054                  EXPR_INDEX@1593..16051055                    EXPR_VAR@1593..15961056                      NAME@1593..15961057                        IDENT@1593..1596 "std"1058                    DOT@1596..1597 "."1059                    NAME@1597..16051060                      IDENT@1597..1605 "isObject"1061                  ARGS_DESC@1605..16101062                    L_PAREN@1605..1606 "("1063                    ARG@1606..16091064                      EXPR_VAR@1606..16091065                        NAME@1606..16091066                          IDENT@1606..1609 "obj"1067                    R_PAREN@1609..1610 ")"1068              WHITESPACE@1610..1611 " "1069              THEN_KW@1611..1615 "then"1070              WHITESPACE@1615..1622 "\n      "1071              TRUE_EXPR@1622..16961072                EXPR_ERROR@1622..16961073                  ERROR_KW@1622..1627 "error"1074                  WHITESPACE@1627..1628 " "1075                  EXPR_PARENED@1628..16961076                    L_PAREN@1628..1629 "("1077                    EXPR_BINARY@1629..16951078                      LHS_EXPR@1629..16791079                        EXPR_STRING@1629..16791080                          STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..."1081                      WHITESPACE@1679..1680 " "1082                      PLUS@1680..1681 "+"1083                      WHITESPACE@1681..1682 " "1084                      EXPR_APPLY@1682..16951085                        EXPR_INDEX@1682..16901086                          EXPR_VAR@1682..16851087                            NAME@1682..16851088                              IDENT@1682..1685 "std"1089                          DOT@1685..1686 "."1090                          NAME@1686..16901091                            IDENT@1686..1690 "type"1092                        ARGS_DESC@1690..16951093                          L_PAREN@1690..1691 "("1094                          ARG@1691..16941095                            EXPR_VAR@1691..16941096                              NAME@1691..16941097                                IDENT@1691..1694 "obj"1098                          R_PAREN@1694..1695 ")"1099                    R_PAREN@1695..1696 ")"1100              WHITESPACE@1696..1701 "\n    "1101              ELSE_KW@1701..1705 "else"1102              WHITESPACE@1705..1712 "\n      "1103              FALSE_EXPR@1712..17671104                EXPR_OBJECT@1712..17671105                  OBJ_BODY_COMP@1712..17671106                    L_BRACE@1712..1713 "{"1107                    WHITESPACE@1713..1714 " "1108                    MEMBER_FIELD_NORMAL@1714..17341109                      FIELD_NAME_DYNAMIC@1714..17171110                        L_BRACK@1714..1715 "["1111                        EXPR_VAR@1715..17161112                          NAME@1715..17161113                            IDENT@1715..1716 "k"1114                        R_BRACK@1716..1717 "]"1115                      COLON@1717..1718 ":"1116                      WHITESPACE@1718..1719 " "1117                      EXPR_APPLY@1719..17341118                        EXPR_VAR@1719..17231119                          NAME@1719..17231120                            IDENT@1719..1723 "func"1121                        ARGS_DESC@1723..17341122                          L_PAREN@1723..1724 "("1123                          ARG@1724..17251124                            EXPR_VAR@1724..17251125                              NAME@1724..17251126                                IDENT@1724..1725 "k"1127                          COMMA@1725..1726 ","1128                          WHITESPACE@1726..1727 " "1129                          ARG@1727..17331130                            EXPR_INDEX_EXPR@1727..17331131                              LHS_EXPR@1727..17301132                                EXPR_VAR@1727..17301133                                  NAME@1727..17301134                                    IDENT@1727..1730 "obj"1135                              L_BRACK@1730..1731 "["1136                              EXPR_VAR@1731..17321137                                NAME@1731..17321138                                  IDENT@1731..1732 "k"1139                              R_BRACK@1732..1733 "]"1140                          R_PAREN@1733..1734 ")"1141                    WHITESPACE@1734..1735 " "1142                    FOR_SPEC@1735..17651143                      FOR_KW@1735..1738 "for"1144                      WHITESPACE@1738..1739 " "1145                      NAME@1739..17401146                        IDENT@1739..1740 "k"1147                      WHITESPACE@1740..1741 " "1148                      IN_KW@1741..1743 "in"1149                      WHITESPACE@1743..1744 " "1150                      EXPR_APPLY@1744..17651151                        EXPR_INDEX@1744..17601152                          EXPR_VAR@1744..17471153                            NAME@1744..17471154                              IDENT@1744..1747 "std"1155                          DOT@1747..1748 "."1156                          NAME@1748..17601157                            IDENT@1748..1760 "objectFields"1158                        ARGS_DESC@1760..17651159                          L_PAREN@1760..1761 "("1160                          ARG@1761..17641161                            EXPR_VAR@1761..17641162                              NAME@1761..17641163                                IDENT@1761..1764 "obj"1164                          R_PAREN@1764..1765 ")"1165                    WHITESPACE@1765..1766 " "1166                    R_BRACE@1766..1767 "}"1167      COMMA@1767..1768 ","1168      WHITESPACE@1768..1772 "\n\n  "1169      MEMBER_FIELD_METHOD@1772..18151170        FIELD_NAME_FIXED@1772..17771171          NAME@1772..17771172            IDENT@1772..1777 "lines"1173        PARAMS_DESC@1777..17821174          L_PAREN@1777..1778 "("1175          PARAM@1778..17811176            DESTRUCT_FULL@1778..17811177              NAME@1778..17811178                IDENT@1778..1781 "arr"1179          R_PAREN@1781..1782 ")"1180        COLONCOLON@1782..1784 "::"1181        WHITESPACE@1784..1789 "\n    "1182        EXPR_APPLY@1789..18151183          EXPR_INDEX@1789..17971184            EXPR_VAR@1789..17921185              NAME@1789..17921186                IDENT@1789..1792 "std"1187            DOT@1792..1793 "."1188            NAME@1793..17971189              IDENT@1793..1797 "join"1190          ARGS_DESC@1797..18151191            L_PAREN@1797..1798 "("1192            ARG@1798..18021193              EXPR_STRING@1798..18021194                STRING_SINGLE@1798..1802 "'\\n'"1195            COMMA@1802..1803 ","1196            WHITESPACE@1803..1804 " "1197            ARG@1804..18141198              EXPR_BINARY@1804..18141199                LHS_EXPR@1804..18071200                  EXPR_VAR@1804..18071201                    NAME@1804..18071202                      IDENT@1804..1807 "arr"1203                WHITESPACE@1807..1808 " "1204                PLUS@1808..1809 "+"1205                WHITESPACE@1809..1810 " "1206                EXPR_ARRAY@1810..18141207                  L_BRACK@1810..1811 "["1208                  EXPR_STRING@1811..18131209                    STRING_SINGLE@1811..1813 "''"1210                  R_BRACK@1813..1814 "]"1211            R_PAREN@1814..1815 ")"1212      COMMA@1815..1816 ","1213      WHITESPACE@1816..1820 "\n\n  "1214      MEMBER_FIELD_METHOD@1820..20321215        FIELD_NAME_FIXED@1820..18281216          NAME@1820..18281217            IDENT@1820..1828 "deepJoin"1218        PARAMS_DESC@1828..18331219          L_PAREN@1828..1829 "("1220          PARAM@1829..18321221            DESTRUCT_FULL@1829..18321222              NAME@1829..18321223                IDENT@1829..1832 "arr"1224          R_PAREN@1832..1833 ")"1225        COLONCOLON@1833..1835 "::"1226        WHITESPACE@1835..1840 "\n    "1227        EXPR_IF_THEN_ELSE@1840..20321228          IF_KW@1840..1842 "if"1229          WHITESPACE@1842..1843 " "1230          EXPR_APPLY@1843..18601231            EXPR_INDEX@1843..18551232              EXPR_VAR@1843..18461233                NAME@1843..18461234                  IDENT@1843..1846 "std"1235              DOT@1846..1847 "."1236              NAME@1847..18551237                IDENT@1847..1855 "isString"1238            ARGS_DESC@1855..18601239              L_PAREN@1855..1856 "("1240              ARG@1856..18591241                EXPR_VAR@1856..18591242                  NAME@1856..18591243                    IDENT@1856..1859 "arr"1244              R_PAREN@1859..1860 ")"1245          WHITESPACE@1860..1861 " "1246          THEN_KW@1861..1865 "then"1247          WHITESPACE@1865..1872 "\n      "1248          TRUE_EXPR@1872..18751249            EXPR_VAR@1872..18751250              NAME@1872..18751251                IDENT@1872..1875 "arr"1252          WHITESPACE@1875..1880 "\n    "1253          ELSE_KW@1880..1884 "else"1254          WHITESPACE@1884..1885 " "1255          FALSE_EXPR@1885..20321256            EXPR_IF_THEN_ELSE@1885..20321257              IF_KW@1885..1887 "if"1258              WHITESPACE@1887..1888 " "1259              EXPR_APPLY@1888..19041260                EXPR_INDEX@1888..18991261                  EXPR_VAR@1888..18911262                    NAME@1888..18911263                      IDENT@1888..1891 "std"1264                  DOT@1891..1892 "."1265                  NAME@1892..18991266                    IDENT@1892..1899 "isArray"1267                ARGS_DESC@1899..19041268                  L_PAREN@1899..1900 "("1269                  ARG@1900..19031270                    EXPR_VAR@1900..19031271                      NAME@1900..19031272                        IDENT@1900..1903 "arr"1273                  R_PAREN@1903..1904 ")"1274              WHITESPACE@1904..1905 " "1275              THEN_KW@1905..1909 "then"1276              WHITESPACE@1909..1916 "\n      "1277              TRUE_EXPR@1916..19601278                EXPR_APPLY@1916..19601279                  EXPR_INDEX@1916..19241280                    EXPR_VAR@1916..19191281                      NAME@1916..19191282                        IDENT@1916..1919 "std"1283                    DOT@1919..1920 "."1284                    NAME@1920..19241285                      IDENT@1920..1924 "join"1286                  ARGS_DESC@1924..19601287                    L_PAREN@1924..1925 "("1288                    ARG@1925..19271289                      EXPR_STRING@1925..19271290                        STRING_SINGLE@1925..1927 "''"1291                    COMMA@1927..1928 ","1292                    WHITESPACE@1928..1929 " "1293                    ARG@1929..19591294                      EXPR_ARRAY_COMP@1929..19591295                        L_BRACK@1929..1930 "["1296                        EXPR_APPLY@1930..19451297                          EXPR_INDEX@1930..19421298                            EXPR_VAR@1930..19331299                              NAME@1930..19331300                                IDENT@1930..1933 "std"1301                            DOT@1933..1934 "."1302                            NAME@1934..19421303                              IDENT@1934..1942 "deepJoin"1304                          ARGS_DESC@1942..19451305                            L_PAREN@1942..1943 "("1306                            ARG@1943..19441307                              EXPR_VAR@1943..19441308                                NAME@1943..19441309                                  IDENT@1943..1944 "x"1310                            R_PAREN@1944..1945 ")"1311                        WHITESPACE@1945..1946 " "1312                        FOR_SPEC@1946..19581313                          FOR_KW@1946..1949 "for"1314                          WHITESPACE@1949..1950 " "1315                          NAME@1950..19511316                            IDENT@1950..1951 "x"1317                          WHITESPACE@1951..1952 " "1318                          IN_KW@1952..1954 "in"1319                          WHITESPACE@1954..1955 " "1320                          EXPR_VAR@1955..19581321                            NAME@1955..19581322                              IDENT@1955..1958 "arr"1323                        R_BRACK@1958..1959 "]"1324                    R_PAREN@1959..1960 ")"1325              WHITESPACE@1960..1965 "\n    "1326              ELSE_KW@1965..1969 "else"1327              WHITESPACE@1969..1976 "\n      "1328              FALSE_EXPR@1976..20321329                EXPR_ERROR@1976..20321330                  ERROR_KW@1976..1981 "error"1331                  WHITESPACE@1981..1982 " "1332                  EXPR_BINARY@1982..20321333                    LHS_EXPR@1982..20161334                      EXPR_STRING@1982..20161335                        STRING_SINGLE@1982..2016 "'Expected string or a ..."1336                    WHITESPACE@2016..2017 " "1337                    MODULO@2017..2018 "%"1338                    WHITESPACE@2018..2019 " "1339                    EXPR_APPLY@2019..20321340                      EXPR_INDEX@2019..20271341                        EXPR_VAR@2019..20221342                          NAME@2019..20221343                            IDENT@2019..2022 "std"1344                        DOT@2022..2023 "."1345                        NAME@2023..20271346                          IDENT@2023..2027 "type"1347                      ARGS_DESC@2027..20321348                        L_PAREN@2027..2028 "("1349                        ARG@2028..20311350                          EXPR_VAR@2028..20311351                            NAME@2028..20311352                              IDENT@2028..2031 "arr"1353                        R_PAREN@2031..2032 ")"1354      COMMA@2032..2033 ","1355      WHITESPACE@2033..2037 "\n\n  "1356      MEMBER_FIELD_METHOD@2037..25121357        FIELD_NAME_FIXED@2037..20461358          NAME@2037..20461359            IDENT@2037..2046 "filterMap"1360        PARAMS_DESC@2046..20741361          L_PAREN@2046..2047 "("1362          PARAM@2047..20581363            DESTRUCT_FULL@2047..20581364              NAME@2047..20581365                IDENT@2047..2058 "filter_func"1366          COMMA@2058..2059 ","1367          WHITESPACE@2059..2060 " "1368          PARAM@2060..20681369            DESTRUCT_FULL@2060..20681370              NAME@2060..20681371                IDENT@2060..2068 "map_func"1372          COMMA@2068..2069 ","1373          WHITESPACE@2069..2070 " "1374          PARAM@2070..20731375            DESTRUCT_FULL@2070..20731376              NAME@2070..20731377                IDENT@2070..2073 "arr"1378          R_PAREN@2073..2074 ")"1379        COLONCOLON@2074..2076 "::"1380        WHITESPACE@2076..2081 "\n    "1381        EXPR_IF_THEN_ELSE@2081..25121382          IF_KW@2081..2083 "if"1383          WHITESPACE@2083..2084 " "1384          EXPR_UNARY@2084..21121385            NOT@2084..2085 "!"1386            EXPR_APPLY@2085..21121387              EXPR_INDEX@2085..20991388                EXPR_VAR@2085..20881389                  NAME@2085..20881390                    IDENT@2085..2088 "std"1391                DOT@2088..2089 "."1392                NAME@2089..20991393                  IDENT@2089..2099 "isFunction"1394              ARGS_DESC@2099..21121395                L_PAREN@2099..2100 "("1396                ARG@2100..21111397                  EXPR_VAR@2100..21111398                    NAME@2100..21111399                      IDENT@2100..2111 "filter_func"1400                R_PAREN@2111..2112 ")"1401          WHITESPACE@2112..2113 " "1402          THEN_KW@2113..2117 "then"1403          WHITESPACE@2117..2124 "\n      "1404          TRUE_EXPR@2124..22061405            EXPR_ERROR@2124..22061406              ERROR_KW@2124..2129 "error"1407              WHITESPACE@2129..2130 " "1408              EXPR_PARENED@2130..22061409                L_PAREN@2130..2131 "("1410                EXPR_BINARY@2131..22051411                  LHS_EXPR@2131..21811412                    EXPR_STRING@2131..21811413                      STRING_SINGLE@2131..2181 "'std.filterMap first  ..."1414                  WHITESPACE@2181..2182 " "1415                  PLUS@2182..2183 "+"1416                  WHITESPACE@2183..2184 " "1417                  EXPR_APPLY@2184..22051418                    EXPR_INDEX@2184..21921419                      EXPR_VAR@2184..21871420                        NAME@2184..21871421                          IDENT@2184..2187 "std"1422                      DOT@2187..2188 "."1423                      NAME@2188..21921424                        IDENT@2188..2192 "type"1425                    ARGS_DESC@2192..22051426                      L_PAREN@2192..2193 "("1427                      ARG@2193..22041428                        EXPR_VAR@2193..22041429                          NAME@2193..22041430                            IDENT@2193..2204 "filter_func"1431                      R_PAREN@2204..2205 ")"1432                R_PAREN@2205..2206 ")"1433          WHITESPACE@2206..2211 "\n    "1434          ELSE_KW@2211..2215 "else"1435          WHITESPACE@2215..2216 " "1436          FALSE_EXPR@2216..25121437            EXPR_IF_THEN_ELSE@2216..25121438              IF_KW@2216..2218 "if"1439              WHITESPACE@2218..2219 " "1440              EXPR_UNARY@2219..22441441                NOT@2219..2220 "!"1442                EXPR_APPLY@2220..22441443                  EXPR_INDEX@2220..22341444                    EXPR_VAR@2220..22231445                      NAME@2220..22231446                        IDENT@2220..2223 "std"1447                    DOT@2223..2224 "."1448                    NAME@2224..22341449                      IDENT@2224..2234 "isFunction"1450                  ARGS_DESC@2234..22441451                    L_PAREN@2234..2235 "("1452                    ARG@2235..22431453                      EXPR_VAR@2235..22431454                        NAME@2235..22431455                          IDENT@2235..2243 "map_func"1456                    R_PAREN@2243..2244 ")"1457              WHITESPACE@2244..2245 " "1458              THEN_KW@2245..2249 "then"1459              WHITESPACE@2249..2256 "\n      "1460              TRUE_EXPR@2256..23361461                EXPR_ERROR@2256..23361462                  ERROR_KW@2256..2261 "error"1463                  WHITESPACE@2261..2262 " "1464                  EXPR_PARENED@2262..23361465                    L_PAREN@2262..2263 "("1466                    EXPR_BINARY@2263..23351467                      LHS_EXPR@2263..23141468                        EXPR_STRING@2263..23141469                          STRING_SINGLE@2263..2314 "'std.filterMap second ..."1470                      WHITESPACE@2314..2315 " "1471                      PLUS@2315..2316 "+"1472                      WHITESPACE@2316..2317 " "1473                      EXPR_APPLY@2317..23351474                        EXPR_INDEX@2317..23251475                          EXPR_VAR@2317..23201476                            NAME@2317..23201477                              IDENT@2317..2320 "std"1478                          DOT@2320..2321 "."1479                          NAME@2321..23251480                            IDENT@2321..2325 "type"1481                        ARGS_DESC@2325..23351482                          L_PAREN@2325..2326 "("1483                          ARG@2326..23341484                            EXPR_VAR@2326..23341485                              NAME@2326..23341486                                IDENT@2326..2334 "map_func"1487                          R_PAREN@2334..2335 ")"1488                    R_PAREN@2335..2336 ")"1489              WHITESPACE@2336..2341 "\n    "1490              ELSE_KW@2341..2345 "else"1491              WHITESPACE@2345..2346 " "1492              FALSE_EXPR@2346..25121493                EXPR_IF_THEN_ELSE@2346..25121494                  IF_KW@2346..2348 "if"1495                  WHITESPACE@2348..2349 " "1496                  EXPR_UNARY@2349..23661497                    NOT@2349..2350 "!"1498                    EXPR_APPLY@2350..23661499                      EXPR_INDEX@2350..23611500                        EXPR_VAR@2350..23531501                          NAME@2350..23531502                            IDENT@2350..2353 "std"1503                        DOT@2353..2354 "."1504                        NAME@2354..23611505                          IDENT@2354..2361 "isArray"1506                      ARGS_DESC@2361..23661507                        L_PAREN@2361..2362 "("1508                        ARG@2362..23651509                          EXPR_VAR@2362..23651510                            NAME@2362..23651511                              IDENT@2362..2365 "arr"1512                        R_PAREN@2365..2366 ")"1513                  WHITESPACE@2366..2367 " "1514                  THEN_KW@2367..2371 "then"1515                  WHITESPACE@2371..2378 "\n      "1516                  TRUE_EXPR@2378..24491517                    EXPR_ERROR@2378..24491518                      ERROR_KW@2378..2383 "error"1519                      WHITESPACE@2383..2384 " "1520                      EXPR_PARENED@2384..24491521                        L_PAREN@2384..2385 "("1522                        EXPR_BINARY@2385..24481523                          LHS_EXPR@2385..24321524                            EXPR_STRING@2385..24321525                              STRING_SINGLE@2385..2432 "'std.filterMap third  ..."1526                          WHITESPACE@2432..2433 " "1527                          PLUS@2433..2434 "+"1528                          WHITESPACE@2434..2435 " "1529                          EXPR_APPLY@2435..24481530                            EXPR_INDEX@2435..24431531                              EXPR_VAR@2435..24381532                                NAME@2435..24381533                                  IDENT@2435..2438 "std"1534                              DOT@2438..2439 "."1535                              NAME@2439..24431536                                IDENT@2439..2443 "type"1537                            ARGS_DESC@2443..24481538                              L_PAREN@2443..2444 "("1539                              ARG@2444..24471540                                EXPR_VAR@2444..24471541                                  NAME@2444..24471542                                    IDENT@2444..2447 "arr"1543                              R_PAREN@2447..2448 ")"1544                        R_PAREN@2448..2449 ")"1545                  WHITESPACE@2449..2454 "\n    "1546                  ELSE_KW@2454..2458 "else"1547                  WHITESPACE@2458..2465 "\n      "1548                  FALSE_EXPR@2465..25121549                    EXPR_APPLY@2465..25121550                      EXPR_INDEX@2465..24721551                        EXPR_VAR@2465..24681552                          NAME@2465..24681553                            IDENT@2465..2468 "std"1554                        DOT@2468..2469 "."1555                        NAME@2469..24721556                          IDENT@2469..2472 "map"1557                      ARGS_DESC@2472..25121558                        L_PAREN@2472..2473 "("1559                        ARG@2473..24811560                          EXPR_VAR@2473..24811561                            NAME@2473..24811562                              IDENT@2473..2481 "map_func"1563                        COMMA@2481..2482 ","1564                        WHITESPACE@2482..2483 " "1565                        ARG@2483..25111566                          EXPR_APPLY@2483..25111567                            EXPR_INDEX@2483..24931568                              EXPR_VAR@2483..24861569                                NAME@2483..24861570                                  IDENT@2483..2486 "std"1571                              DOT@2486..2487 "."1572                              NAME@2487..24931573                                IDENT@2487..2493 "filter"1574                            ARGS_DESC@2493..25111575                              L_PAREN@2493..2494 "("1576                              ARG@2494..25051577                                EXPR_VAR@2494..25051578                                  NAME@2494..25051579                                    IDENT@2494..2505 "filter_func"1580                              COMMA@2505..2506 ","1581                              WHITESPACE@2506..2507 " "1582                              ARG@2507..25101583                                EXPR_VAR@2507..25101584                                  NAME@2507..25101585                                    IDENT@2507..2510 "arr"1586                              R_PAREN@2510..2511 ")"1587                        R_PAREN@2511..2512 ")"1588      COMMA@2512..2513 ","1589      WHITESPACE@2513..2517 "\n\n  "1590      MEMBER_FIELD_METHOD@2517..26251591        FIELD_NAME_FIXED@2517..25281592          NAME@2517..25281593            IDENT@2517..2528 "assertEqual"1594        PARAMS_DESC@2528..25341595          L_PAREN@2528..2529 "("1596          PARAM@2529..25301597            DESTRUCT_FULL@2529..25301598              NAME@2529..25301599                IDENT@2529..2530 "a"1600          COMMA@2530..2531 ","1601          WHITESPACE@2531..2532 " "1602          PARAM@2532..25331603            DESTRUCT_FULL@2532..25331604              NAME@2532..25331605                IDENT@2532..2533 "b"1606          R_PAREN@2533..2534 ")"1607        COLONCOLON@2534..2536 "::"1608        WHITESPACE@2536..2541 "\n    "1609        EXPR_IF_THEN_ELSE@2541..26251610          IF_KW@2541..2543 "if"1611          WHITESPACE@2543..2544 " "1612          EXPR_BINARY@2544..25501613            LHS_EXPR@2544..25451614              EXPR_VAR@2544..25451615                NAME@2544..25451616                  IDENT@2544..2545 "a"1617            WHITESPACE@2545..2546 " "1618            EQ@2546..2548 "=="1619            WHITESPACE@2548..2549 " "1620            EXPR_VAR@2549..25501621              NAME@2549..25501622                IDENT@2549..2550 "b"1623          WHITESPACE@2550..2551 " "1624          THEN_KW@2551..2555 "then"1625          WHITESPACE@2555..2562 "\n      "1626          TRUE_EXPR@2562..25661627            EXPR_LITERAL@2562..25661628              TRUE_KW@2562..2566 "true"1629          WHITESPACE@2566..2571 "\n    "1630          ELSE_KW@2571..2575 "else"1631          WHITESPACE@2575..2582 "\n      "1632          FALSE_EXPR@2582..26251633            EXPR_ERROR@2582..26251634              ERROR_KW@2582..2587 "error"1635              WHITESPACE@2587..2588 " "1636              EXPR_BINARY@2588..26251637                LHS_EXPR@2588..26211638                  EXPR_BINARY@2588..26211639                    LHS_EXPR@2588..26121640                      EXPR_BINARY@2588..26121641                        LHS_EXPR@2588..26081642                          EXPR_STRING@2588..26081643                            STRING_SINGLE@2588..2608 "'Assertion failed. '"1644                        WHITESPACE@2608..2609 " "1645                        PLUS@2609..2610 "+"1646                        WHITESPACE@2610..2611 " "1647                        EXPR_VAR@2611..26121648                          NAME@2611..26121649                            IDENT@2611..2612 "a"1650                    WHITESPACE@2612..2613 " "1651                    PLUS@2613..2614 "+"1652                    WHITESPACE@2614..2615 " "1653                    EXPR_STRING@2615..26211654                      STRING_SINGLE@2615..2621 "' != '"1655                WHITESPACE@2621..2622 " "1656                PLUS@2622..2623 "+"1657                WHITESPACE@2623..2624 " "1658                EXPR_VAR@2624..26251659                  NAME@2624..26251660                    IDENT@2624..2625 "b"1661      COMMA@2625..2626 ","1662      WHITESPACE@2626..2630 "\n\n  "1663      MEMBER_FIELD_METHOD@2630..27321664        FIELD_NAME_FIXED@2630..26351665          NAME@2630..26351666            IDENT@2630..2635 "clamp"1667        PARAMS_DESC@2635..26541668          L_PAREN@2635..2636 "("1669          PARAM@2636..26371670            DESTRUCT_FULL@2636..26371671              NAME@2636..26371672                IDENT@2636..2637 "x"1673          COMMA@2637..2638 ","1674          WHITESPACE@2638..2639 " "1675          PARAM@2639..26451676            DESTRUCT_FULL@2639..26451677              NAME@2639..26451678                IDENT@2639..2645 "minVal"1679          COMMA@2645..2646 ","1680          WHITESPACE@2646..2647 " "1681          PARAM@2647..26531682            DESTRUCT_FULL@2647..26531683              NAME@2647..26531684                IDENT@2647..2653 "maxVal"1685          R_PAREN@2653..2654 ")"1686        COLONCOLON@2654..2656 "::"1687        WHITESPACE@2656..2661 "\n    "1688        EXPR_IF_THEN_ELSE@2661..27321689          IF_KW@2661..2663 "if"1690          WHITESPACE@2663..2664 " "1691          EXPR_BINARY@2664..26741692            LHS_EXPR@2664..26651693              EXPR_VAR@2664..26651694                NAME@2664..26651695                  IDENT@2664..2665 "x"1696            WHITESPACE@2665..2666 " "1697            LT@2666..2667 "<"1698            WHITESPACE@2667..2668 " "1699            EXPR_VAR@2668..26741700              NAME@2668..26741701                IDENT@2668..2674 "minVal"1702          WHITESPACE@2674..2675 " "1703          THEN_KW@2675..2679 "then"1704          WHITESPACE@2679..2680 " "1705          TRUE_EXPR@2680..26861706            EXPR_VAR@2680..26861707              NAME@2680..26861708                IDENT@2680..2686 "minVal"1709          WHITESPACE@2686..2691 "\n    "1710          ELSE_KW@2691..2695 "else"1711          WHITESPACE@2695..2696 " "1712          FALSE_EXPR@2696..27321713            EXPR_IF_THEN_ELSE@2696..27321714              IF_KW@2696..2698 "if"1715              WHITESPACE@2698..2699 " "1716              EXPR_BINARY@2699..27091717                LHS_EXPR@2699..27001718                  EXPR_VAR@2699..27001719                    NAME@2699..27001720                      IDENT@2699..2700 "x"1721                WHITESPACE@2700..2701 " "1722                GT@2701..2702 ">"1723                WHITESPACE@2702..2703 " "1724                EXPR_VAR@2703..27091725                  NAME@2703..27091726                    IDENT@2703..2709 "maxVal"1727              WHITESPACE@2709..2710 " "1728              THEN_KW@2710..2714 "then"1729              WHITESPACE@2714..2715 " "1730              TRUE_EXPR@2715..27211731                EXPR_VAR@2715..27211732                  NAME@2715..27211733                    IDENT@2715..2721 "maxVal"1734              WHITESPACE@2721..2726 "\n    "1735              ELSE_KW@2726..2730 "else"1736              WHITESPACE@2730..2731 " "1737              FALSE_EXPR@2731..27321738                EXPR_VAR@2731..27321739                  NAME@2731..27321740                    IDENT@2731..2732 "x"1741      COMMA@2732..2733 ","1742      WHITESPACE@2733..2737 "\n\n  "1743      MEMBER_FIELD_METHOD@2737..28041744        FIELD_NAME_FIXED@2737..27501745          NAME@2737..27501746            IDENT@2737..2750 "flattenArrays"1747        PARAMS_DESC@2750..27561748          L_PAREN@2750..2751 "("1749          PARAM@2751..27551750            DESTRUCT_FULL@2751..27551751              NAME@2751..27551752                IDENT@2751..2755 "arrs"1753          R_PAREN@2755..2756 ")"1754        COLONCOLON@2756..2758 "::"1755        WHITESPACE@2758..2763 "\n    "1756        EXPR_APPLY@2763..28041757          EXPR_INDEX@2763..27721758            EXPR_VAR@2763..27661759              NAME@2763..27661760                IDENT@2763..2766 "std"1761            DOT@2766..2767 "."1762            NAME@2767..27721763              IDENT@2767..2772 "foldl"1764          ARGS_DESC@2772..28041765            L_PAREN@2772..2773 "("1766            ARG@2773..27931767              EXPR_FUNCTION@2773..27931768                FUNCTION_KW@2773..2781 "function"1769                PARAMS_DESC@2781..27871770                  L_PAREN@2781..2782 "("1771                  PARAM@2782..27831772                    DESTRUCT_FULL@2782..27831773                      NAME@2782..27831774                        IDENT@2782..2783 "a"1775                  COMMA@2783..2784 ","1776                  WHITESPACE@2784..2785 " "1777                  PARAM@2785..27861778                    DESTRUCT_FULL@2785..27861779                      NAME@2785..27861780                        IDENT@2785..2786 "b"1781                  R_PAREN@2786..2787 ")"1782                WHITESPACE@2787..2788 " "1783                EXPR_BINARY@2788..27931784                  LHS_EXPR@2788..27891785                    EXPR_VAR@2788..27891786                      NAME@2788..27891787                        IDENT@2788..2789 "a"1788                  WHITESPACE@2789..2790 " "1789                  PLUS@2790..2791 "+"1790                  WHITESPACE@2791..2792 " "1791                  EXPR_VAR@2792..27931792                    NAME@2792..27931793                      IDENT@2792..2793 "b"1794            COMMA@2793..2794 ","1795            WHITESPACE@2794..2795 " "1796            ARG@2795..27991797              EXPR_VAR@2795..27991798                NAME@2795..27991799                  IDENT@2795..2799 "arrs"1800            COMMA@2799..2800 ","1801            WHITESPACE@2800..2801 " "1802            ARG@2801..28031803              EXPR_ARRAY@2801..28031804                L_BRACK@2801..2802 "["1805                R_BRACK@2802..2803 "]"1806            R_PAREN@2803..2804 ")"1807      COMMA@2804..2805 ","1808      WHITESPACE@2805..2809 "\n\n  "1809      MEMBER_FIELD_METHOD@2809..34951810        FIELD_NAME_FIXED@2809..28201811          NAME@2809..28201812            IDENT@2809..2820 "manifestIni"1813        PARAMS_DESC@2820..28251814          L_PAREN@2820..2821 "("1815          PARAM@2821..28241816            DESTRUCT_FULL@2821..28241817              NAME@2821..28241818                IDENT@2821..2824 "ini"1819          R_PAREN@2824..2825 ")"1820        COLONCOLON@2825..2827 "::"1821        WHITESPACE@2827..2832 "\n    "1822        EXPR_LOCAL@2832..34951823          LOCAL_KW@2832..2837 "local"1824          WHITESPACE@2837..2838 " "1825          BIND_FUNCTION@2838..31351826            NAME@2838..28481827              IDENT@2838..2848 "body_lines"1828            PARAMS_DESC@2848..28541829              L_PAREN@2848..2849 "("1830              PARAM@2849..28531831                DESTRUCT_FULL@2849..28531832                  NAME@2849..28531833                    IDENT@2849..2853 "body"1834              R_PAREN@2853..2854 ")"1835            WHITESPACE@2854..2855 " "1836            ASSIGN@2855..2856 "="1837            WHITESPACE@2856..2863 "\n      "1838            EXPR_APPLY@2863..31351839              EXPR_INDEX@2863..28711840                EXPR_VAR@2863..28661841                  NAME@2863..28661842                    IDENT@2863..2866 "std"1843                DOT@2866..2867 "."1844                NAME@2867..28711845                  IDENT@2867..2871 "join"1846              ARGS_DESC@2871..31351847                L_PAREN@2871..2872 "("1848                ARG@2872..28741849                  EXPR_ARRAY@2872..28741850                    L_BRACK@2872..2873 "["1851                    R_BRACK@2873..2874 "]"1852                COMMA@2874..2875 ","1853                WHITESPACE@2875..2876 " "1854                ARG@2876..31341855                  EXPR_ARRAY_COMP@2876..31341856                    L_BRACK@2876..2877 "["1857                    WHITESPACE@2877..2886 "\n        "1858                    EXPR_LOCAL@2886..30851859                      LOCAL_KW@2886..2891 "local"1860                      WHITESPACE@2891..2892 " "1861                      BIND_DESTRUCT@2892..29171862                        DESTRUCT_FULL@2892..29071863                          NAME@2892..29071864                            IDENT@2892..2907 "value_or_values"1865                        WHITESPACE@2907..2908 " "1866                        ASSIGN@2908..2909 "="1867                        WHITESPACE@2909..2910 " "1868                        EXPR_INDEX_EXPR@2910..29171869                          LHS_EXPR@2910..29141870                            EXPR_VAR@2910..29141871                              NAME@2910..29141872                                IDENT@2910..2914 "body"1873                          L_BRACK@2914..2915 "["1874                          EXPR_VAR@2915..29161875                            NAME@2915..29161876                              IDENT@2915..2916 "k"1877                          R_BRACK@2916..2917 "]"1878                      SEMI@2917..2918 ";"1879                      WHITESPACE@2918..2927 "\n        "1880                      EXPR_IF_THEN_ELSE@2927..30851881                        IF_KW@2927..2929 "if"1882                        WHITESPACE@2929..2930 " "1883                        EXPR_APPLY@2930..29581884                          EXPR_INDEX@2930..29411885                            EXPR_VAR@2930..29331886                              NAME@2930..29331887                                IDENT@2930..2933 "std"1888                            DOT@2933..2934 "."1889                            NAME@2934..29411890                              IDENT@2934..2941 "isArray"1891                          ARGS_DESC@2941..29581892                            L_PAREN@2941..2942 "("1893                            ARG@2942..29571894                              EXPR_VAR@2942..29571895                                NAME@2942..29571896                                  IDENT@2942..2957 "value_or_values"1897                            R_PAREN@2957..2958 ")"1898                        WHITESPACE@2958..2959 " "1899                        THEN_KW@2959..2963 "then"1900                        WHITESPACE@2963..2974 "\n          "1901                        TRUE_EXPR@2974..30271902                          EXPR_ARRAY_COMP@2974..30271903                            L_BRACK@2974..2975 "["1904                            EXPR_BINARY@2975..29971905                              LHS_EXPR@2975..29841906                                EXPR_STRING@2975..29841907                                  STRING_SINGLE@2975..2984 "'%s = %s'"1908                              WHITESPACE@2984..2985 " "1909                              MODULO@2985..2986 "%"1910                              WHITESPACE@2986..2987 " "1911                              EXPR_ARRAY@2987..29971912                                L_BRACK@2987..2988 "["1913                                EXPR_VAR@2988..29891914                                  NAME@2988..29891915                                    IDENT@2988..2989 "k"1916                                COMMA@2989..2990 ","1917                                WHITESPACE@2990..2991 " "1918                                EXPR_VAR@2991..29961919                                  NAME@2991..29961920                                    IDENT@2991..2996 "value"1921                                R_BRACK@2996..2997 "]"1922                            WHITESPACE@2997..2998 " "1923                            FOR_SPEC@2998..30261924                              FOR_KW@2998..3001 "for"1925                              WHITESPACE@3001..3002 " "1926                              NAME@3002..30071927                                IDENT@3002..3007 "value"1928                              WHITESPACE@3007..3008 " "1929                              IN_KW@3008..3010 "in"1930                              WHITESPACE@3010..3011 " "1931                              EXPR_VAR@3011..30261932                                NAME@3011..30261933                                  IDENT@3011..3026 "value_or_values"1934                            R_BRACK@3026..3027 "]"1935                        WHITESPACE@3027..3036 "\n        "1936                        ELSE_KW@3036..3040 "else"1937                        WHITESPACE@3040..3051 "\n          "1938                        FALSE_EXPR@3051..30851939                          EXPR_ARRAY@3051..30851940                            L_BRACK@3051..3052 "["1941                            EXPR_BINARY@3052..30841942                              LHS_EXPR@3052..30611943                                EXPR_STRING@3052..30611944                                  STRING_SINGLE@3052..3061 "'%s = %s'"1945                              WHITESPACE@3061..3062 " "1946                              MODULO@3062..3063 "%"1947                              WHITESPACE@3063..3064 " "1948                              EXPR_ARRAY@3064..30841949                                L_BRACK@3064..3065 "["1950                                EXPR_VAR@3065..30661951                                  NAME@3065..30661952                                    IDENT@3065..3066 "k"1953                                COMMA@3066..3067 ","1954                                WHITESPACE@3067..3068 " "1955                                EXPR_VAR@3068..30831956                                  NAME@3068..30831957                                    IDENT@3068..3083 "value_or_values"1958                                R_BRACK@3083..3084 "]"1959                            R_BRACK@3084..3085 "]"1960                    WHITESPACE@3085..3095 "\n\n        "1961                    FOR_SPEC@3095..31261962                      FOR_KW@3095..3098 "for"1963                      WHITESPACE@3098..3099 " "1964                      NAME@3099..31001965                        IDENT@3099..3100 "k"1966                      WHITESPACE@3100..3101 " "1967                      IN_KW@3101..3103 "in"1968                      WHITESPACE@3103..3104 " "1969                      EXPR_APPLY@3104..31261970                        EXPR_INDEX@3104..31201971                          EXPR_VAR@3104..31071972                            NAME@3104..31071973                              IDENT@3104..3107 "std"1974                          DOT@3107..3108 "."1975                          NAME@3108..31201976                            IDENT@3108..3120 "objectFields"1977                        ARGS_DESC@3120..31261978                          L_PAREN@3120..3121 "("1979                          ARG@3121..31251980                            EXPR_VAR@3121..31251981                              NAME@3121..31251982                                IDENT@3121..3125 "body"1983                          R_PAREN@3125..3126 ")"1984                    WHITESPACE@3126..3133 "\n      "1985                    R_BRACK@3133..3134 "]"1986                R_PAREN@3134..3135 ")"1987          SEMI@3135..3136 ";"1988          WHITESPACE@3136..3142 "\n\n    "1989          EXPR_LOCAL@3142..34951990            LOCAL_KW@3142..3147 "local"1991            WHITESPACE@3147..3148 " "1992            BIND_FUNCTION@3148..32161993              NAME@3148..31611994                IDENT@3148..3161 "section_lines"1995              PARAMS_DESC@3161..31751996                L_PAREN@3161..3162 "("1997                PARAM@3162..31671998                  DESTRUCT_FULL@3162..31671999                    NAME@3162..31672000                      IDENT@3162..3167 "sname"2001                COMMA@3167..3168 ","2002                WHITESPACE@3168..3169 " "2003                PARAM@3169..31742004                  DESTRUCT_FULL@3169..31742005                    NAME@3169..31742006                      IDENT@3169..3174 "sbody"2007                R_PAREN@3174..3175 ")"2008              WHITESPACE@3175..3176 " "2009              ASSIGN@3176..3177 "="2010              WHITESPACE@3177..3178 " "2011              EXPR_BINARY@3178..32162012                LHS_EXPR@3178..31962013                  EXPR_ARRAY@3178..31962014                    L_BRACK@3178..3179 "["2015                    EXPR_BINARY@3179..31952016                      LHS_EXPR@3179..31852017                        EXPR_STRING@3179..31852018                          STRING_SINGLE@3179..3185 "'[%s]'"2019                      WHITESPACE@3185..3186 " "2020                      MODULO@3186..3187 "%"2021                      WHITESPACE@3187..3188 " "2022                      EXPR_ARRAY@3188..31952023                        L_BRACK@3188..3189 "["2024                        EXPR_VAR@3189..31942025                          NAME@3189..31942026                            IDENT@3189..3194 "sname"2027                        R_BRACK@3194..3195 "]"2028                    R_BRACK@3195..3196 "]"2029                WHITESPACE@3196..3197 " "2030                PLUS@3197..3198 "+"2031                WHITESPACE@3198..3199 " "2032                EXPR_APPLY@3199..32162033                  EXPR_VAR@3199..32092034                    NAME@3199..32092035                      IDENT@3199..3209 "body_lines"2036                  ARGS_DESC@3209..32162037                    L_PAREN@3209..3210 "("2038                    ARG@3210..32152039                      EXPR_VAR@3210..32152040                        NAME@3210..32152041                          IDENT@3210..3215 "sbody"2042                    R_PAREN@3215..3216 ")"2043            COMMA@3216..3217 ","2044            WHITESPACE@3217..3228 "\n          "2045            BIND_DESTRUCT@3228..33032046              DESTRUCT_FULL@3228..32372047                NAME@3228..32372048                  IDENT@3228..3237 "main_body"2049              WHITESPACE@3237..3238 " "2050              ASSIGN@3238..3239 "="2051              WHITESPACE@3239..3240 " "2052              EXPR_IF_THEN_ELSE@3240..33032053                IF_KW@3240..3242 "if"2054                WHITESPACE@3242..3243 " "2055                EXPR_APPLY@3243..32692056                  EXPR_INDEX@3243..32562057                    EXPR_VAR@3243..32462058                      NAME@3243..32462059                        IDENT@3243..3246 "std"2060                    DOT@3246..3247 "."2061                    NAME@3247..32562062                      IDENT@3247..3256 "objectHas"2063                  ARGS_DESC@3256..32692064                    L_PAREN@3256..3257 "("2065                    ARG@3257..32602066                      EXPR_VAR@3257..32602067                        NAME@3257..32602068                          IDENT@3257..3260 "ini"2069                    COMMA@3260..3261 ","2070                    WHITESPACE@3261..3262 " "2071                    ARG@3262..32682072                      EXPR_STRING@3262..32682073                        STRING_SINGLE@3262..3268 "'main'"2074                    R_PAREN@3268..3269 ")"2075                WHITESPACE@3269..3270 " "2076                THEN_KW@3270..3274 "then"2077                WHITESPACE@3274..3275 " "2078                TRUE_EXPR@3275..32952079                  EXPR_APPLY@3275..32952080                    EXPR_VAR@3275..32852081                      NAME@3275..32852082                        IDENT@3275..3285 "body_lines"2083                    ARGS_DESC@3285..32952084                      L_PAREN@3285..3286 "("2085                      ARG@3286..32942086                        EXPR_INDEX@3286..32942087                          EXPR_VAR@3286..32892088                            NAME@3286..32892089                              IDENT@3286..3289 "ini"2090                          DOT@3289..3290 "."2091                          NAME@3290..32942092                            IDENT@3290..3294 "main"2093                      R_PAREN@3294..3295 ")"2094                WHITESPACE@3295..3296 " "2095                ELSE_KW@3296..3300 "else"2096                WHITESPACE@3300..3301 " "2097                FALSE_EXPR@3301..33032098                  EXPR_ARRAY@3301..33032099                    L_BRACK@3301..3302 "["2100                    R_BRACK@3302..3303 "]"2101            COMMA@3303..3304 ","2102            WHITESPACE@3304..3315 "\n          "2103            BIND_DESTRUCT@3315..34232104              DESTRUCT_FULL@3315..33272105                NAME@3315..33272106                  IDENT@3315..3327 "all_sections"2107              WHITESPACE@3327..3328 " "2108              ASSIGN@3328..3329 "="2109              WHITESPACE@3329..3330 " "2110              EXPR_ARRAY_COMP@3330..34232111                L_BRACK@3330..3331 "["2112                WHITESPACE@3331..3338 "\n      "2113                EXPR_APPLY@3338..33712114                  EXPR_VAR@3338..33512115                    NAME@3338..33512116                      IDENT@3338..3351 "section_lines"2117                  ARGS_DESC@3351..33712118                    L_PAREN@3351..3352 "("2119                    ARG@3352..33532120                      EXPR_VAR@3352..33532121                        NAME@3352..33532122                          IDENT@3352..3353 "k"2123                    COMMA@3353..3354 ","2124                    WHITESPACE@3354..3355 " "2125                    ARG@3355..33702126                      EXPR_INDEX_EXPR@3355..33702127                        LHS_EXPR@3355..33672128                          EXPR_INDEX@3355..33672129                            EXPR_VAR@3355..33582130                              NAME@3355..33582131                                IDENT@3355..3358 "ini"2132                            DOT@3358..3359 "."2133                            NAME@3359..33672134                              IDENT@3359..3367 "sections"2135                        L_BRACK@3367..3368 "["2136                        EXPR_VAR@3368..33692137                          NAME@3368..33692138                            IDENT@3368..3369 "k"2139                        R_BRACK@3369..3370 "]"2140                    R_PAREN@3370..3371 ")"2141                WHITESPACE@3371..3378 "\n      "2142                FOR_SPEC@3378..34172143                  FOR_KW@3378..3381 "for"2144                  WHITESPACE@3381..3382 " "2145                  NAME@3382..33832146                    IDENT@3382..3383 "k"2147                  WHITESPACE@3383..3384 " "2148                  IN_KW@3384..3386 "in"2149                  WHITESPACE@3386..3387 " "2150                  EXPR_APPLY@3387..34172151                    EXPR_INDEX@3387..34032152                      EXPR_VAR@3387..33902153                        NAME@3387..33902154                          IDENT@3387..3390 "std"2155                      DOT@3390..3391 "."2156                      NAME@3391..34032157                        IDENT@3391..3403 "objectFields"2158                    ARGS_DESC@3403..34172159                      L_PAREN@3403..3404 "("2160                      ARG@3404..34162161                        EXPR_INDEX@3404..34162162                          EXPR_VAR@3404..34072163                            NAME@3404..34072164                              IDENT@3404..3407 "ini"2165                          DOT@3407..3408 "."2166                          NAME@3408..34162167                            IDENT@3408..3416 "sections"2168                      R_PAREN@3416..3417 ")"2169                WHITESPACE@3417..3422 "\n    "2170                R_BRACK@3422..3423 "]"2171            SEMI@3423..3424 ";"2172            WHITESPACE@3424..3429 "\n    "2173            EXPR_APPLY@3429..34952174              EXPR_INDEX@3429..34372175                EXPR_VAR@3429..34322176                  NAME@3429..34322177                    IDENT@3429..3432 "std"2178                DOT@3432..3433 "."2179                NAME@3433..34372180                  IDENT@3433..3437 "join"2181              ARGS_DESC@3437..34952182                L_PAREN@3437..3438 "("2183                ARG@3438..34422184                  EXPR_STRING@3438..34422185                    STRING_SINGLE@3438..3442 "'\\n'"2186                COMMA@3442..3443 ","2187                WHITESPACE@3443..3444 " "2188                ARG@3444..34942189                  EXPR_BINARY@3444..34942190                    LHS_EXPR@3444..34872191                      EXPR_BINARY@3444..34872192                        LHS_EXPR@3444..34532193                          EXPR_VAR@3444..34532194                            NAME@3444..34532195                              IDENT@3444..3453 "main_body"2196                        WHITESPACE@3453..3454 " "2197                        PLUS@3454..3455 "+"2198                        WHITESPACE@3455..3456 " "2199                        EXPR_APPLY@3456..34872200                          EXPR_INDEX@3456..34732201                            EXPR_VAR@3456..34592202                              NAME@3456..34592203                                IDENT@3456..3459 "std"2204                            DOT@3459..3460 "."2205                            NAME@3460..34732206                              IDENT@3460..3473 "flattenArrays"2207                          ARGS_DESC@3473..34872208                            L_PAREN@3473..3474 "("2209                            ARG@3474..34862210                              EXPR_VAR@3474..34862211                                NAME@3474..34862212                                  IDENT@3474..3486 "all_sections"2213                            R_PAREN@3486..3487 ")"2214                    WHITESPACE@3487..3488 " "2215                    PLUS@3488..3489 "+"2216                    WHITESPACE@3489..3490 " "2217                    EXPR_ARRAY@3490..34942218                      L_BRACK@3490..3491 "["2219                      EXPR_STRING@3491..34932220                        STRING_SINGLE@3491..3493 "''"2221                      R_BRACK@3493..3494 "]"2222                R_PAREN@3494..3495 ")"2223      COMMA@3495..3496 ","2224      WHITESPACE@3496..3500 "\n\n  "2225      MEMBER_FIELD_METHOD@3500..35532226        FIELD_NAME_FIXED@3500..35122227          NAME@3500..35122228            IDENT@3500..3512 "manifestToml"2229        PARAMS_DESC@3512..35192230          L_PAREN@3512..3513 "("2231          PARAM@3513..35182232            DESTRUCT_FULL@3513..35182233              NAME@3513..35182234                IDENT@3513..3518 "value"2235          R_PAREN@3518..3519 ")"2236        COLONCOLON@3519..3521 "::"2237        WHITESPACE@3521..3522 " "2238        EXPR_APPLY@3522..35532239          EXPR_INDEX@3522..35402240            EXPR_VAR@3522..35252241              NAME@3522..35252242                IDENT@3522..3525 "std"2243            DOT@3525..3526 "."2244            NAME@3526..35402245              IDENT@3526..3540 "manifestTomlEx"2246          ARGS_DESC@3540..35532247            L_PAREN@3540..3541 "("2248            ARG@3541..35462249              EXPR_VAR@3541..35462250                NAME@3541..35462251                  IDENT@3541..3546 "value"2252            COMMA@3546..3547 ","2253            WHITESPACE@3547..3548 " "2254            ARG@3548..35522255              EXPR_STRING@3548..35522256                STRING_SINGLE@3548..3552 "'  '"2257            R_PAREN@3552..3553 ")"2258      COMMA@3553..3554 ","2259      WHITESPACE@3554..3558 "\n\n  "2260      MEMBER_FIELD_METHOD@3558..36132261        FIELD_NAME_FIXED@3558..35762262          NAME@3558..35762263            IDENT@3558..3576 "escapeStringPython"2264        PARAMS_DESC@3576..35812265          L_PAREN@3576..3577 "("2266          PARAM@3577..35802267            DESTRUCT_FULL@3577..35802268              NAME@3577..35802269                IDENT@3577..3580 "str"2270          R_PAREN@3580..3581 ")"2271        COLONCOLON@3581..3583 "::"2272        WHITESPACE@3583..3588 "\n    "2273        EXPR_APPLY@3588..36132274          EXPR_INDEX@3588..36082275            EXPR_VAR@3588..35912276              NAME@3588..35912277                IDENT@3588..3591 "std"2278            DOT@3591..3592 "."2279            NAME@3592..36082280              IDENT@3592..3608 "escapeStringJson"2281          ARGS_DESC@3608..36132282            L_PAREN@3608..3609 "("2283            ARG@3609..36122284              EXPR_VAR@3609..36122285                NAME@3609..36122286                  IDENT@3609..3612 "str"2287            R_PAREN@3612..3613 ")"2288      COMMA@3613..3614 ","2289      WHITESPACE@3614..3618 "\n\n  "2290      MEMBER_FIELD_METHOD@3618..38352291        FIELD_NAME_FIXED@3618..36342292          NAME@3618..36342293            IDENT@3618..3634 "escapeStringBash"2294        PARAMS_DESC@3634..36402295          L_PAREN@3634..3635 "("2296          PARAM@3635..36392297            DESTRUCT_FULL@3635..36392298              NAME@3635..36392299                IDENT@3635..3639 "str_"2300          R_PAREN@3639..3640 ")"2301        COLONCOLON@3640..3642 "::"2302        WHITESPACE@3642..3647 "\n    "2303        EXPR_LOCAL@3647..38352304          LOCAL_KW@3647..3652 "local"2305          WHITESPACE@3652..3653 " "2306          BIND_DESTRUCT@3653..36772307            DESTRUCT_FULL@3653..36562308              NAME@3653..36562309                IDENT@3653..3656 "str"2310            WHITESPACE@3656..3657 " "2311            ASSIGN@3657..3658 "="2312            WHITESPACE@3658..3659 " "2313            EXPR_APPLY@3659..36772314              EXPR_INDEX@3659..36712315                EXPR_VAR@3659..36622316                  NAME@3659..36622317                    IDENT@3659..3662 "std"2318                DOT@3662..3663 "."2319                NAME@3663..36712320                  IDENT@3663..3671 "toString"2321              ARGS_DESC@3671..36772322                L_PAREN@3671..3672 "("2323                ARG@3672..36762324                  EXPR_VAR@3672..36762325                    NAME@3672..36762326                      IDENT@3672..3676 "str_"2327                R_PAREN@3676..3677 ")"2328          SEMI@3677..3678 ";"2329          WHITESPACE@3678..3683 "\n    "2330          EXPR_LOCAL@3683..38352331            LOCAL_KW@3683..3688 "local"2332            WHITESPACE@3688..3689 " "2333            BIND_FUNCTION@3689..37642334              NAME@3689..36942335                IDENT@3689..3694 "trans"2336              PARAMS_DESC@3694..36982337                L_PAREN@3694..3695 "("2338                PARAM@3695..36972339                  DESTRUCT_FULL@3695..36972340                    NAME@3695..36972341                      IDENT@3695..3697 "ch"2342                R_PAREN@3697..3698 ")"2343              WHITESPACE@3698..3699 " "2344              ASSIGN@3699..3700 "="2345              WHITESPACE@3700..3707 "\n      "2346              EXPR_IF_THEN_ELSE@3707..37642347                IF_KW@3707..3709 "if"2348                WHITESPACE@3709..3710 " "2349                EXPR_BINARY@3710..37192350                  LHS_EXPR@3710..37122351                    EXPR_VAR@3710..37122352                      NAME@3710..37122353                        IDENT@3710..3712 "ch"2354                  WHITESPACE@3712..3713 " "2355                  EQ@3713..3715 "=="2356                  WHITESPACE@3715..3716 " "2357                  EXPR_STRING@3716..37192358                    STRING_DOUBLE@3716..3719 "\"'\""2359                WHITESPACE@3719..3720 " "2360                THEN_KW@3720..3724 "then"2361                WHITESPACE@3724..3733 "\n        "2362                TRUE_EXPR@3733..37422363                  EXPR_STRING@3733..37422364                    STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\""2365                WHITESPACE@3742..3749 "\n      "2366                ELSE_KW@3749..3753 "else"2367                WHITESPACE@3753..3762 "\n        "2368                FALSE_EXPR@3762..37642369                  EXPR_VAR@3762..37642370                    NAME@3762..37642371                      IDENT@3762..3764 "ch"2372            SEMI@3764..3765 ";"2373            WHITESPACE@3765..3770 "\n    "2374            EXPR_BINARY@3770..38352375              LHS_EXPR@3770..37762376                EXPR_STRING@3770..37762377                  STRING_DOUBLE@3770..3776 "\"'%s'\""2378              WHITESPACE@3776..3777 " "2379              MODULO@3777..3778 "%"2380              WHITESPACE@3778..3779 " "2381              EXPR_APPLY@3779..38352382                EXPR_INDEX@3779..37872383                  EXPR_VAR@3779..37822384                    NAME@3779..37822385                      IDENT@3779..3782 "std"2386                  DOT@3782..3783 "."2387                  NAME@3783..37872388                    IDENT@3783..3787 "join"2389                ARGS_DESC@3787..38352390                  L_PAREN@3787..3788 "("2391                  ARG@3788..37902392                    EXPR_STRING@3788..37902393                      STRING_SINGLE@3788..3790 "''"2394                  COMMA@3790..3791 ","2395                  WHITESPACE@3791..3792 " "2396                  ARG@3792..38342397                    EXPR_ARRAY_COMP@3792..38342398                      L_BRACK@3792..3793 "["2399                      EXPR_APPLY@3793..38022400                        EXPR_VAR@3793..37982401                          NAME@3793..37982402                            IDENT@3793..3798 "trans"2403                        ARGS_DESC@3798..38022404                          L_PAREN@3798..3799 "("2405                          ARG@3799..38012406                            EXPR_VAR@3799..38012407                              NAME@3799..38012408                                IDENT@3799..3801 "ch"2409                          R_PAREN@3801..3802 ")"2410                      WHITESPACE@3802..3803 " "2411                      FOR_SPEC@3803..38332412                        FOR_KW@3803..3806 "for"2413                        WHITESPACE@3806..3807 " "2414                        NAME@3807..38092415                          IDENT@3807..3809 "ch"2416                        WHITESPACE@3809..3810 " "2417                        IN_KW@3810..3812 "in"2418                        WHITESPACE@3812..3813 " "2419                        EXPR_APPLY@3813..38332420                          EXPR_INDEX@3813..38282421                            EXPR_VAR@3813..38162422                              NAME@3813..38162423                                IDENT@3813..3816 "std"2424                            DOT@3816..3817 "."2425                            NAME@3817..38282426                              IDENT@3817..3828 "stringChars"2427                          ARGS_DESC@3828..38332428                            L_PAREN@3828..3829 "("2429                            ARG@3829..38322430                              EXPR_VAR@3829..38322431                                NAME@3829..38322432                                  IDENT@3829..3832 "str"2433                            R_PAREN@3832..3833 ")"2434                      R_BRACK@3833..3834 "]"2435                  R_PAREN@3834..3835 ")"2436      COMMA@3835..3836 ","2437      WHITESPACE@3836..3840 "\n\n  "2438      MEMBER_FIELD_METHOD@3840..40542439        FIELD_NAME_FIXED@3840..38592440          NAME@3840..38592441            IDENT@3840..3859 "escapeStringDollars"2442        PARAMS_DESC@3859..38652443          L_PAREN@3859..3860 "("2444          PARAM@3860..38642445            DESTRUCT_FULL@3860..38642446              NAME@3860..38642447                IDENT@3860..3864 "str_"2448          R_PAREN@3864..3865 ")"2449        COLONCOLON@3865..3867 "::"2450        WHITESPACE@3867..3872 "\n    "2451        EXPR_LOCAL@3872..40542452          LOCAL_KW@3872..3877 "local"2453          WHITESPACE@3877..3878 " "2454          BIND_DESTRUCT@3878..39022455            DESTRUCT_FULL@3878..38812456              NAME@3878..38812457                IDENT@3878..3881 "str"2458            WHITESPACE@3881..3882 " "2459            ASSIGN@3882..3883 "="2460            WHITESPACE@3883..3884 " "2461            EXPR_APPLY@3884..39022462              EXPR_INDEX@3884..38962463                EXPR_VAR@3884..38872464                  NAME@3884..38872465                    IDENT@3884..3887 "std"2466                DOT@3887..3888 "."2467                NAME@3888..38962468                  IDENT@3888..3896 "toString"2469              ARGS_DESC@3896..39022470                L_PAREN@3896..3897 "("2471                ARG@3897..39012472                  EXPR_VAR@3897..39012473                    NAME@3897..39012474                      IDENT@3897..3901 "str_"2475                R_PAREN@3901..3902 ")"2476          SEMI@3902..3903 ";"2477          WHITESPACE@3903..3908 "\n    "2478          EXPR_LOCAL@3908..40542479            LOCAL_KW@3908..3913 "local"2480            WHITESPACE@3913..3914 " "2481            BIND_FUNCTION@3914..39842482              NAME@3914..39192483                IDENT@3914..3919 "trans"2484              PARAMS_DESC@3919..39232485                L_PAREN@3919..3920 "("2486                PARAM@3920..39222487                  DESTRUCT_FULL@3920..39222488                    NAME@3920..39222489                      IDENT@3920..3922 "ch"2490                R_PAREN@3922..3923 ")"2491              WHITESPACE@3923..3924 " "2492              ASSIGN@3924..3925 "="2493              WHITESPACE@3925..3932 "\n      "2494              EXPR_IF_THEN_ELSE@3932..39842495                IF_KW@3932..3934 "if"2496                WHITESPACE@3934..3935 " "2497                EXPR_BINARY@3935..39442498                  LHS_EXPR@3935..39372499                    EXPR_VAR@3935..39372500                      NAME@3935..39372501                        IDENT@3935..3937 "ch"2502                  WHITESPACE@3937..3938 " "2503                  EQ@3938..3940 "=="2504                  WHITESPACE@3940..3941 " "2505                  EXPR_STRING@3941..39442506                    STRING_SINGLE@3941..3944 "'$'"2507                WHITESPACE@3944..3945 " "2508                THEN_KW@3945..3949 "then"2509                WHITESPACE@3949..3958 "\n        "2510                TRUE_EXPR@3958..39622511                  EXPR_STRING@3958..39622512                    STRING_SINGLE@3958..3962 "'$$'"2513                WHITESPACE@3962..3969 "\n      "2514                ELSE_KW@3969..3973 "else"2515                WHITESPACE@3973..3982 "\n        "2516                FALSE_EXPR@3982..39842517                  EXPR_VAR@3982..39842518                    NAME@3982..39842519                      IDENT@3982..3984 "ch"2520            SEMI@3984..3985 ";"2521            WHITESPACE@3985..3990 "\n    "2522            EXPR_APPLY@3990..40542523              EXPR_INDEX@3990..39992524                EXPR_VAR@3990..39932525                  NAME@3990..39932526                    IDENT@3990..3993 "std"2527                DOT@3993..3994 "."2528                NAME@3994..39992529                  IDENT@3994..3999 "foldl"2530              ARGS_DESC@3999..40542531                L_PAREN@3999..4000 "("2532                ARG@4000..40272533                  EXPR_FUNCTION@4000..40272534                    FUNCTION_KW@4000..4008 "function"2535                    PARAMS_DESC@4008..40142536                      L_PAREN@4008..4009 "("2537                      PARAM@4009..40102538                        DESTRUCT_FULL@4009..40102539                          NAME@4009..40102540                            IDENT@4009..4010 "a"2541                      COMMA@4010..4011 ","2542                      WHITESPACE@4011..4012 " "2543                      PARAM@4012..40132544                        DESTRUCT_FULL@4012..40132545                          NAME@4012..40132546                            IDENT@4012..4013 "b"2547                      R_PAREN@4013..4014 ")"2548                    WHITESPACE@4014..4015 " "2549                    EXPR_BINARY@4015..40272550                      LHS_EXPR@4015..40162551                        EXPR_VAR@4015..40162552                          NAME@4015..40162553                            IDENT@4015..4016 "a"2554                      WHITESPACE@4016..4017 " "2555                      PLUS@4017..4018 "+"2556                      WHITESPACE@4018..4019 " "2557                      EXPR_APPLY@4019..40272558                        EXPR_VAR@4019..40242559                          NAME@4019..40242560                            IDENT@4019..4024 "trans"2561                        ARGS_DESC@4024..40272562                          L_PAREN@4024..4025 "("2563                          ARG@4025..40262564                            EXPR_VAR@4025..40262565                              NAME@4025..40262566                                IDENT@4025..4026 "b"2567                          R_PAREN@4026..4027 ")"2568                COMMA@4027..4028 ","2569                WHITESPACE@4028..4029 " "2570                ARG@4029..40492571                  EXPR_APPLY@4029..40492572                    EXPR_INDEX@4029..40442573                      EXPR_VAR@4029..40322574                        NAME@4029..40322575                          IDENT@4029..4032 "std"2576                      DOT@4032..4033 "."2577                      NAME@4033..40442578                        IDENT@4033..4044 "stringChars"2579                    ARGS_DESC@4044..40492580                      L_PAREN@4044..4045 "("2581                      ARG@4045..40482582                        EXPR_VAR@4045..40482583                          NAME@4045..40482584                            IDENT@4045..4048 "str"2585                      R_PAREN@4048..4049 ")"2586                COMMA@4049..4050 ","2587                WHITESPACE@4050..4051 " "2588                ARG@4051..40532589                  EXPR_STRING@4051..40532590                    STRING_SINGLE@4051..4053 "''"2591                R_PAREN@4053..4054 ")"2592      COMMA@4054..4055 ","2593      WHITESPACE@4055..4059 "\n\n  "2594      MEMBER_BIND_STMT@4059..41742595        OBJ_LOCAL@4059..41742596          LOCAL_KW@4059..4064 "local"2597          WHITESPACE@4064..4065 " "2598          BIND_DESTRUCT@4065..41742599            DESTRUCT_FULL@4065..40762600              NAME@4065..40762601                IDENT@4065..4076 "xml_escapes"2602            WHITESPACE@4076..4077 " "2603            ASSIGN@4077..4078 "="2604            WHITESPACE@4078..4079 " "2605            EXPR_OBJECT@4079..41742606              OBJ_BODY_MEMBER_LIST@4079..41742607                L_BRACE@4079..4080 "{"2608                WHITESPACE@4080..4085 "\n    "2609                MEMBER_FIELD_NORMAL@4085..40962610                  FIELD_NAME_FIXED@4085..40882611                    STRING_SINGLE@4085..4088 "'<'"2612                  COLON@4088..4089 ":"2613                  WHITESPACE@4089..4090 " "2614                  EXPR_STRING@4090..40962615                    STRING_SINGLE@4090..4096 "'&lt;'"2616                COMMA@4096..4097 ","2617                WHITESPACE@4097..4102 "\n    "2618                MEMBER_FIELD_NORMAL@4102..41132619                  FIELD_NAME_FIXED@4102..41052620                    STRING_SINGLE@4102..4105 "'>'"2621                  COLON@4105..4106 ":"2622                  WHITESPACE@4106..4107 " "2623                  EXPR_STRING@4107..41132624                    STRING_SINGLE@4107..4113 "'&gt;'"2625                COMMA@4113..4114 ","2626                WHITESPACE@4114..4119 "\n    "2627                MEMBER_FIELD_NORMAL@4119..41312628                  FIELD_NAME_FIXED@4119..41222629                    STRING_SINGLE@4119..4122 "'&'"2630                  COLON@4122..4123 ":"2631                  WHITESPACE@4123..4124 " "2632                  EXPR_STRING@4124..41312633                    STRING_SINGLE@4124..4131 "'&amp;'"2634                COMMA@4131..4132 ","2635                WHITESPACE@4132..4137 "\n    "2636                MEMBER_FIELD_NORMAL@4137..41502637                  FIELD_NAME_FIXED@4137..41402638                    STRING_SINGLE@4137..4140 "'\"'"2639                  COLON@4140..4141 ":"2640                  WHITESPACE@4141..4142 " "2641                  EXPR_STRING@4142..41502642                    STRING_SINGLE@4142..4150 "'&quot;'"2643                COMMA@4150..4151 ","2644                WHITESPACE@4151..4156 "\n    "2645                MEMBER_FIELD_NORMAL@4156..41692646                  FIELD_NAME_FIXED@4156..41592647                    STRING_DOUBLE@4156..4159 "\"'\""2648                  COLON@4159..4160 ":"2649                  WHITESPACE@4160..4161 " "2650                  EXPR_STRING@4161..41692651                    STRING_SINGLE@4161..4169 "'&apos;'"2652                COMMA@4169..4170 ","2653                WHITESPACE@4170..4173 "\n  "2654                R_BRACE@4173..4174 "}"2655      COMMA@4174..4175 ","2656      WHITESPACE@4175..4179 "\n\n  "2657      MEMBER_FIELD_METHOD@4179..43182658        FIELD_NAME_FIXED@4179..41942659          NAME@4179..41942660            IDENT@4179..4194 "escapeStringXML"2661        PARAMS_DESC@4194..42002662          L_PAREN@4194..4195 "("2663          PARAM@4195..41992664            DESTRUCT_FULL@4195..41992665              NAME@4195..41992666                IDENT@4195..4199 "str_"2667          R_PAREN@4199..4200 ")"2668        COLONCOLON@4200..4202 "::"2669        WHITESPACE@4202..4207 "\n    "2670        EXPR_LOCAL@4207..43182671          LOCAL_KW@4207..4212 "local"2672          WHITESPACE@4212..4213 " "2673          BIND_DESTRUCT@4213..42372674            DESTRUCT_FULL@4213..42162675              NAME@4213..42162676                IDENT@4213..4216 "str"2677            WHITESPACE@4216..4217 " "2678            ASSIGN@4217..4218 "="2679            WHITESPACE@4218..4219 " "2680            EXPR_APPLY@4219..42372681              EXPR_INDEX@4219..42312682                EXPR_VAR@4219..42222683                  NAME@4219..42222684                    IDENT@4219..4222 "std"2685                DOT@4222..4223 "."2686                NAME@4223..42312687                  IDENT@4223..4231 "toString"2688              ARGS_DESC@4231..42372689                L_PAREN@4231..4232 "("2690                ARG@4232..42362691                  EXPR_VAR@4232..42362692                    NAME@4232..42362693                      IDENT@4232..4236 "str_"2694                R_PAREN@4236..4237 ")"2695          SEMI@4237..4238 ";"2696          WHITESPACE@4238..4243 "\n    "2697          EXPR_APPLY@4243..43182698            EXPR_INDEX@4243..42512699              EXPR_VAR@4243..42462700                NAME@4243..42462701                  IDENT@4243..4246 "std"2702              DOT@4246..4247 "."2703              NAME@4247..42512704                IDENT@4247..4251 "join"2705            ARGS_DESC@4251..43182706              L_PAREN@4251..4252 "("2707              ARG@4252..42542708                EXPR_STRING@4252..42542709                  STRING_SINGLE@4252..4254 "''"2710              COMMA@4254..4255 ","2711              WHITESPACE@4255..4256 " "2712              ARG@4256..43172713                EXPR_ARRAY_COMP@4256..43172714                  L_BRACK@4256..4257 "["2715                  EXPR_APPLY@4257..42852716                    EXPR_INDEX@4257..42642717                      EXPR_VAR@4257..42602718                        NAME@4257..42602719                          IDENT@4257..4260 "std"2720                      DOT@4260..4261 "."2721                      NAME@4261..42642722                        IDENT@4261..4264 "get"2723                    ARGS_DESC@4264..42852724                      L_PAREN@4264..4265 "("2725                      ARG@4265..42762726                        EXPR_VAR@4265..42762727                          NAME@4265..42762728                            IDENT@4265..4276 "xml_escapes"2729                      COMMA@4276..4277 ","2730                      WHITESPACE@4277..4278 " "2731                      ARG@4278..42802732                        EXPR_VAR@4278..42802733                          NAME@4278..42802734                            IDENT@4278..4280 "ch"2735                      COMMA@4280..4281 ","2736                      WHITESPACE@4281..4282 " "2737                      ARG@4282..42842738                        EXPR_VAR@4282..42842739                          NAME@4282..42842740                            IDENT@4282..4284 "ch"2741                      R_PAREN@4284..4285 ")"2742                  WHITESPACE@4285..4286 " "2743                  FOR_SPEC@4286..43162744                    FOR_KW@4286..4289 "for"2745                    WHITESPACE@4289..4290 " "2746                    NAME@4290..42922747                      IDENT@4290..4292 "ch"2748                    WHITESPACE@4292..4293 " "2749                    IN_KW@4293..4295 "in"2750                    WHITESPACE@4295..4296 " "2751                    EXPR_APPLY@4296..43162752                      EXPR_INDEX@4296..43112753                        EXPR_VAR@4296..42992754                          NAME@4296..42992755                            IDENT@4296..4299 "std"2756                        DOT@4299..4300 "."2757                        NAME@4300..43112758                          IDENT@4300..4311 "stringChars"2759                      ARGS_DESC@4311..43162760                        L_PAREN@4311..4312 "("2761                        ARG@4312..43152762                          EXPR_VAR@4312..43152763                            NAME@4312..43152764                              IDENT@4312..4315 "str"2765                        R_PAREN@4315..4316 ")"2766                  R_BRACK@4316..4317 "]"2767              R_PAREN@4317..4318 ")"2768      COMMA@4318..4319 ","2769      WHITESPACE@4319..4323 "\n\n  "2770      MEMBER_FIELD_METHOD@4323..43892771        FIELD_NAME_FIXED@4323..43352772          NAME@4323..43352773            IDENT@4323..4335 "manifestJson"2774        PARAMS_DESC@4335..43422775          L_PAREN@4335..4336 "("2776          PARAM@4336..43412777            DESTRUCT_FULL@4336..43412778              NAME@4336..43412779                IDENT@4336..4341 "value"2780          R_PAREN@4341..4342 ")"2781        COLONCOLON@4342..4344 "::"2782        WHITESPACE@4344..4345 " "2783        EXPR_APPLY@4345..43892784          EXPR_INDEX@4345..43632785            EXPR_VAR@4345..43482786              NAME@4345..43482787                IDENT@4345..4348 "std"2788            DOT@4348..4349 "."2789            NAME@4349..43632790              IDENT@4349..4363 "manifestJsonEx"2791          ARGS_DESC@4363..43892792            L_PAREN@4363..4364 "("2793            ARG@4364..43692794              EXPR_VAR@4364..43692795                NAME@4364..43692796                  IDENT@4364..4369 "value"2797            COMMA@4369..4370 ","2798            WHITESPACE@4370..4371 " "2799            ARG@4371..43772800              EXPR_STRING@4371..43772801                STRING_SINGLE@4371..4377 "'    '"2802            R_PAREN@4377..4378 ")"2803            WHITESPACE@4378..4379 " "2804            TAILSTRICT_KW@4379..4389 "tailstrict"2805      COMMA@4389..4390 ","2806      WHITESPACE@4390..4394 "\n\n  "2807      MEMBER_FIELD_METHOD@4394..44622808        FIELD_NAME_FIXED@4394..44142809          NAME@4394..44142810            IDENT@4394..4414 "manifestJsonMinified"2811        PARAMS_DESC@4414..44212812          L_PAREN@4414..4415 "("2813          PARAM@4415..44202814            DESTRUCT_FULL@4415..44202815              NAME@4415..44202816                IDENT@4415..4420 "value"2817          R_PAREN@4420..4421 ")"2818        COLONCOLON@4421..4423 "::"2819        WHITESPACE@4423..4424 " "2820        EXPR_APPLY@4424..44622821          EXPR_INDEX@4424..44422822            EXPR_VAR@4424..44272823              NAME@4424..44272824                IDENT@4424..4427 "std"2825            DOT@4427..4428 "."2826            NAME@4428..44422827              IDENT@4428..4442 "manifestJsonEx"2828          ARGS_DESC@4442..44622829            L_PAREN@4442..4443 "("2830            ARG@4443..44482831              EXPR_VAR@4443..44482832                NAME@4443..44482833                  IDENT@4443..4448 "value"2834            COMMA@4448..4449 ","2835            WHITESPACE@4449..4450 " "2836            ARG@4450..44522837              EXPR_STRING@4450..44522838                STRING_SINGLE@4450..4452 "''"2839            COMMA@4452..4453 ","2840            WHITESPACE@4453..4454 " "2841            ARG@4454..44562842              EXPR_STRING@4454..44562843                STRING_SINGLE@4454..4456 "''"2844            COMMA@4456..4457 ","2845            WHITESPACE@4457..4458 " "2846            ARG@4458..44612847              EXPR_STRING@4458..44612848                STRING_SINGLE@4458..4461 "':'"2849            R_PAREN@4461..4462 ")"2850      COMMA@4462..4463 ","2851      WHITESPACE@4463..4467 "\n\n  "2852      MEMBER_FIELD_METHOD@4467..48522853        FIELD_NAME_FIXED@4467..44852854          NAME@4467..44852855            IDENT@4467..4485 "manifestYamlStream"2856        PARAMS_DESC@4485..45602857          L_PAREN@4485..4486 "("2858          PARAM@4486..44912859            DESTRUCT_FULL@4486..44912860              NAME@4486..44912861                IDENT@4486..4491 "value"2862          COMMA@4491..4492 ","2863          WHITESPACE@4492..4493 " "2864          PARAM@4493..45212865            DESTRUCT_FULL@4493..45152866              NAME@4493..45152867                IDENT@4493..4515 "indent_array_in_object"2868            ASSIGN@4515..4516 "="2869            EXPR_LITERAL@4516..45212870              FALSE_KW@4516..4521 "false"2871          COMMA@4521..4522 ","2872          WHITESPACE@4522..4523 " "2873          PARAM@4523..45422874            DESTRUCT_FULL@4523..45372875              NAME@4523..45372876                IDENT@4523..4537 "c_document_end"2877            ASSIGN@4537..4538 "="2878            EXPR_LITERAL@4538..45422879              TRUE_KW@4538..4542 "true"2880          COMMA@4542..4543 ","2881          WHITESPACE@4543..4544 " "2882          PARAM@4544..45592883            DESTRUCT_FULL@4544..45542884              NAME@4544..45542885                IDENT@4544..4554 "quote_keys"2886            ASSIGN@4554..4555 "="2887            EXPR_LITERAL@4555..45592888              TRUE_KW@4555..4559 "true"2889          R_PAREN@4559..4560 ")"2890        COLONCOLON@4560..4562 "::"2891        WHITESPACE@4562..4567 "\n    "2892        EXPR_IF_THEN_ELSE@4567..48522893          IF_KW@4567..4569 "if"2894          WHITESPACE@4569..4570 " "2895          EXPR_UNARY@4570..45892896            NOT@4570..4571 "!"2897            EXPR_APPLY@4571..45892898              EXPR_INDEX@4571..45822899                EXPR_VAR@4571..45742900                  NAME@4571..45742901                    IDENT@4571..4574 "std"2902                DOT@4574..4575 "."2903                NAME@4575..45822904                  IDENT@4575..4582 "isArray"2905              ARGS_DESC@4582..45892906                L_PAREN@4582..4583 "("2907                ARG@4583..45882908                  EXPR_VAR@4583..45882909                    NAME@4583..45882910                      IDENT@4583..4588 "value"2911                R_PAREN@4588..4589 ")"2912          WHITESPACE@4589..4590 " "2913          THEN_KW@4590..4594 "then"2914          WHITESPACE@4594..4601 "\n      "2915          TRUE_EXPR@4601..46692916            EXPR_ERROR@4601..46692917              ERROR_KW@4601..4606 "error"2918              WHITESPACE@4606..4607 " "2919              EXPR_BINARY@4607..46692920                LHS_EXPR@4607..46512921                  EXPR_STRING@4607..46512922                    STRING_SINGLE@4607..4651 "'manifestYamlStream o ..."2923                WHITESPACE@4651..4652 " "2924                PLUS@4652..4653 "+"2925                WHITESPACE@4653..4654 " "2926                EXPR_APPLY@4654..46692927                  EXPR_INDEX@4654..46622928                    EXPR_VAR@4654..46572929                      NAME@4654..46572930                        IDENT@4654..4657 "std"2931                    DOT@4657..4658 "."2932                    NAME@4658..46622933                      IDENT@4658..4662 "type"2934                  ARGS_DESC@4662..46692935                    L_PAREN@4662..4663 "("2936                    ARG@4663..46682937                      EXPR_VAR@4663..46682938                        NAME@4663..46682939                          IDENT@4663..4668 "value"2940                    R_PAREN@4668..4669 ")"2941          WHITESPACE@4669..4674 "\n    "2942          ELSE_KW@4674..4678 "else"2943          WHITESPACE@4678..4685 "\n      "2944          FALSE_EXPR@4685..48522945            EXPR_BINARY@4685..48522946              LHS_EXPR@4685..48072947                EXPR_BINARY@4685..48072948                  LHS_EXPR@4685..46922949                    EXPR_STRING@4685..46922950                      STRING_SINGLE@4685..4692 "'---\\n'"2951                  WHITESPACE@4692..4693 " "2952                  PLUS@4693..4694 "+"2953                  WHITESPACE@4694..4695 " "2954                  EXPR_APPLY@4695..48072955                    EXPR_INDEX@4695..47032956                      EXPR_VAR@4695..46982957                        NAME@4695..46982958                          IDENT@4695..4698 "std"2959                      DOT@4698..4699 "."2960                      NAME@4699..47032961                        IDENT@4699..4703 "join"2962                    ARGS_DESC@4703..48072963                      L_PAREN@4703..4704 "("2964                      WHITESPACE@4704..4713 "\n        "2965                      ARG@4713..47222966                        EXPR_STRING@4713..47222967                          STRING_SINGLE@4713..4722 "'\\n---\\n'"2968                      COMMA@4722..4723 ","2969                      WHITESPACE@4723..4724 " "2970                      ARG@4724..47992971                        EXPR_ARRAY_COMP@4724..47992972                          L_BRACK@4724..4725 "["2973                          EXPR_APPLY@4725..47832974                            EXPR_INDEX@4725..47442975                              EXPR_VAR@4725..47282976                                NAME@4725..47282977                                  IDENT@4725..4728 "std"2978                              DOT@4728..4729 "."2979                              NAME@4729..47442980                                IDENT@4729..4744 "manifestYamlDoc"2981                            ARGS_DESC@4744..47832982                              L_PAREN@4744..4745 "("2983                              ARG@4745..47462984                                EXPR_VAR@4745..47462985                                  NAME@4745..47462986                                    IDENT@4745..4746 "e"2987                              COMMA@4746..4747 ","2988                              WHITESPACE@4747..4748 " "2989                              ARG@4748..47702990                                EXPR_VAR@4748..47702991                                  NAME@4748..47702992                                    IDENT@4748..4770 "indent_array_in_object"2993                              COMMA@4770..4771 ","2994                              WHITESPACE@4771..4772 " "2995                              ARG@4772..47822996                                EXPR_VAR@4772..47822997                                  NAME@4772..47822998                                    IDENT@4772..4782 "quote_keys"2999                              R_PAREN@4782..4783 ")"3000                          WHITESPACE@4783..4784 " "3001                          FOR_SPEC@4784..47983002                            FOR_KW@4784..4787 "for"3003                            WHITESPACE@4787..4788 " "3004                            NAME@4788..47893005                              IDENT@4788..4789 "e"3006                            WHITESPACE@4789..4790 " "3007                            IN_KW@4790..4792 "in"3008                            WHITESPACE@4792..4793 " "3009                            EXPR_VAR@4793..47983010                              NAME@4793..47983011                                IDENT@4793..4798 "value"3012                          R_BRACK@4798..4799 "]"3013                      WHITESPACE@4799..4806 "\n      "3014                      R_PAREN@4806..4807 ")"3015              WHITESPACE@4807..4808 " "3016              PLUS@4808..4809 "+"3017              WHITESPACE@4809..4810 " "3018              EXPR_IF_THEN_ELSE@4810..48523019                IF_KW@4810..4812 "if"3020                WHITESPACE@4812..4813 " "3021                EXPR_VAR@4813..48273022                  NAME@4813..48273023                    IDENT@4813..4827 "c_document_end"3024                WHITESPACE@4827..4828 " "3025                THEN_KW@4828..4832 "then"3026                WHITESPACE@4832..4833 " "3027                TRUE_EXPR@4833..48423028                  EXPR_STRING@4833..48423029                    STRING_SINGLE@4833..4842 "'\\n...\\n'"3030                WHITESPACE@4842..4843 " "3031                ELSE_KW@4843..4847 "else"3032                WHITESPACE@4847..4848 " "3033                FALSE_EXPR@4848..48523034                  EXPR_STRING@4848..48523035                    STRING_SINGLE@4848..4852 "'\\n'"3036      COMMA@4852..4853 ","3037      WHITESPACE@4853..4857 "\n\n  "3038      MEMBER_FIELD_METHOD@4857..55133039        FIELD_NAME_FIXED@4857..48713040          NAME@4857..48713041            IDENT@4857..4871 "manifestPython"3042        PARAMS_DESC@4871..48743043          L_PAREN@4871..4872 "("3044          PARAM@4872..48733045            DESTRUCT_FULL@4872..48733046              NAME@4872..48733047                IDENT@4872..4873 "v"3048          R_PAREN@4873..4874 ")"3049        COLONCOLON@4874..4876 "::"3050        WHITESPACE@4876..4881 "\n    "3051        EXPR_IF_THEN_ELSE@4881..55133052          IF_KW@4881..4883 "if"3053          WHITESPACE@4883..4884 " "3054          EXPR_APPLY@4884..48993055            EXPR_INDEX@4884..48963056              EXPR_VAR@4884..48873057                NAME@4884..48873058                  IDENT@4884..4887 "std"3059              DOT@4887..4888 "."3060              NAME@4888..48963061                IDENT@4888..4896 "isObject"3062            ARGS_DESC@4896..48993063              L_PAREN@4896..4897 "("3064              ARG@4897..48983065                EXPR_VAR@4897..48983066                  NAME@4897..48983067                    IDENT@4897..4898 "v"3068              R_PAREN@4898..4899 ")"3069          WHITESPACE@4899..4900 " "3070          THEN_KW@4900..4904 "then"3071          WHITESPACE@4904..4911 "\n      "3072          TRUE_EXPR@4911..50863073            EXPR_LOCAL@4911..50863074              LOCAL_KW@4911..4916 "local"3075              WHITESPACE@4916..4917 " "3076              BIND_DESTRUCT@4917..50453077                DESTRUCT_FULL@4917..49233078                  NAME@4917..49233079                    IDENT@4917..4923 "fields"3080                WHITESPACE@4923..4924 " "3081                ASSIGN@4924..4925 "="3082                WHITESPACE@4925..4926 " "3083                EXPR_ARRAY_COMP@4926..50453084                  L_BRACK@4926..4927 "["3085                  WHITESPACE@4927..4936 "\n        "3086                  EXPR_BINARY@4936..50003087                    LHS_EXPR@4936..49443088                      EXPR_STRING@4936..49443089                        STRING_SINGLE@4936..4944 "'%s: %s'"3090                    WHITESPACE@4944..4945 " "3091                    MODULO@4945..4946 "%"3092                    WHITESPACE@4946..4947 " "3093                    EXPR_ARRAY@4947..50003094                      L_BRACK@4947..4948 "["3095                      EXPR_APPLY@4948..49733096                        EXPR_INDEX@4948..49703097                          EXPR_VAR@4948..49513098                            NAME@4948..49513099                              IDENT@4948..4951 "std"3100                          DOT@4951..4952 "."3101                          NAME@4952..49703102                            IDENT@4952..4970 "escapeStringPython"3103                        ARGS_DESC@4970..49733104                          L_PAREN@4970..4971 "("3105                          ARG@4971..49723106                            EXPR_VAR@4971..49723107                              NAME@4971..49723108                                IDENT@4971..4972 "k"3109                          R_PAREN@4972..4973 ")"3110                      COMMA@4973..4974 ","3111                      WHITESPACE@4974..4975 " "3112                      EXPR_APPLY@4975..49993113                        EXPR_INDEX@4975..49933114                          EXPR_VAR@4975..49783115                            NAME@4975..49783116                              IDENT@4975..4978 "std"3117                          DOT@4978..4979 "."3118                          NAME@4979..49933119                            IDENT@4979..4993 "manifestPython"3120                        ARGS_DESC@4993..49993121                          L_PAREN@4993..4994 "("3122                          ARG@4994..49983123                            EXPR_INDEX_EXPR@4994..49983124                              LHS_EXPR@4994..49953125                                EXPR_VAR@4994..49953126                                  NAME@4994..49953127                                    IDENT@4994..4995 "v"3128                              L_BRACK@4995..4996 "["3129                              EXPR_VAR@4996..49973130                                NAME@4996..49973131                                  IDENT@4996..4997 "k"3132                              R_BRACK@4997..4998 "]"3133                          R_PAREN@4998..4999 ")"3134                      R_BRACK@4999..5000 "]"3135                  WHITESPACE@5000..5009 "\n        "3136                  FOR_SPEC@5009..50373137                    FOR_KW@5009..5012 "for"3138                    WHITESPACE@5012..5013 " "3139                    NAME@5013..50143140                      IDENT@5013..5014 "k"3141                    WHITESPACE@5014..5015 " "3142                    IN_KW@5015..5017 "in"3143                    WHITESPACE@5017..5018 " "3144                    EXPR_APPLY@5018..50373145                      EXPR_INDEX@5018..50343146                        EXPR_VAR@5018..50213147                          NAME@5018..50213148                            IDENT@5018..5021 "std"3149                        DOT@5021..5022 "."3150                        NAME@5022..50343151                          IDENT@5022..5034 "objectFields"3152                      ARGS_DESC@5034..50373153                        L_PAREN@5034..5035 "("3154                        ARG@5035..50363155                          EXPR_VAR@5035..50363156                            NAME@5035..50363157                              IDENT@5035..5036 "v"3158                        R_PAREN@5036..5037 ")"3159                  WHITESPACE@5037..5044 "\n      "3160                  R_BRACK@5044..5045 "]"3161              SEMI@5045..5046 ";"3162              WHITESPACE@5046..5053 "\n      "3163              EXPR_BINARY@5053..50863164                LHS_EXPR@5053..50593165                  EXPR_STRING@5053..50593166                    STRING_SINGLE@5053..5059 "'{%s}'"3167                WHITESPACE@5059..5060 " "3168                MODULO@5060..5061 "%"3169                WHITESPACE@5061..5062 " "3170                EXPR_ARRAY@5062..50863171                  L_BRACK@5062..5063 "["3172                  EXPR_APPLY@5063..50853173                    EXPR_INDEX@5063..50713174                      EXPR_VAR@5063..50663175                        NAME@5063..50663176                          IDENT@5063..5066 "std"3177                      DOT@5066..5067 "."3178                      NAME@5067..50713179                        IDENT@5067..5071 "join"3180                    ARGS_DESC@5071..50853181                      L_PAREN@5071..5072 "("3182                      ARG@5072..50763183                        EXPR_STRING@5072..50763184                          STRING_SINGLE@5072..5076 "', '"3185                      COMMA@5076..5077 ","3186                      WHITESPACE@5077..5078 " "3187                      ARG@5078..50843188                        EXPR_VAR@5078..50843189                          NAME@5078..50843190                            IDENT@5078..5084 "fields"3191                      R_PAREN@5084..5085 ")"3192                  R_BRACK@5085..5086 "]"3193          WHITESPACE@5086..5091 "\n    "3194          ELSE_KW@5091..5095 "else"3195          WHITESPACE@5095..5096 " "3196          FALSE_EXPR@5096..55133197            EXPR_IF_THEN_ELSE@5096..55133198              IF_KW@5096..5098 "if"3199              WHITESPACE@5098..5099 " "3200              EXPR_APPLY@5099..51133201                EXPR_INDEX@5099..51103202                  EXPR_VAR@5099..51023203                    NAME@5099..51023204                      IDENT@5099..5102 "std"3205                  DOT@5102..5103 "."3206                  NAME@5103..51103207                    IDENT@5103..5110 "isArray"3208                ARGS_DESC@5110..51133209                  L_PAREN@5110..5111 "("3210                  ARG@5111..51123211                    EXPR_VAR@5111..51123212                      NAME@5111..51123213                        IDENT@5111..5112 "v"3214                  R_PAREN@5112..5113 ")"3215              WHITESPACE@5113..5114 " "3216              THEN_KW@5114..5118 "then"3217              WHITESPACE@5118..5125 "\n      "3218              TRUE_EXPR@5125..51883219                EXPR_BINARY@5125..51883220                  LHS_EXPR@5125..51313221                    EXPR_STRING@5125..51313222                      STRING_SINGLE@5125..5131 "'[%s]'"3223                  WHITESPACE@5131..5132 " "3224                  MODULO@5132..5133 "%"3225                  WHITESPACE@5133..5134 " "3226                  EXPR_ARRAY@5134..51883227                    L_BRACK@5134..5135 "["3228                    EXPR_APPLY@5135..51873229                      EXPR_INDEX@5135..51433230                        EXPR_VAR@5135..51383231                          NAME@5135..51383232                            IDENT@5135..5138 "std"3233                        DOT@5138..5139 "."3234                        NAME@5139..51433235                          IDENT@5139..5143 "join"3236                      ARGS_DESC@5143..51873237                        L_PAREN@5143..5144 "("3238                        ARG@5144..51483239                          EXPR_STRING@5144..51483240                            STRING_SINGLE@5144..5148 "', '"3241                        COMMA@5148..5149 ","3242                        WHITESPACE@5149..5150 " "3243                        ARG@5150..51863244                          EXPR_ARRAY_COMP@5150..51863245                            L_BRACK@5150..5151 "["3246                            EXPR_APPLY@5151..51733247                              EXPR_INDEX@5151..51693248                                EXPR_VAR@5151..51543249                                  NAME@5151..51543250                                    IDENT@5151..5154 "std"3251                                DOT@5154..5155 "."3252                                NAME@5155..51693253                                  IDENT@5155..5169 "manifestPython"3254                              ARGS_DESC@5169..51733255                                L_PAREN@5169..5170 "("3256                                ARG@5170..51723257                                  EXPR_VAR@5170..51723258                                    NAME@5170..51723259                                      IDENT@5170..5172 "v2"3260                                R_PAREN@5172..5173 ")"3261                            WHITESPACE@5173..5174 " "3262                            FOR_SPEC@5174..51853263                              FOR_KW@5174..5177 "for"3264                              WHITESPACE@5177..5178 " "3265                              NAME@5178..51803266                                IDENT@5178..5180 "v2"3267                              WHITESPACE@5180..5181 " "3268                              IN_KW@5181..5183 "in"3269                              WHITESPACE@5183..5184 " "3270                              EXPR_VAR@5184..51853271                                NAME@5184..51853272                                  IDENT@5184..5185 "v"3273                            R_BRACK@5185..5186 "]"3274                        R_PAREN@5186..5187 ")"3275                    R_BRACK@5187..5188 "]"3276              WHITESPACE@5188..5193 "\n    "3277              ELSE_KW@5193..5197 "else"3278              WHITESPACE@5197..5198 " "3279              FALSE_EXPR@5198..55133280                EXPR_IF_THEN_ELSE@5198..55133281                  IF_KW@5198..5200 "if"3282                  WHITESPACE@5200..5201 " "3283                  EXPR_APPLY@5201..52163284                    EXPR_INDEX@5201..52133285                      EXPR_VAR@5201..52043286                        NAME@5201..52043287                          IDENT@5201..5204 "std"3288                      DOT@5204..5205 "."3289                      NAME@5205..52133290                        IDENT@5205..5213 "isString"3291                    ARGS_DESC@5213..52163292                      L_PAREN@5213..5214 "("3293                      ARG@5214..52153294                        EXPR_VAR@5214..52153295                          NAME@5214..52153296                            IDENT@5214..5215 "v"3297                      R_PAREN@5215..5216 ")"3298                  WHITESPACE@5216..5217 " "3299                  THEN_KW@5217..5221 "then"3300                  WHITESPACE@5221..5228 "\n      "3301                  TRUE_EXPR@5228..52623302                    EXPR_BINARY@5228..52623303                      LHS_EXPR@5228..52323304                        EXPR_STRING@5228..52323305                          STRING_SINGLE@5228..5232 "'%s'"3306                      WHITESPACE@5232..5233 " "3307                      MODULO@5233..5234 "%"3308                      WHITESPACE@5234..5235 " "3309                      EXPR_ARRAY@5235..52623310                        L_BRACK@5235..5236 "["3311                        EXPR_APPLY@5236..52613312                          EXPR_INDEX@5236..52583313                            EXPR_VAR@5236..52393314                              NAME@5236..52393315                                IDENT@5236..5239 "std"3316                            DOT@5239..5240 "."3317                            NAME@5240..52583318                              IDENT@5240..5258 "escapeStringPython"3319                          ARGS_DESC@5258..52613320                            L_PAREN@5258..5259 "("3321                            ARG@5259..52603322                              EXPR_VAR@5259..52603323                                NAME@5259..52603324                                  IDENT@5259..5260 "v"3325                            R_PAREN@5260..5261 ")"3326                        R_BRACK@5261..5262 "]"3327                  WHITESPACE@5262..5267 "\n    "3328                  ELSE_KW@5267..5271 "else"3329                  WHITESPACE@5271..5272 " "3330                  FALSE_EXPR@5272..55133331                    EXPR_IF_THEN_ELSE@5272..55133332                      IF_KW@5272..5274 "if"3333                      WHITESPACE@5274..5275 " "3334                      EXPR_APPLY@5275..52923335                        EXPR_INDEX@5275..52893336                          EXPR_VAR@5275..52783337                            NAME@5275..52783338                              IDENT@5275..5278 "std"3339                          DOT@5278..5279 "."3340                          NAME@5279..52893341                            IDENT@5279..5289 "isFunction"3342                        ARGS_DESC@5289..52923343                          L_PAREN@5289..5290 "("3344                          ARG@5290..52913345                            EXPR_VAR@5290..52913346                              NAME@5290..52913347                                IDENT@5290..5291 "v"3348                          R_PAREN@5291..5292 ")"3349                      WHITESPACE@5292..5293 " "3350                      THEN_KW@5293..5297 "then"3351                      WHITESPACE@5297..5304 "\n      "3352                      TRUE_EXPR@5304..53363353                        EXPR_ERROR@5304..53363354                          ERROR_KW@5304..5309 "error"3355                          WHITESPACE@5309..5310 " "3356                          EXPR_STRING@5310..53363357                            STRING_SINGLE@5310..5336 "'cannot manifest func ..."3358                      WHITESPACE@5336..5341 "\n    "3359                      ELSE_KW@5341..5345 "else"3360                      WHITESPACE@5345..5346 " "3361                      FALSE_EXPR@5346..55133362                        EXPR_IF_THEN_ELSE@5346..55133363                          IF_KW@5346..5348 "if"3364                          WHITESPACE@5348..5349 " "3365                          EXPR_APPLY@5349..53643366                            EXPR_INDEX@5349..53613367                              EXPR_VAR@5349..53523368                                NAME@5349..53523369                                  IDENT@5349..5352 "std"3370                              DOT@5352..5353 "."3371                              NAME@5353..53613372                                IDENT@5353..5361 "isNumber"3373                            ARGS_DESC@5361..53643374                              L_PAREN@5361..5362 "("3375                              ARG@5362..53633376                                EXPR_VAR@5362..53633377                                  NAME@5362..53633378                                    IDENT@5362..5363 "v"3379                              R_PAREN@5363..5364 ")"3380                          WHITESPACE@5364..5365 " "3381                          THEN_KW@5365..5369 "then"3382                          WHITESPACE@5369..5376 "\n      "3383                          TRUE_EXPR@5376..53913384                            EXPR_APPLY@5376..53913385                              EXPR_INDEX@5376..53883386                                EXPR_VAR@5376..53793387                                  NAME@5376..53793388                                    IDENT@5376..5379 "std"3389                                DOT@5379..5380 "."3390                                NAME@5380..53883391                                  IDENT@5380..5388 "toString"3392                              ARGS_DESC@5388..53913393                                L_PAREN@5388..5389 "("3394                                ARG@5389..53903395                                  EXPR_VAR@5389..53903396                                    NAME@5389..53903397                                      IDENT@5389..5390 "v"3398                                R_PAREN@5390..5391 ")"3399                          WHITESPACE@5391..5396 "\n    "3400                          ELSE_KW@5396..5400 "else"3401                          WHITESPACE@5400..5401 " "3402                          FALSE_EXPR@5401..55133403                            EXPR_IF_THEN_ELSE@5401..55133404                              IF_KW@5401..5403 "if"3405                              WHITESPACE@5403..5404 " "3406                              EXPR_BINARY@5404..54133407                                LHS_EXPR@5404..54053408                                  EXPR_VAR@5404..54053409                                    NAME@5404..54053410                                      IDENT@5404..5405 "v"3411                                WHITESPACE@5405..5406 " "3412                                EQ@5406..5408 "=="3413                                WHITESPACE@5408..5409 " "3414                                EXPR_LITERAL@5409..54133415                                  TRUE_KW@5409..5413 "true"3416                              WHITESPACE@5413..5414 " "3417                              THEN_KW@5414..5418 "then"3418                              WHITESPACE@5418..5425 "\n      "3419                              TRUE_EXPR@5425..54313420                                EXPR_STRING@5425..54313421                                  STRING_SINGLE@5425..5431 "'True'"3422                              WHITESPACE@5431..5436 "\n    "3423                              ELSE_KW@5436..5440 "else"3424                              WHITESPACE@5440..5441 " "3425                              FALSE_EXPR@5441..55133426                                EXPR_IF_THEN_ELSE@5441..55133427                                  IF_KW@5441..5443 "if"3428                                  WHITESPACE@5443..5444 " "3429                                  EXPR_BINARY@5444..54543430                                    LHS_EXPR@5444..54453431                                      EXPR_VAR@5444..54453432                                        NAME@5444..54453433                                          IDENT@5444..5445 "v"3434                                    WHITESPACE@5445..5446 " "3435                                    EQ@5446..5448 "=="3436                                    WHITESPACE@5448..5449 " "3437                                    EXPR_LITERAL@5449..54543438                                      FALSE_KW@5449..5454 "false"3439                                  WHITESPACE@5454..5455 " "3440                                  THEN_KW@5455..5459 "then"3441                                  WHITESPACE@5459..5466 "\n      "3442                                  TRUE_EXPR@5466..54733443                                    EXPR_STRING@5466..54733444                                      STRING_SINGLE@5466..5473 "'False'"3445                                  WHITESPACE@5473..5478 "\n    "3446                                  ELSE_KW@5478..5482 "else"3447                                  WHITESPACE@5482..5483 " "3448                                  FALSE_EXPR@5483..55133449                                    EXPR_IF_THEN_ELSE@5483..55133450                                      IF_KW@5483..5485 "if"3451                                      WHITESPACE@5485..5486 " "3452                                      EXPR_BINARY@5486..54953453                                        LHS_EXPR@5486..54873454                                          EXPR_VAR@5486..54873455                                            NAME@5486..54873456                                              IDENT@5486..5487 "v"3457                                        WHITESPACE@5487..5488 " "3458                                        EQ@5488..5490 "=="3459                                        WHITESPACE@5490..5491 " "3460                                        EXPR_LITERAL@5491..54953461                                          NULL_KW@5491..5495 "null"3462                                      WHITESPACE@5495..5496 " "3463                                      THEN_KW@5496..5500 "then"3464                                      WHITESPACE@5500..5507 "\n      "3465                                      TRUE_EXPR@5507..55133466                                        EXPR_STRING@5507..55133467                                          STRING_SINGLE@5507..5513 "'None'"3468      COMMA@5513..5514 ","3469      WHITESPACE@5514..5518 "\n\n  "3470      MEMBER_FIELD_METHOD@5518..56733471        FIELD_NAME_FIXED@5518..55363472          NAME@5518..55363473            IDENT@5518..5536 "manifestPythonVars"3474        PARAMS_DESC@5536..55423475          L_PAREN@5536..5537 "("3476          PARAM@5537..55413477            DESTRUCT_FULL@5537..55413478              NAME@5537..55413479                IDENT@5537..5541 "conf"3480          R_PAREN@5541..5542 ")"3481        COLONCOLON@5542..5544 "::"3482        WHITESPACE@5544..5549 "\n    "3483        EXPR_LOCAL@5549..56733484          LOCAL_KW@5549..5554 "local"3485          WHITESPACE@5554..5555 " "3486          BIND_DESTRUCT@5555..56403487            DESTRUCT_FULL@5555..55593488              NAME@5555..55593489                IDENT@5555..5559 "vars"3490            WHITESPACE@5559..5560 " "3491            ASSIGN@5560..5561 "="3492            WHITESPACE@5561..5562 " "3493            EXPR_ARRAY_COMP@5562..56403494              L_BRACK@5562..5563 "["3495              EXPR_BINARY@5563..56073496                LHS_EXPR@5563..55723497                  EXPR_STRING@5563..55723498                    STRING_SINGLE@5563..5572 "'%s = %s'"3499                WHITESPACE@5572..5573 " "3500                MODULO@5573..5574 "%"3501                WHITESPACE@5574..5575 " "3502                EXPR_ARRAY@5575..56073503                  L_BRACK@5575..5576 "["3504                  EXPR_VAR@5576..55773505                    NAME@5576..55773506                      IDENT@5576..5577 "k"3507                  COMMA@5577..5578 ","3508                  WHITESPACE@5578..5579 " "3509                  EXPR_APPLY@5579..56063510                    EXPR_INDEX@5579..55973511                      EXPR_VAR@5579..55823512                        NAME@5579..55823513                          IDENT@5579..5582 "std"3514                      DOT@5582..5583 "."3515                      NAME@5583..55973516                        IDENT@5583..5597 "manifestPython"3517                    ARGS_DESC@5597..56063518                      L_PAREN@5597..5598 "("3519                      ARG@5598..56053520                        EXPR_INDEX_EXPR@5598..56053521                          LHS_EXPR@5598..56023522                            EXPR_VAR@5598..56023523                              NAME@5598..56023524                                IDENT@5598..5602 "conf"3525                          L_BRACK@5602..5603 "["3526                          EXPR_VAR@5603..56043527                            NAME@5603..56043528                              IDENT@5603..5604 "k"3529                          R_BRACK@5604..5605 "]"3530                      R_PAREN@5605..5606 ")"3531                  R_BRACK@5606..5607 "]"3532              WHITESPACE@5607..5608 " "3533              FOR_SPEC@5608..56393534                FOR_KW@5608..5611 "for"3535                WHITESPACE@5611..5612 " "3536                NAME@5612..56133537                  IDENT@5612..5613 "k"3538                WHITESPACE@5613..5614 " "3539                IN_KW@5614..5616 "in"3540                WHITESPACE@5616..5617 " "3541                EXPR_APPLY@5617..56393542                  EXPR_INDEX@5617..56333543                    EXPR_VAR@5617..56203544                      NAME@5617..56203545                        IDENT@5617..5620 "std"3546                    DOT@5620..5621 "."3547                    NAME@5621..56333548                      IDENT@5621..5633 "objectFields"3549                  ARGS_DESC@5633..56393550                    L_PAREN@5633..5634 "("3551                    ARG@5634..56383552                      EXPR_VAR@5634..56383553                        NAME@5634..56383554                          IDENT@5634..5638 "conf"3555                    R_PAREN@5638..5639 ")"3556              R_BRACK@5639..5640 "]"3557          SEMI@5640..5641 ";"3558          WHITESPACE@5641..5646 "\n    "3559          EXPR_APPLY@5646..56733560            EXPR_INDEX@5646..56543561              EXPR_VAR@5646..56493562                NAME@5646..56493563                  IDENT@5646..5649 "std"3564              DOT@5649..5650 "."3565              NAME@5650..56543566                IDENT@5650..5654 "join"3567            ARGS_DESC@5654..56733568              L_PAREN@5654..5655 "("3569              ARG@5655..56593570                EXPR_STRING@5655..56593571                  STRING_SINGLE@5655..5659 "'\\n'"3572              COMMA@5659..5660 ","3573              WHITESPACE@5660..5661 " "3574              ARG@5661..56723575                EXPR_BINARY@5661..56723576                  LHS_EXPR@5661..56653577                    EXPR_VAR@5661..56653578                      NAME@5661..56653579                        IDENT@5661..5665 "vars"3580                  WHITESPACE@5665..5666 " "3581                  PLUS@5666..5667 "+"3582                  WHITESPACE@5667..5668 " "3583                  EXPR_ARRAY@5668..56723584                    L_BRACK@5668..5669 "["3585                    EXPR_STRING@5669..56713586                      STRING_SINGLE@5669..5671 "''"3587                    R_BRACK@5671..5672 "]"3588              R_PAREN@5672..5673 ")"3589      COMMA@5673..5674 ","3590      WHITESPACE@5674..5678 "\n\n  "3591      MEMBER_FIELD_METHOD@5678..63453592        FIELD_NAME_FIXED@5678..56953593          NAME@5678..56953594            IDENT@5678..5695 "manifestXmlJsonml"3595        PARAMS_DESC@5695..57023596          L_PAREN@5695..5696 "("3597          PARAM@5696..57013598            DESTRUCT_FULL@5696..57013599              NAME@5696..57013600                IDENT@5696..5701 "value"3601          R_PAREN@5701..5702 ")"3602        COLONCOLON@5702..5704 "::"3603        WHITESPACE@5704..5709 "\n    "3604        EXPR_IF_THEN_ELSE@5709..63453605          IF_KW@5709..5711 "if"3606          WHITESPACE@5711..5712 " "3607          EXPR_UNARY@5712..57313608            NOT@5712..5713 "!"3609            EXPR_APPLY@5713..57313610              EXPR_INDEX@5713..57243611                EXPR_VAR@5713..57163612                  NAME@5713..57163613                    IDENT@5713..5716 "std"3614                DOT@5716..5717 "."3615                NAME@5717..57243616                  IDENT@5717..5724 "isArray"3617              ARGS_DESC@5724..57313618                L_PAREN@5724..5725 "("3619                ARG@5725..57303620                  EXPR_VAR@5725..57303621                    NAME@5725..57303622                      IDENT@5725..5730 "value"3623                R_PAREN@5730..5731 ")"3624          WHITESPACE@5731..5732 " "3625          THEN_KW@5732..5736 "then"3626          WHITESPACE@5736..5743 "\n      "3627          TRUE_EXPR@5743..58113628            EXPR_ERROR@5743..58113629              ERROR_KW@5743..5748 "error"3630              WHITESPACE@5748..5749 " "3631              EXPR_BINARY@5749..58113632                LHS_EXPR@5749..57933633                  EXPR_STRING@5749..57933634                    STRING_SINGLE@5749..5793 "'Expected a JSONML va ..."3635                WHITESPACE@5793..5794 " "3636                MODULO@5794..5795 "%"3637                WHITESPACE@5795..5796 " "3638                EXPR_APPLY@5796..58113639                  EXPR_INDEX@5796..58043640                    EXPR_VAR@5796..57993641                      NAME@5796..57993642                        IDENT@5796..5799 "std"3643                    DOT@5799..5800 "."3644                    NAME@5800..58043645                      IDENT@5800..5804 "type"3646                  ARGS_DESC@5804..58113647                    L_PAREN@5804..5805 "("3648                    ARG@5805..58103649                      EXPR_VAR@5805..58103650                        NAME@5805..58103651                          IDENT@5805..5810 "value"3652                    R_PAREN@5810..5811 ")"3653          WHITESPACE@5811..5816 "\n    "3654          ELSE_KW@5816..5820 "else"3655          WHITESPACE@5820..5827 "\n      "3656          FALSE_EXPR@5827..63453657            EXPR_LOCAL@5827..63453658              LOCAL_KW@5827..5832 "local"3659              WHITESPACE@5832..5833 " "3660              BIND_FUNCTION@5833..63263661                NAME@5833..58363662                  IDENT@5833..5836 "aux"3663                PARAMS_DESC@5836..58393664                  L_PAREN@5836..5837 "("3665                  PARAM@5837..58383666                    DESTRUCT_FULL@5837..58383667                      NAME@5837..58383668                        IDENT@5837..5838 "v"3669                  R_PAREN@5838..5839 ")"3670                WHITESPACE@5839..5840 " "3671                ASSIGN@5840..5841 "="3672                WHITESPACE@5841..5850 "\n        "3673                EXPR_IF_THEN_ELSE@5850..63263674                  IF_KW@5850..5852 "if"3675                  WHITESPACE@5852..5853 " "3676                  EXPR_APPLY@5853..58683677                    EXPR_INDEX@5853..58653678                      EXPR_VAR@5853..58563679                        NAME@5853..58563680                          IDENT@5853..5856 "std"3681                      DOT@5856..5857 "."3682                      NAME@5857..58653683                        IDENT@5857..5865 "isString"3684                    ARGS_DESC@5865..58683685                      L_PAREN@5865..5866 "("3686                      ARG@5866..58673687                        EXPR_VAR@5866..58673688                          NAME@5866..58673689                            IDENT@5866..5867 "v"3690                      R_PAREN@5867..5868 ")"3691                  WHITESPACE@5868..5869 " "3692                  THEN_KW@5869..5873 "then"3693                  WHITESPACE@5873..5884 "\n          "3694                  TRUE_EXPR@5884..58853695                    EXPR_VAR@5884..58853696                      NAME@5884..58853697                        IDENT@5884..5885 "v"3698                  WHITESPACE@5885..5894 "\n        "3699                  ELSE_KW@5894..5898 "else"3700                  WHITESPACE@5898..5909 "\n          "3701                  FALSE_EXPR@5909..63263702                    EXPR_LOCAL@5909..63263703                      LOCAL_KW@5909..5914 "local"3704                      WHITESPACE@5914..5915 " "3705                      BIND_DESTRUCT@5915..59253706                        DESTRUCT_FULL@5915..59183707                          NAME@5915..59183708                            IDENT@5915..5918 "tag"3709                        WHITESPACE@5918..5919 " "3710                        ASSIGN@5919..5920 "="3711                        WHITESPACE@5920..5921 " "3712                        EXPR_INDEX_EXPR@5921..59253713                          LHS_EXPR@5921..59223714                            EXPR_VAR@5921..59223715                              NAME@5921..59223716                                IDENT@5921..5922 "v"3717                          L_BRACK@5922..5923 "["3718                          EXPR_NUMBER@5923..59243719                            FLOAT@5923..5924 "0"3720                          R_BRACK@5924..5925 "]"3721                      SEMI@5925..5926 ";"3722                      WHITESPACE@5926..5937 "\n          "3723                      EXPR_LOCAL@5937..63263724                        LOCAL_KW@5937..5942 "local"3725                        WHITESPACE@5942..5943 " "3726                        BIND_DESTRUCT@5943..59943727                          DESTRUCT_FULL@5943..59523728                            NAME@5943..59523729                              IDENT@5943..5952 "has_attrs"3730                          WHITESPACE@5952..5953 " "3731                          ASSIGN@5953..5954 "="3732                          WHITESPACE@5954..5955 " "3733                          EXPR_BINARY@5955..59943734                            LHS_EXPR@5955..59723735                              EXPR_BINARY@5955..59723736                                LHS_EXPR@5955..59683737                                  EXPR_APPLY@5955..59683738                                    EXPR_INDEX@5955..59653739                                      EXPR_VAR@5955..59583740                                        NAME@5955..59583741                                          IDENT@5955..5958 "std"3742                                      DOT@5958..5959 "."3743                                      NAME@5959..59653744                                        IDENT@5959..5965 "length"3745                                    ARGS_DESC@5965..59683746                                      L_PAREN@5965..5966 "("3747                                      ARG@5966..59673748                                        EXPR_VAR@5966..59673749                                          NAME@5966..59673750                                            IDENT@5966..5967 "v"3751                                      R_PAREN@5967..5968 ")"3752                                WHITESPACE@5968..5969 " "3753                                GT@5969..5970 ">"3754                                WHITESPACE@5970..5971 " "3755                                EXPR_NUMBER@5971..59723756                                  FLOAT@5971..5972 "1"3757                            WHITESPACE@5972..5973 " "3758                            AND@5973..5975 "&&"3759                            WHITESPACE@5975..5976 " "3760                            EXPR_APPLY@5976..59943761                              EXPR_INDEX@5976..59883762                                EXPR_VAR@5976..59793763                                  NAME@5976..59793764                                    IDENT@5976..5979 "std"3765                                DOT@5979..5980 "."3766                                NAME@5980..59883767                                  IDENT@5980..5988 "isObject"3768                              ARGS_DESC@5988..59943769                                L_PAREN@5988..5989 "("3770                                ARG@5989..59933771                                  EXPR_INDEX_EXPR@5989..59933772                                    LHS_EXPR@5989..59903773                                      EXPR_VAR@5989..59903774                                        NAME@5989..59903775                                          IDENT@5989..5990 "v"3776                                    L_BRACK@5990..5991 "["3777                                    EXPR_NUMBER@5991..59923778                                      FLOAT@5991..5992 "1"3779                                    R_BRACK@5992..5993 "]"3780                                R_PAREN@5993..5994 ")"3781                        SEMI@5994..5995 ";"3782                        WHITESPACE@5995..6006 "\n          "3783                        EXPR_LOCAL@6006..63263784                          LOCAL_KW@6006..6011 "local"3785                          WHITESPACE@6011..6012 " "3786                          BIND_DESTRUCT@6012..60503787                            DESTRUCT_FULL@6012..60173788                              NAME@6012..60173789                                IDENT@6012..6017 "attrs"3790                            WHITESPACE@6017..6018 " "3791                            ASSIGN@6018..6019 "="3792                            WHITESPACE@6019..6020 " "3793                            EXPR_IF_THEN_ELSE@6020..60503794                              IF_KW@6020..6022 "if"3795                              WHITESPACE@6022..6023 " "3796                              EXPR_VAR@6023..60323797                                NAME@6023..60323798                                  IDENT@6023..6032 "has_attrs"3799                              WHITESPACE@6032..6033 " "3800                              THEN_KW@6033..6037 "then"3801                              WHITESPACE@6037..6038 " "3802                              TRUE_EXPR@6038..60423803                                EXPR_INDEX_EXPR@6038..60423804                                  LHS_EXPR@6038..60393805                                    EXPR_VAR@6038..60393806                                      NAME@6038..60393807                                        IDENT@6038..6039 "v"3808                                  L_BRACK@6039..6040 "["3809                                  EXPR_NUMBER@6040..60413810                                    FLOAT@6040..6041 "1"3811                                  R_BRACK@6041..6042 "]"3812                              WHITESPACE@6042..6043 " "3813                              ELSE_KW@6043..6047 "else"3814                              WHITESPACE@6047..6048 " "3815                              FALSE_EXPR@6048..60503816                                EXPR_OBJECT@6048..60503817                                  OBJ_BODY_MEMBER_LIST@6048..60503818                                    L_BRACE@6048..6049 "{"3819                                    R_BRACE@6049..6050 "}"3820                          SEMI@6050..6051 ";"3821                          WHITESPACE@6051..6062 "\n          "3822                          EXPR_LOCAL@6062..63263823                            LOCAL_KW@6062..6067 "local"3824                            WHITESPACE@6067..6068 " "3825                            BIND_DESTRUCT@6068..61133826                              DESTRUCT_FULL@6068..60763827                                NAME@6068..60763828                                  IDENT@6068..6076 "children"3829                              WHITESPACE@6076..6077 " "3830                              ASSIGN@6077..6078 "="3831                              WHITESPACE@6078..6079 " "3832                              EXPR_IF_THEN_ELSE@6079..61133833                                IF_KW@6079..6081 "if"3834                                WHITESPACE@6081..6082 " "3835                                EXPR_VAR@6082..60913836                                  NAME@6082..60913837                                    IDENT@6082..6091 "has_attrs"3838                                WHITESPACE@6091..6092 " "3839                                THEN_KW@6092..6096 "then"3840                                WHITESPACE@6096..6097 " "3841                                TRUE_EXPR@6097..61023842                                  EXPR_SLICE@6097..61023843                                    EXPR_VAR@6097..60983844                                      NAME@6097..60983845                                        IDENT@6097..6098 "v"3846                                    SLICE_DESC@6098..61023847                                      L_BRACK@6098..6099 "["3848                                      EXPR_NUMBER@6099..61003849                                        FLOAT@6099..6100 "2"3850                                      COLON@6100..6101 ":"3851                                      R_BRACK@6101..6102 "]"3852                                WHITESPACE@6102..6103 " "3853                                ELSE_KW@6103..6107 "else"3854                                WHITESPACE@6107..6108 " "3855                                FALSE_EXPR@6108..61133856                                  EXPR_SLICE@6108..61133857                                    EXPR_VAR@6108..61093858                                      NAME@6108..61093859                                        IDENT@6108..6109 "v"3860                                    SLICE_DESC@6109..61133861                                      L_BRACK@6109..6110 "["3862                                      EXPR_NUMBER@6110..61113863                                        FLOAT@6110..6111 "1"3864                                      COLON@6111..6112 ":"3865                                      R_BRACK@6112..6113 "]"3866                            SEMI@6113..6114 ";"3867                            WHITESPACE@6114..6125 "\n          "3868                            EXPR_LOCAL@6125..63263869                              LOCAL_KW@6125..6130 "local"3870                              WHITESPACE@6130..6131 " "3871                              BIND_DESTRUCT@6131..62303872                                DESTRUCT_FULL@6131..61403873                                  NAME@6131..61403874                                    IDENT@6131..6140 "attrs_str"3875                                WHITESPACE@6140..6141 " "3876                                ASSIGN@6141..6142 "="3877                                WHITESPACE@6142..6155 "\n            "3878                                EXPR_APPLY@6155..62303879                                  EXPR_INDEX@6155..61633880                                    EXPR_VAR@6155..61583881                                      NAME@6155..61583882                                        IDENT@6155..6158 "std"3883                                    DOT@6158..6159 "."3884                                    NAME@6159..61633885                                      IDENT@6159..6163 "join"3886                                  ARGS_DESC@6163..62303887                                    L_PAREN@6163..6164 "("3888                                    ARG@6164..61663889                                      EXPR_STRING@6164..61663890                                        STRING_SINGLE@6164..6166 "''"3891                                    COMMA@6166..6167 ","3892                                    WHITESPACE@6167..6168 " "3893                                    ARG@6168..62293894                                      EXPR_ARRAY_COMP@6168..62293895                                        L_BRACK@6168..6169 "["3896                                        EXPR_BINARY@6169..61953897                                          LHS_EXPR@6169..61793898                                            EXPR_STRING@6169..61793899                                              STRING_SINGLE@6169..6179 "' %s=\"%s\"'"3900                                          WHITESPACE@6179..6180 " "3901                                          MODULO@6180..6181 "%"3902                                          WHITESPACE@6181..6182 " "3903                                          EXPR_ARRAY@6182..61953904                                            L_BRACK@6182..6183 "["3905                                            EXPR_VAR@6183..61843906                                              NAME@6183..61843907                                                IDENT@6183..6184 "k"3908                                            COMMA@6184..6185 ","3909                                            WHITESPACE@6185..6186 " "3910                                            EXPR_INDEX_EXPR@6186..61943911                                              LHS_EXPR@6186..61913912                                                EXPR_VAR@6186..61913913                                                  NAME@6186..61913914                                                    IDENT@6186..6191 "attrs"3915                                              L_BRACK@6191..6192 "["3916                                              EXPR_VAR@6192..61933917                                                NAME@6192..61933918                                                  IDENT@6192..6193 "k"3919                                              R_BRACK@6193..6194 "]"3920                                            R_BRACK@6194..6195 "]"3921                                        WHITESPACE@6195..6196 " "3922                                        FOR_SPEC@6196..62283923                                          FOR_KW@6196..6199 "for"3924                                          WHITESPACE@6199..6200 " "3925                                          NAME@6200..62013926                                            IDENT@6200..6201 "k"3927                                          WHITESPACE@6201..6202 " "3928                                          IN_KW@6202..6204 "in"3929                                          WHITESPACE@6204..6205 " "3930                                          EXPR_APPLY@6205..62283931                                            EXPR_INDEX@6205..62213932                                              EXPR_VAR@6205..62083933                                                NAME@6205..62083934                                                  IDENT@6205..6208 "std"3935                                              DOT@6208..6209 "."3936                                              NAME@6209..62213937                                                IDENT@6209..6221 "objectFields"3938                                            ARGS_DESC@6221..62283939                                              L_PAREN@6221..6222 "("3940                                              ARG@6222..62273941                                                EXPR_VAR@6222..62273942                                                  NAME@6222..62273943                                                    IDENT@6222..6227 "attrs"3944                                              R_PAREN@6227..6228 ")"3945                                        R_BRACK@6228..6229 "]"3946                                    R_PAREN@6229..6230 ")"3947                              SEMI@6230..6231 ";"3948                              WHITESPACE@6231..6242 "\n          "3949                              EXPR_APPLY@6242..63263950                                EXPR_INDEX@6242..62543951                                  EXPR_VAR@6242..62453952                                    NAME@6242..62453953                                      IDENT@6242..6245 "std"3954                                  DOT@6245..6246 "."3955                                  NAME@6246..62543956                                    IDENT@6246..6254 "deepJoin"3957                                ARGS_DESC@6254..63263958                                  L_PAREN@6254..6255 "("3959                                  ARG@6255..63253960                                    EXPR_ARRAY@6255..63253961                                      L_BRACK@6255..6256 "["3962                                      EXPR_STRING@6256..62593963                                        STRING_SINGLE@6256..6259 "'<'"3964                                      COMMA@6259..6260 ","3965                                      WHITESPACE@6260..6261 " "3966                                      EXPR_VAR@6261..62643967                                        NAME@6261..62643968                                          IDENT@6261..6264 "tag"3969                                      COMMA@6264..6265 ","3970                                      WHITESPACE@6265..6266 " "3971                                      EXPR_VAR@6266..62753972                                        NAME@6266..62753973                                          IDENT@6266..6275 "attrs_str"3974                                      COMMA@6275..6276 ","3975                                      WHITESPACE@6276..6277 " "3976                                      EXPR_STRING@6277..62803977                                        STRING_SINGLE@6277..6280 "'>'"3978                                      COMMA@6280..6281 ","3979                                      WHITESPACE@6281..6282 " "3980                                      EXPR_ARRAY_COMP@6282..63083981                                        L_BRACK@6282..6283 "["3982                                        EXPR_APPLY@6283..62893983                                          EXPR_VAR@6283..62863984                                            NAME@6283..62863985                                              IDENT@6283..6286 "aux"3986                                          ARGS_DESC@6286..62893987                                            L_PAREN@6286..6287 "("3988                                            ARG@6287..62883989                                              EXPR_VAR@6287..62883990                                                NAME@6287..62883991                                                  IDENT@6287..6288 "x"3992                                            R_PAREN@6288..6289 ")"3993                                        WHITESPACE@6289..6290 " "3994                                        FOR_SPEC@6290..63073995                                          FOR_KW@6290..6293 "for"3996                                          WHITESPACE@6293..6294 " "3997                                          NAME@6294..62953998                                            IDENT@6294..6295 "x"3999                                          WHITESPACE@6295..6296 " "4000                                          IN_KW@6296..6298 "in"4001                                          WHITESPACE@6298..6299 " "4002                                          EXPR_VAR@6299..63074003                                            NAME@6299..63074004                                              IDENT@6299..6307 "children"4005                                        R_BRACK@6307..6308 "]"4006                                      COMMA@6308..6309 ","4007                                      WHITESPACE@6309..6310 " "4008                                      EXPR_STRING@6310..63144009                                        STRING_SINGLE@6310..6314 "'</'"4010                                      COMMA@6314..6315 ","4011                                      WHITESPACE@6315..6316 " "4012                                      EXPR_VAR@6316..63194013                                        NAME@6316..63194014                                          IDENT@6316..6319 "tag"4015                                      COMMA@6319..6320 ","4016                                      WHITESPACE@6320..6321 " "4017                                      EXPR_STRING@6321..63244018                                        STRING_SINGLE@6321..6324 "'>'"4019                                      R_BRACK@6324..6325 "]"4020                                  R_PAREN@6325..6326 ")"4021              SEMI@6326..6327 ";"4022              WHITESPACE@6327..6335 "\n\n      "4023              EXPR_APPLY@6335..63454024                EXPR_VAR@6335..63384025                  NAME@6335..63384026                    IDENT@6335..6338 "aux"4027                ARGS_DESC@6338..63454028                  L_PAREN@6338..6339 "("4029                  ARG@6339..63444030                    EXPR_VAR@6339..63444031                      NAME@6339..63444032                        IDENT@6339..6344 "value"4033                  R_PAREN@6344..6345 ")"4034      COMMA@6345..6346 ","4035      WHITESPACE@6346..6350 "\n\n  "4036      MEMBER_FIELD_METHOD@6350..65564037        FIELD_NAME_FIXED@6350..63544038          NAME@6350..63544039            IDENT@6350..6354 "uniq"4040        PARAMS_DESC@6354..63684041          L_PAREN@6354..6355 "("4042          PARAM@6355..63584043            DESTRUCT_FULL@6355..63584044              NAME@6355..63584045                IDENT@6355..6358 "arr"4046          COMMA@6358..6359 ","4047          WHITESPACE@6359..6360 " "4048          PARAM@6360..63674049            DESTRUCT_FULL@6360..63644050              NAME@6360..63644051                IDENT@6360..6364 "keyF"4052            ASSIGN@6364..6365 "="4053            EXPR_VAR@6365..63674054              NAME@6365..63674055                IDENT@6365..6367 "id"4056          R_PAREN@6367..6368 ")"4057        COLONCOLON@6368..6370 "::"4058        WHITESPACE@6370..6375 "\n    "4059        EXPR_LOCAL@6375..65564060          LOCAL_KW@6375..6380 "local"4061          WHITESPACE@6380..6381 " "4062          BIND_FUNCTION@6381..65294063            NAME@6381..63824064              IDENT@6381..6382 "f"4065            PARAMS_DESC@6382..63884066              L_PAREN@6382..6383 "("4067              PARAM@6383..63844068                DESTRUCT_FULL@6383..63844069                  NAME@6383..63844070                    IDENT@6383..6384 "a"4071              COMMA@6384..6385 ","4072              WHITESPACE@6385..6386 " "4073              PARAM@6386..63874074                DESTRUCT_FULL@6386..63874075                  NAME@6386..63874076                    IDENT@6386..6387 "b"4077              R_PAREN@6387..6388 ")"4078            WHITESPACE@6388..6389 " "4079            ASSIGN@6389..6390 "="4080            WHITESPACE@6390..6397 "\n      "4081            EXPR_IF_THEN_ELSE@6397..65294082              IF_KW@6397..6399 "if"4083              WHITESPACE@6399..6400 " "4084              EXPR_BINARY@6400..64184085                LHS_EXPR@6400..64134086                  EXPR_APPLY@6400..64134087                    EXPR_INDEX@6400..64104088                      EXPR_VAR@6400..64034089                        NAME@6400..64034090                          IDENT@6400..6403 "std"4091                      DOT@6403..6404 "."4092                      NAME@6404..64104093                        IDENT@6404..6410 "length"4094                    ARGS_DESC@6410..64134095                      L_PAREN@6410..6411 "("4096                      ARG@6411..64124097                        EXPR_VAR@6411..64124098                          NAME@6411..64124099                            IDENT@6411..6412 "a"4100                      R_PAREN@6412..6413 ")"4101                WHITESPACE@6413..6414 " "4102                EQ@6414..6416 "=="4103                WHITESPACE@6416..6417 " "4104                EXPR_NUMBER@6417..64184105                  FLOAT@6417..6418 "0"4106              WHITESPACE@6418..6419 " "4107              THEN_KW@6419..6423 "then"4108              WHITESPACE@6423..6432 "\n        "4109              TRUE_EXPR@6432..64354110                EXPR_ARRAY@6432..64354111                  L_BRACK@6432..6433 "["4112                  EXPR_VAR@6433..64344113                    NAME@6433..64344114                      IDENT@6433..6434 "b"4115                  R_BRACK@6434..6435 "]"4116              WHITESPACE@6435..6442 "\n      "4117              ELSE_KW@6442..6446 "else"4118              WHITESPACE@6446..6447 " "4119              FALSE_EXPR@6447..65294120                EXPR_IF_THEN_ELSE@6447..65294121                  IF_KW@6447..6449 "if"4122                  WHITESPACE@6449..6450 " "4123                  EXPR_BINARY@6450..64874124                    LHS_EXPR@6450..64764125                      EXPR_APPLY@6450..64764126                        EXPR_VAR@6450..64544127                          NAME@6450..64544128                            IDENT@6450..6454 "keyF"4129                        ARGS_DESC@6454..64764130                          L_PAREN@6454..6455 "("4131                          ARG@6455..64754132                            EXPR_INDEX_EXPR@6455..64754133                              LHS_EXPR@6455..64564134                                EXPR_VAR@6455..64564135                                  NAME@6455..64564136                                    IDENT@6455..6456 "a"4137                              L_BRACK@6456..6457 "["4138                              EXPR_BINARY@6457..64744139                                LHS_EXPR@6457..64704140                                  EXPR_APPLY@6457..64704141                                    EXPR_INDEX@6457..64674142                                      EXPR_VAR@6457..64604143                                        NAME@6457..64604144                                          IDENT@6457..6460 "std"4145                                      DOT@6460..6461 "."4146                                      NAME@6461..64674147                                        IDENT@6461..6467 "length"4148                                    ARGS_DESC@6467..64704149                                      L_PAREN@6467..6468 "("4150                                      ARG@6468..64694151                                        EXPR_VAR@6468..64694152                                          NAME@6468..64694153                                            IDENT@6468..6469 "a"4154                                      R_PAREN@6469..6470 ")"4155                                WHITESPACE@6470..6471 " "4156                                MINUS@6471..6472 "-"4157                                WHITESPACE@6472..6473 " "4158                                EXPR_NUMBER@6473..64744159                                  FLOAT@6473..6474 "1"4160                              R_BRACK@6474..6475 "]"4161                          R_PAREN@6475..6476 ")"4162                    WHITESPACE@6476..6477 " "4163                    EQ@6477..6479 "=="4164                    WHITESPACE@6479..6480 " "4165                    EXPR_APPLY@6480..64874166                      EXPR_VAR@6480..64844167                        NAME@6480..64844168                          IDENT@6480..6484 "keyF"4169                      ARGS_DESC@6484..64874170                        L_PAREN@6484..6485 "("4171                        ARG@6485..64864172                          EXPR_VAR@6485..64864173                            NAME@6485..64864174                              IDENT@6485..6486 "b"4175                        R_PAREN@6486..6487 ")"4176                  WHITESPACE@6487..6488 " "4177                  THEN_KW@6488..6492 "then"4178                  WHITESPACE@6492..6501 "\n        "4179                  TRUE_EXPR@6501..65024180                    EXPR_VAR@6501..65024181                      NAME@6501..65024182                        IDENT@6501..6502 "a"4183                  WHITESPACE@6502..6509 "\n      "4184                  ELSE_KW@6509..6513 "else"4185                  WHITESPACE@6513..6522 "\n        "4186                  FALSE_EXPR@6522..65294187                    EXPR_BINARY@6522..65294188                      LHS_EXPR@6522..65234189                        EXPR_VAR@6522..65234190                          NAME@6522..65234191                            IDENT@6522..6523 "a"4192                      WHITESPACE@6523..6524 " "4193                      PLUS@6524..6525 "+"4194                      WHITESPACE@6525..6526 " "4195                      EXPR_ARRAY@6526..65294196                        L_BRACK@6526..6527 "["4197                        EXPR_VAR@6527..65284198                          NAME@6527..65284199                            IDENT@6527..6528 "b"4200                        R_BRACK@6528..6529 "]"4201          SEMI@6529..6530 ";"4202          WHITESPACE@6530..6535 "\n    "4203          EXPR_APPLY@6535..65564204            EXPR_INDEX@6535..65444205              EXPR_VAR@6535..65384206                NAME@6535..65384207                  IDENT@6535..6538 "std"4208              DOT@6538..6539 "."4209              NAME@6539..65444210                IDENT@6539..6544 "foldl"4211            ARGS_DESC@6544..65564212              L_PAREN@6544..6545 "("4213              ARG@6545..65464214                EXPR_VAR@6545..65464215                  NAME@6545..65464216                    IDENT@6545..6546 "f"4217              COMMA@6546..6547 ","4218              WHITESPACE@6547..6548 " "4219              ARG@6548..65514220                EXPR_VAR@6548..65514221                  NAME@6548..65514222                    IDENT@6548..6551 "arr"4223              COMMA@6551..6552 ","4224              WHITESPACE@6552..6553 " "4225              ARG@6553..65554226                EXPR_ARRAY@6553..65554227                  L_BRACK@6553..6554 "["4228                  R_BRACK@6554..6555 "]"4229              R_PAREN@6555..6556 ")"4230      COMMA@6556..6557 ","4231      WHITESPACE@6557..6561 "\n\n  "4232      MEMBER_FIELD_METHOD@6561..66204233        FIELD_NAME_FIXED@6561..65644234          NAME@6561..65644235            IDENT@6561..6564 "set"4236        PARAMS_DESC@6564..65784237          L_PAREN@6564..6565 "("4238          PARAM@6565..65684239            DESTRUCT_FULL@6565..65684240              NAME@6565..65684241                IDENT@6565..6568 "arr"4242          COMMA@6568..6569 ","4243          WHITESPACE@6569..6570 " "4244          PARAM@6570..65774245            DESTRUCT_FULL@6570..65744246              NAME@6570..65744247                IDENT@6570..6574 "keyF"4248            ASSIGN@6574..6575 "="4249            EXPR_VAR@6575..65774250              NAME@6575..65774251                IDENT@6575..6577 "id"4252          R_PAREN@6577..6578 ")"4253        COLONCOLON@6578..6580 "::"4254        WHITESPACE@6580..6585 "\n    "4255        EXPR_APPLY@6585..66204256          EXPR_INDEX@6585..65934257            EXPR_VAR@6585..65884258              NAME@6585..65884259                IDENT@6585..6588 "std"4260            DOT@6588..6589 "."4261            NAME@6589..65934262              IDENT@6589..6593 "uniq"4263          ARGS_DESC@6593..66204264            L_PAREN@6593..6594 "("4265            ARG@6594..66134266              EXPR_APPLY@6594..66134267                EXPR_INDEX@6594..66024268                  EXPR_VAR@6594..65974269                    NAME@6594..65974270                      IDENT@6594..6597 "std"4271                  DOT@6597..6598 "."4272                  NAME@6598..66024273                    IDENT@6598..6602 "sort"4274                ARGS_DESC@6602..66134275                  L_PAREN@6602..6603 "("4276                  ARG@6603..66064277                    EXPR_VAR@6603..66064278                      NAME@6603..66064279                        IDENT@6603..6606 "arr"4280                  COMMA@6606..6607 ","4281                  WHITESPACE@6607..6608 " "4282                  ARG@6608..66124283                    EXPR_VAR@6608..66124284                      NAME@6608..66124285                        IDENT@6608..6612 "keyF"4286                  R_PAREN@6612..6613 ")"4287            COMMA@6613..6614 ","4288            WHITESPACE@6614..6615 " "4289            ARG@6615..66194290              EXPR_VAR@6615..66194291                NAME@6615..66194292                  IDENT@6615..6619 "keyF"4293            R_PAREN@6619..6620 ")"4294      COMMA@6620..6621 ","4295      WHITESPACE@6621..6625 "\n\n  "4296      MEMBER_FIELD_METHOD@6625..67604297        FIELD_NAME_FIXED@6625..66344298          NAME@6625..66344299            IDENT@6625..6634 "setMember"4300        PARAMS_DESC@6634..66514301          L_PAREN@6634..6635 "("4302          PARAM@6635..66364303            DESTRUCT_FULL@6635..66364304              NAME@6635..66364305                IDENT@6635..6636 "x"4306          COMMA@6636..6637 ","4307          WHITESPACE@6637..6638 " "4308          PARAM@6638..66414309            DESTRUCT_FULL@6638..66414310              NAME@6638..66414311                IDENT@6638..6641 "arr"4312          COMMA@6641..6642 ","4313          WHITESPACE@6642..6643 " "4314          PARAM@6643..66504315            DESTRUCT_FULL@6643..66474316              NAME@6643..66474317                IDENT@6643..6647 "keyF"4318            ASSIGN@6647..6648 "="4319            EXPR_VAR@6648..66504320              NAME@6648..66504321                IDENT@6648..6650 "id"4322          R_PAREN@6650..6651 ")"4323        COLONCOLON@6651..6653 "::"4324        WHITESPACE@6653..6658 "\n    "4325        SINGLE_LINE_SLASH_COMMENT@6658..6712 "// TODO(dcunnin): Bin ..."4326        WHITESPACE@6712..6716 "    "4327        EXPR_BINARY@6716..67604328          LHS_EXPR@6716..67564329            EXPR_APPLY@6716..67564330              EXPR_INDEX@6716..67264331                EXPR_VAR@6716..67194332                  NAME@6716..67194333                    IDENT@6716..6719 "std"4334                DOT@6719..6720 "."4335                NAME@6720..67264336                  IDENT@6720..6726 "length"4337              ARGS_DESC@6726..67564338                L_PAREN@6726..6727 "("4339                ARG@6727..67554340                  EXPR_APPLY@6727..67554341                    EXPR_INDEX@6727..67394342                      EXPR_VAR@6727..67304343                        NAME@6727..67304344                          IDENT@6727..6730 "std"4345                      DOT@6730..6731 "."4346                      NAME@6731..67394347                        IDENT@6731..6739 "setInter"4348                    ARGS_DESC@6739..67554349                      L_PAREN@6739..6740 "("4350                      ARG@6740..67434351                        EXPR_ARRAY@6740..67434352                          L_BRACK@6740..6741 "["4353                          EXPR_VAR@6741..67424354                            NAME@6741..67424355                              IDENT@6741..6742 "x"4356                          R_BRACK@6742..6743 "]"4357                      COMMA@6743..6744 ","4358                      WHITESPACE@6744..6745 " "4359                      ARG@6745..67484360                        EXPR_VAR@6745..67484361                          NAME@6745..67484362                            IDENT@6745..6748 "arr"4363                      COMMA@6748..6749 ","4364                      WHITESPACE@6749..6750 " "4365                      ARG@6750..67544366                        EXPR_VAR@6750..67544367                          NAME@6750..67544368                            IDENT@6750..6754 "keyF"4369                      R_PAREN@6754..6755 ")"4370                R_PAREN@6755..6756 ")"4371          WHITESPACE@6756..6757 " "4372          GT@6757..6758 ">"4373          WHITESPACE@6758..6759 " "4374          EXPR_NUMBER@6759..67604375            FLOAT@6759..6760 "0"4376      COMMA@6760..6761 ","4377      WHITESPACE@6761..6765 "\n\n  "4378      MEMBER_FIELD_METHOD@6765..73144379        FIELD_NAME_FIXED@6765..67734380          NAME@6765..67734381            IDENT@6765..6773 "setUnion"4382        PARAMS_DESC@6773..67884383          L_PAREN@6773..6774 "("4384          PARAM@6774..67754385            DESTRUCT_FULL@6774..67754386              NAME@6774..67754387                IDENT@6774..6775 "a"4388          COMMA@6775..6776 ","4389          WHITESPACE@6776..6777 " "4390          PARAM@6777..67784391            DESTRUCT_FULL@6777..67784392              NAME@6777..67784393                IDENT@6777..6778 "b"4394          COMMA@6778..6779 ","4395          WHITESPACE@6779..6780 " "4396          PARAM@6780..67874397            DESTRUCT_FULL@6780..67844398              NAME@6780..67844399                IDENT@6780..6784 "keyF"4400            ASSIGN@6784..6785 "="4401            EXPR_VAR@6785..67874402              NAME@6785..67874403                IDENT@6785..6787 "id"4404          R_PAREN@6787..6788 ")"4405        COLONCOLON@6788..6790 "::"4406        WHITESPACE@6790..6795 "\n    "4407        SINGLE_LINE_SLASH_COMMENT@6795..6837 "// NOTE: order matter ..."4408        WHITESPACE@6837..6841 "    "4409        EXPR_LOCAL@6841..73144410          LOCAL_KW@6841..6846 "local"4411          WHITESPACE@6846..6847 " "4412          BIND_FUNCTION@6847..72894413            NAME@6847..68504414              IDENT@6847..6850 "aux"4415            PARAMS_DESC@6850..68674416              L_PAREN@6850..6851 "("4417              PARAM@6851..68524418                DESTRUCT_FULL@6851..68524419                  NAME@6851..68524420                    IDENT@6851..6852 "a"4421              COMMA@6852..6853 ","4422              WHITESPACE@6853..6854 " "4423              PARAM@6854..68554424                DESTRUCT_FULL@6854..68554425                  NAME@6854..68554426                    IDENT@6854..6855 "b"4427              COMMA@6855..6856 ","4428              WHITESPACE@6856..6857 " "4429              PARAM@6857..68584430                DESTRUCT_FULL@6857..68584431                  NAME@6857..68584432                    IDENT@6857..6858 "i"4433              COMMA@6858..6859 ","4434              WHITESPACE@6859..6860 " "4435              PARAM@6860..68614436                DESTRUCT_FULL@6860..68614437                  NAME@6860..68614438                    IDENT@6860..6861 "j"4439              COMMA@6861..6862 ","4440              WHITESPACE@6862..6863 " "4441              PARAM@6863..68664442                DESTRUCT_FULL@6863..68664443                  NAME@6863..68664444                    IDENT@6863..6866 "acc"4445              R_PAREN@6866..6867 ")"4446            WHITESPACE@6867..6868 " "4447            ASSIGN@6868..6869 "="4448            WHITESPACE@6869..6876 "\n      "4449            EXPR_IF_THEN_ELSE@6876..72894450              IF_KW@6876..6878 "if"4451              WHITESPACE@6878..6879 " "4452              EXPR_BINARY@6879..68974453                LHS_EXPR@6879..68804454                  EXPR_VAR@6879..68804455                    NAME@6879..68804456                      IDENT@6879..6880 "i"4457                WHITESPACE@6880..6881 " "4458                GE@6881..6883 ">="4459                WHITESPACE@6883..6884 " "4460                EXPR_APPLY@6884..68974461                  EXPR_INDEX@6884..68944462                    EXPR_VAR@6884..68874463                      NAME@6884..68874464                        IDENT@6884..6887 "std"4465                    DOT@6887..6888 "."4466                    NAME@6888..68944467                      IDENT@6888..6894 "length"4468                  ARGS_DESC@6894..68974469                    L_PAREN@6894..6895 "("4470                    ARG@6895..68964471                      EXPR_VAR@6895..68964472                        NAME@6895..68964473                          IDENT@6895..6896 "a"4474                    R_PAREN@6896..6897 ")"4475              WHITESPACE@6897..6898 " "4476              THEN_KW@6898..6902 "then"4477              WHITESPACE@6902..6911 "\n        "4478              TRUE_EXPR@6911..69224479                EXPR_BINARY@6911..69224480                  LHS_EXPR@6911..69144481                    EXPR_VAR@6911..69144482                      NAME@6911..69144483                        IDENT@6911..6914 "acc"4484                  WHITESPACE@6914..6915 " "4485                  PLUS@6915..6916 "+"4486                  WHITESPACE@6916..6917 " "4487                  EXPR_SLICE@6917..69224488                    EXPR_VAR@6917..69184489                      NAME@6917..69184490                        IDENT@6917..6918 "b"4491                    SLICE_DESC@6918..69224492                      L_BRACK@6918..6919 "["4493                      EXPR_VAR@6919..69204494                        NAME@6919..69204495                          IDENT@6919..6920 "j"4496                      COLON@6920..6921 ":"4497                      R_BRACK@6921..6922 "]"4498              WHITESPACE@6922..6929 "\n      "4499              ELSE_KW@6929..6933 "else"4500              WHITESPACE@6933..6934 " "4501              FALSE_EXPR@6934..72894502                EXPR_IF_THEN_ELSE@6934..72894503                  IF_KW@6934..6936 "if"4504                  WHITESPACE@6936..6937 " "4505                  EXPR_BINARY@6937..69554506                    LHS_EXPR@6937..69384507                      EXPR_VAR@6937..69384508                        NAME@6937..69384509                          IDENT@6937..6938 "j"4510                    WHITESPACE@6938..6939 " "4511                    GE@6939..6941 ">="4512                    WHITESPACE@6941..6942 " "4513                    EXPR_APPLY@6942..69554514                      EXPR_INDEX@6942..69524515                        EXPR_VAR@6942..69454516                          NAME@6942..69454517                            IDENT@6942..6945 "std"4518                        DOT@6945..6946 "."4519                        NAME@6946..69524520                          IDENT@6946..6952 "length"4521                      ARGS_DESC@6952..69554522                        L_PAREN@6952..6953 "("4523                        ARG@6953..69544524                          EXPR_VAR@6953..69544525                            NAME@6953..69544526                              IDENT@6953..6954 "b"4527                        R_PAREN@6954..6955 ")"4528                  WHITESPACE@6955..6956 " "4529                  THEN_KW@6956..6960 "then"4530                  WHITESPACE@6960..6969 "\n        "4531                  TRUE_EXPR@6969..69804532                    EXPR_BINARY@6969..69804533                      LHS_EXPR@6969..69724534                        EXPR_VAR@6969..69724535                          NAME@6969..69724536                            IDENT@6969..6972 "acc"4537                      WHITESPACE@6972..6973 " "4538                      PLUS@6973..6974 "+"4539                      WHITESPACE@6974..6975 " "4540                      EXPR_SLICE@6975..69804541                        EXPR_VAR@6975..69764542                          NAME@6975..69764543                            IDENT@6975..6976 "a"4544                        SLICE_DESC@6976..69804545                          L_BRACK@6976..6977 "["4546                          EXPR_VAR@6977..69784547                            NAME@6977..69784548                              IDENT@6977..6978 "i"4549                          COLON@6978..6979 ":"4550                          R_BRACK@6979..6980 "]"4551                  WHITESPACE@6980..6987 "\n      "4552                  ELSE_KW@6987..6991 "else"4553                  WHITESPACE@6991..7000 "\n        "4554                  FALSE_EXPR@7000..72894555                    EXPR_LOCAL@7000..72894556                      LOCAL_KW@7000..7005 "local"4557                      WHITESPACE@7005..7006 " "4558                      BIND_DESTRUCT@7006..70214559                        DESTRUCT_FULL@7006..70084560                          NAME@7006..70084561                            IDENT@7006..7008 "ak"4562                        WHITESPACE@7008..7009 " "4563                        ASSIGN@7009..7010 "="4564                        WHITESPACE@7010..7011 " "4565                        EXPR_APPLY@7011..70214566                          EXPR_VAR@7011..70154567                            NAME@7011..70154568                              IDENT@7011..7015 "keyF"4569                          ARGS_DESC@7015..70214570                            L_PAREN@7015..7016 "("4571                            ARG@7016..70204572                              EXPR_INDEX_EXPR@7016..70204573                                LHS_EXPR@7016..70174574                                  EXPR_VAR@7016..70174575                                    NAME@7016..70174576                                      IDENT@7016..7017 "a"4577                                L_BRACK@7017..7018 "["4578                                EXPR_VAR@7018..70194579                                  NAME@7018..70194580                                    IDENT@7018..7019 "i"4581                                R_BRACK@7019..7020 "]"4582                            R_PAREN@7020..7021 ")"4583                      SEMI@7021..7022 ";"4584                      WHITESPACE@7022..7031 "\n        "4585                      EXPR_LOCAL@7031..72894586                        LOCAL_KW@7031..7036 "local"4587                        WHITESPACE@7036..7037 " "4588                        BIND_DESTRUCT@7037..70524589                          DESTRUCT_FULL@7037..70394590                            NAME@7037..70394591                              IDENT@7037..7039 "bk"4592                          WHITESPACE@7039..7040 " "4593                          ASSIGN@7040..7041 "="4594                          WHITESPACE@7041..7042 " "4595                          EXPR_APPLY@7042..70524596                            EXPR_VAR@7042..70464597                              NAME@7042..70464598                                IDENT@7042..7046 "keyF"4599                            ARGS_DESC@7046..70524600                              L_PAREN@7046..7047 "("4601                              ARG@7047..70514602                                EXPR_INDEX_EXPR@7047..70514603                                  LHS_EXPR@7047..70484604                                    EXPR_VAR@7047..70484605                                      NAME@7047..70484606                                        IDENT@7047..7048 "b"4607                                  L_BRACK@7048..7049 "["4608                                  EXPR_VAR@7049..70504609                                    NAME@7049..70504610                                      IDENT@7049..7050 "j"4611                                  R_BRACK@7050..7051 "]"4612                              R_PAREN@7051..7052 ")"4613                        SEMI@7052..7053 ";"4614                        WHITESPACE@7053..7062 "\n        "4615                        EXPR_IF_THEN_ELSE@7062..72894616                          IF_KW@7062..7064 "if"4617                          WHITESPACE@7064..7065 " "4618                          EXPR_BINARY@7065..70734619                            LHS_EXPR@7065..70674620                              EXPR_VAR@7065..70674621                                NAME@7065..70674622                                  IDENT@7065..7067 "ak"4623                            WHITESPACE@7067..7068 " "4624                            EQ@7068..7070 "=="4625                            WHITESPACE@7070..7071 " "4626                            EXPR_VAR@7071..70734627                              NAME@7071..70734628                                IDENT@7071..7073 "bk"4629                          WHITESPACE@7073..7074 " "4630                          THEN_KW@7074..7078 "then"4631                          WHITESPACE@7078..7089 "\n          "4632                          TRUE_EXPR@7089..71374633                            EXPR_APPLY@7089..71374634                              EXPR_VAR@7089..70924635                                NAME@7089..70924636                                  IDENT@7089..7092 "aux"4637                              ARGS_DESC@7092..71374638                                L_PAREN@7092..7093 "("4639                                ARG@7093..70944640                                  EXPR_VAR@7093..70944641                                    NAME@7093..70944642                                      IDENT@7093..7094 "a"4643                                COMMA@7094..7095 ","4644                                WHITESPACE@7095..7096 " "4645                                ARG@7096..70974646                                  EXPR_VAR@7096..70974647                                    NAME@7096..70974648                                      IDENT@7096..7097 "b"4649                                COMMA@7097..7098 ","4650                                WHITESPACE@7098..7099 " "4651                                ARG@7099..71044652                                  EXPR_BINARY@7099..71044653                                    LHS_EXPR@7099..71004654                                      EXPR_VAR@7099..71004655                                        NAME@7099..71004656                                          IDENT@7099..7100 "i"4657                                    WHITESPACE@7100..7101 " "4658                                    PLUS@7101..7102 "+"4659                                    WHITESPACE@7102..7103 " "4660                                    EXPR_NUMBER@7103..71044661                                      FLOAT@7103..7104 "1"4662                                COMMA@7104..7105 ","4663                                WHITESPACE@7105..7106 " "4664                                ARG@7106..71114665                                  EXPR_BINARY@7106..71114666                                    LHS_EXPR@7106..71074667                                      EXPR_VAR@7106..71074668                                        NAME@7106..71074669                                          IDENT@7106..7107 "j"4670                                    WHITESPACE@7107..7108 " "4671                                    PLUS@7108..7109 "+"4672                                    WHITESPACE@7109..7110 " "4673                                    EXPR_NUMBER@7110..71114674                                      FLOAT@7110..7111 "1"4675                                COMMA@7111..7112 ","4676                                WHITESPACE@7112..7113 " "4677                                ARG@7113..71254678                                  EXPR_BINARY@7113..71254679                                    LHS_EXPR@7113..71164680                                      EXPR_VAR@7113..71164681                                        NAME@7113..71164682                                          IDENT@7113..7116 "acc"4683                                    WHITESPACE@7116..7117 " "4684                                    PLUS@7117..7118 "+"4685                                    WHITESPACE@7118..7119 " "4686                                    EXPR_ARRAY@7119..71254687                                      L_BRACK@7119..7120 "["4688                                      EXPR_INDEX_EXPR@7120..71244689                                        LHS_EXPR@7120..71214690                                          EXPR_VAR@7120..71214691                                            NAME@7120..71214692                                              IDENT@7120..7121 "a"4693                                        L_BRACK@7121..7122 "["4694                                        EXPR_VAR@7122..71234695                                          NAME@7122..71234696                                            IDENT@7122..7123 "i"4697                                        R_BRACK@7123..7124 "]"4698                                      R_BRACK@7124..7125 "]"4699                                R_PAREN@7125..7126 ")"4700                                WHITESPACE@7126..7127 " "4701                                TAILSTRICT_KW@7127..7137 "tailstrict"4702                          WHITESPACE@7137..7146 "\n        "4703                          ELSE_KW@7146..7150 "else"4704                          WHITESPACE@7150..7151 " "4705                          FALSE_EXPR@7151..72894706                            EXPR_IF_THEN_ELSE@7151..72894707                              IF_KW@7151..7153 "if"4708                              WHITESPACE@7153..7154 " "4709                              EXPR_BINARY@7154..71614710                                LHS_EXPR@7154..71564711                                  EXPR_VAR@7154..71564712                                    NAME@7154..71564713                                      IDENT@7154..7156 "ak"4714                                WHITESPACE@7156..7157 " "4715                                LT@7157..7158 "<"4716                                WHITESPACE@7158..7159 " "4717                                EXPR_VAR@7159..71614718                                  NAME@7159..71614719                                    IDENT@7159..7161 "bk"4720                              WHITESPACE@7161..7162 " "4721                              THEN_KW@7162..7166 "then"4722                              WHITESPACE@7166..7177 "\n          "4723                              TRUE_EXPR@7177..72214724                                EXPR_APPLY@7177..72214725                                  EXPR_VAR@7177..71804726                                    NAME@7177..71804727                                      IDENT@7177..7180 "aux"4728                                  ARGS_DESC@7180..72214729                                    L_PAREN@7180..7181 "("4730                                    ARG@7181..71824731                                      EXPR_VAR@7181..71824732                                        NAME@7181..71824733                                          IDENT@7181..7182 "a"4734                                    COMMA@7182..7183 ","4735                                    WHITESPACE@7183..7184 " "4736                                    ARG@7184..71854737                                      EXPR_VAR@7184..71854738                                        NAME@7184..71854739                                          IDENT@7184..7185 "b"4740                                    COMMA@7185..7186 ","4741                                    WHITESPACE@7186..7187 " "4742                                    ARG@7187..71924743                                      EXPR_BINARY@7187..71924744                                        LHS_EXPR@7187..71884745                                          EXPR_VAR@7187..71884746                                            NAME@7187..71884747                                              IDENT@7187..7188 "i"4748                                        WHITESPACE@7188..7189 " "4749                                        PLUS@7189..7190 "+"4750                                        WHITESPACE@7190..7191 " "4751                                        EXPR_NUMBER@7191..71924752                                          FLOAT@7191..7192 "1"4753                                    COMMA@7192..7193 ","4754                                    WHITESPACE@7193..7194 " "4755                                    ARG@7194..71954756                                      EXPR_VAR@7194..71954757                                        NAME@7194..71954758                                          IDENT@7194..7195 "j"4759                                    COMMA@7195..7196 ","4760                                    WHITESPACE@7196..7197 " "4761                                    ARG@7197..72094762                                      EXPR_BINARY@7197..72094763                                        LHS_EXPR@7197..72004764                                          EXPR_VAR@7197..72004765                                            NAME@7197..72004766                                              IDENT@7197..7200 "acc"4767                                        WHITESPACE@7200..7201 " "4768                                        PLUS@7201..7202 "+"4769                                        WHITESPACE@7202..7203 " "4770                                        EXPR_ARRAY@7203..72094771                                          L_BRACK@7203..7204 "["4772                                          EXPR_INDEX_EXPR@7204..72084773                                            LHS_EXPR@7204..72054774                                              EXPR_VAR@7204..72054775                                                NAME@7204..72054776                                                  IDENT@7204..7205 "a"4777                                            L_BRACK@7205..7206 "["4778                                            EXPR_VAR@7206..72074779                                              NAME@7206..72074780                                                IDENT@7206..7207 "i"4781                                            R_BRACK@7207..7208 "]"4782                                          R_BRACK@7208..7209 "]"4783                                    R_PAREN@7209..7210 ")"4784                                    WHITESPACE@7210..7211 " "4785                                    TAILSTRICT_KW@7211..7221 "tailstrict"4786                              WHITESPACE@7221..7230 "\n        "4787                              ELSE_KW@7230..7234 "else"4788                              WHITESPACE@7234..7245 "\n          "4789                              FALSE_EXPR@7245..72894790                                EXPR_APPLY@7245..72894791                                  EXPR_VAR@7245..72484792                                    NAME@7245..72484793                                      IDENT@7245..7248 "aux"4794                                  ARGS_DESC@7248..72894795                                    L_PAREN@7248..7249 "("4796                                    ARG@7249..72504797                                      EXPR_VAR@7249..72504798                                        NAME@7249..72504799                                          IDENT@7249..7250 "a"4800                                    COMMA@7250..7251 ","4801                                    WHITESPACE@7251..7252 " "4802                                    ARG@7252..72534803                                      EXPR_VAR@7252..72534804                                        NAME@7252..72534805                                          IDENT@7252..7253 "b"4806                                    COMMA@7253..7254 ","4807                                    WHITESPACE@7254..7255 " "4808                                    ARG@7255..72564809                                      EXPR_VAR@7255..72564810                                        NAME@7255..72564811                                          IDENT@7255..7256 "i"4812                                    COMMA@7256..7257 ","4813                                    WHITESPACE@7257..7258 " "4814                                    ARG@7258..72634815                                      EXPR_BINARY@7258..72634816                                        LHS_EXPR@7258..72594817                                          EXPR_VAR@7258..72594818                                            NAME@7258..72594819                                              IDENT@7258..7259 "j"4820                                        WHITESPACE@7259..7260 " "4821                                        PLUS@7260..7261 "+"4822                                        WHITESPACE@7261..7262 " "4823                                        EXPR_NUMBER@7262..72634824                                          FLOAT@7262..7263 "1"4825                                    COMMA@7263..7264 ","4826                                    WHITESPACE@7264..7265 " "4827                                    ARG@7265..72774828                                      EXPR_BINARY@7265..72774829                                        LHS_EXPR@7265..72684830                                          EXPR_VAR@7265..72684831                                            NAME@7265..72684832                                              IDENT@7265..7268 "acc"4833                                        WHITESPACE@7268..7269 " "4834                                        PLUS@7269..7270 "+"4835                                        WHITESPACE@7270..7271 " "4836                                        EXPR_ARRAY@7271..72774837                                          L_BRACK@7271..7272 "["4838                                          EXPR_INDEX_EXPR@7272..72764839                                            LHS_EXPR@7272..72734840                                              EXPR_VAR@7272..72734841                                                NAME@7272..72734842                                                  IDENT@7272..7273 "b"4843                                            L_BRACK@7273..7274 "["4844                                            EXPR_VAR@7274..72754845                                              NAME@7274..72754846                                                IDENT@7274..7275 "j"4847                                            R_BRACK@7275..7276 "]"4848                                          R_BRACK@7276..7277 "]"4849                                    R_PAREN@7277..7278 ")"4850                                    WHITESPACE@7278..7279 " "4851                                    TAILSTRICT_KW@7279..7289 "tailstrict"4852          SEMI@7289..7290 ";"4853          WHITESPACE@7290..7295 "\n    "4854          EXPR_APPLY@7295..73144855            EXPR_VAR@7295..72984856              NAME@7295..72984857                IDENT@7295..7298 "aux"4858            ARGS_DESC@7298..73144859              L_PAREN@7298..7299 "("4860              ARG@7299..73004861                EXPR_VAR@7299..73004862                  NAME@7299..73004863                    IDENT@7299..7300 "a"4864              COMMA@7300..7301 ","4865              WHITESPACE@7301..7302 " "4866              ARG@7302..73034867                EXPR_VAR@7302..73034868                  NAME@7302..73034869                    IDENT@7302..7303 "b"4870              COMMA@7303..7304 ","4871              WHITESPACE@7304..7305 " "4872              ARG@7305..73064873                EXPR_NUMBER@7305..73064874                  FLOAT@7305..7306 "0"4875              COMMA@7306..7307 ","4876              WHITESPACE@7307..7308 " "4877              ARG@7308..73094878                EXPR_NUMBER@7308..73094879                  FLOAT@7308..7309 "0"4880              COMMA@7309..7310 ","4881              WHITESPACE@7310..7311 " "4882              ARG@7311..73134883                EXPR_ARRAY@7311..73134884                  L_BRACK@7311..7312 "["4885                  R_BRACK@7312..7313 "]"4886              R_PAREN@7313..7314 ")"4887      COMMA@7314..7315 ","4888      WHITESPACE@7315..7319 "\n\n  "4889      MEMBER_FIELD_METHOD@7319..77414890        FIELD_NAME_FIXED@7319..73274891          NAME@7319..73274892            IDENT@7319..7327 "setInter"4893        PARAMS_DESC@7327..73424894          L_PAREN@7327..7328 "("4895          PARAM@7328..73294896            DESTRUCT_FULL@7328..73294897              NAME@7328..73294898                IDENT@7328..7329 "a"4899          COMMA@7329..7330 ","4900          WHITESPACE@7330..7331 " "4901          PARAM@7331..73324902            DESTRUCT_FULL@7331..73324903              NAME@7331..73324904                IDENT@7331..7332 "b"4905          COMMA@7332..7333 ","4906          WHITESPACE@7333..7334 " "4907          PARAM@7334..73414908            DESTRUCT_FULL@7334..73384909              NAME@7334..73384910                IDENT@7334..7338 "keyF"4911            ASSIGN@7338..7339 "="4912            EXPR_VAR@7339..73414913              NAME@7339..73414914                IDENT@7339..7341 "id"4915          R_PAREN@7341..7342 ")"4916        COLONCOLON@7342..7344 "::"4917        WHITESPACE@7344..7349 "\n    "4918        EXPR_LOCAL@7349..77414919          LOCAL_KW@7349..7354 "local"4920          WHITESPACE@7354..7355 " "4921          BIND_FUNCTION@7355..77054922            NAME@7355..73584923              IDENT@7355..7358 "aux"4924            PARAMS_DESC@7358..73754925              L_PAREN@7358..7359 "("4926              PARAM@7359..73604927                DESTRUCT_FULL@7359..73604928                  NAME@7359..73604929                    IDENT@7359..7360 "a"4930              COMMA@7360..7361 ","4931              WHITESPACE@7361..7362 " "4932              PARAM@7362..73634933                DESTRUCT_FULL@7362..73634934                  NAME@7362..73634935                    IDENT@7362..7363 "b"4936              COMMA@7363..7364 ","4937              WHITESPACE@7364..7365 " "4938              PARAM@7365..73664939                DESTRUCT_FULL@7365..73664940                  NAME@7365..73664941                    IDENT@7365..7366 "i"4942              COMMA@7366..7367 ","4943              WHITESPACE@7367..7368 " "4944              PARAM@7368..73694945                DESTRUCT_FULL@7368..73694946                  NAME@7368..73694947                    IDENT@7368..7369 "j"4948              COMMA@7369..7370 ","4949              WHITESPACE@7370..7371 " "4950              PARAM@7371..73744951                DESTRUCT_FULL@7371..73744952                  NAME@7371..73744953                    IDENT@7371..7374 "acc"4954              R_PAREN@7374..7375 ")"4955            WHITESPACE@7375..7376 " "4956            ASSIGN@7376..7377 "="4957            WHITESPACE@7377..7384 "\n      "4958            EXPR_IF_THEN_ELSE@7384..77054959              IF_KW@7384..7386 "if"4960              WHITESPACE@7386..7387 " "4961              EXPR_BINARY@7387..74274962                LHS_EXPR@7387..74054963                  EXPR_BINARY@7387..74054964                    LHS_EXPR@7387..73884965                      EXPR_VAR@7387..73884966                        NAME@7387..73884967                          IDENT@7387..7388 "i"4968                    WHITESPACE@7388..7389 " "4969                    GE@7389..7391 ">="4970                    WHITESPACE@7391..7392 " "4971                    EXPR_APPLY@7392..74054972                      EXPR_INDEX@7392..74024973                        EXPR_VAR@7392..73954974                          NAME@7392..73954975                            IDENT@7392..7395 "std"4976                        DOT@7395..7396 "."4977                        NAME@7396..74024978                          IDENT@7396..7402 "length"4979                      ARGS_DESC@7402..74054980                        L_PAREN@7402..7403 "("4981                        ARG@7403..74044982                          EXPR_VAR@7403..74044983                            NAME@7403..74044984                              IDENT@7403..7404 "a"4985                        R_PAREN@7404..7405 ")"4986                WHITESPACE@7405..7406 " "4987                OR@7406..7408 "||"4988                WHITESPACE@7408..7409 " "4989                EXPR_BINARY@7409..74274990                  LHS_EXPR@7409..74104991                    EXPR_VAR@7409..74104992                      NAME@7409..74104993                        IDENT@7409..7410 "j"4994                  WHITESPACE@7410..7411 " "4995                  GE@7411..7413 ">="4996                  WHITESPACE@7413..7414 " "4997                  EXPR_APPLY@7414..74274998                    EXPR_INDEX@7414..74244999                      EXPR_VAR@7414..74175000                        NAME@7414..74175001                          IDENT@7414..7417 "std"5002                      DOT@7417..7418 "."5003                      NAME@7418..74245004                        IDENT@7418..7424 "length"5005                    ARGS_DESC@7424..74275006                      L_PAREN@7424..7425 "("5007                      ARG@7425..74265008                        EXPR_VAR@7425..74265009                          NAME@7425..74265010                            IDENT@7425..7426 "b"5011                      R_PAREN@7426..7427 ")"5012              WHITESPACE@7427..7428 " "5013              THEN_KW@7428..7432 "then"5014              WHITESPACE@7432..7441 "\n        "5015              TRUE_EXPR@7441..74445016                EXPR_VAR@7441..74445017                  NAME@7441..74445018                    IDENT@7441..7444 "acc"5019              WHITESPACE@7444..7451 "\n      "5020              ELSE_KW@7451..7455 "else"5021              WHITESPACE@7455..7464 "\n        "5022              FALSE_EXPR@7464..77055023                EXPR_IF_THEN_ELSE@7464..77055024                  IF_KW@7464..7466 "if"5025                  WHITESPACE@7466..7467 " "5026                  EXPR_BINARY@7467..74915027                    LHS_EXPR@7467..74775028                      EXPR_APPLY@7467..74775029                        EXPR_VAR@7467..74715030                          NAME@7467..74715031                            IDENT@7467..7471 "keyF"5032                        ARGS_DESC@7471..74775033                          L_PAREN@7471..7472 "("5034                          ARG@7472..74765035                            EXPR_INDEX_EXPR@7472..74765036                              LHS_EXPR@7472..74735037                                EXPR_VAR@7472..74735038                                  NAME@7472..74735039                                    IDENT@7472..7473 "a"5040                              L_BRACK@7473..7474 "["5041                              EXPR_VAR@7474..74755042                                NAME@7474..74755043                                  IDENT@7474..7475 "i"5044                              R_BRACK@7475..7476 "]"5045                          R_PAREN@7476..7477 ")"5046                    WHITESPACE@7477..7478 " "5047                    EQ@7478..7480 "=="5048                    WHITESPACE@7480..7481 " "5049                    EXPR_APPLY@7481..74915050                      EXPR_VAR@7481..74855051                        NAME@7481..74855052                          IDENT@7481..7485 "keyF"5053                      ARGS_DESC@7485..74915054                        L_PAREN@7485..7486 "("5055                        ARG@7486..74905056                          EXPR_INDEX_EXPR@7486..74905057                            LHS_EXPR@7486..74875058                              EXPR_VAR@7486..74875059                                NAME@7486..74875060                                  IDENT@7486..7487 "b"5061                            L_BRACK@7487..7488 "["5062                            EXPR_VAR@7488..74895063                              NAME@7488..74895064                                IDENT@7488..7489 "j"5065                            R_BRACK@7489..7490 "]"5066                        R_PAREN@7490..7491 ")"5067                  WHITESPACE@7491..7492 " "5068                  THEN_KW@7492..7496 "then"5069                  WHITESPACE@7496..7507 "\n          "5070                  TRUE_EXPR@7507..75555071                    EXPR_APPLY@7507..75555072                      EXPR_VAR@7507..75105073                        NAME@7507..75105074                          IDENT@7507..7510 "aux"5075                      ARGS_DESC@7510..75555076                        L_PAREN@7510..7511 "("5077                        ARG@7511..75125078                          EXPR_VAR@7511..75125079                            NAME@7511..75125080                              IDENT@7511..7512 "a"5081                        COMMA@7512..7513 ","5082                        WHITESPACE@7513..7514 " "5083                        ARG@7514..75155084                          EXPR_VAR@7514..75155085                            NAME@7514..75155086                              IDENT@7514..7515 "b"5087                        COMMA@7515..7516 ","5088                        WHITESPACE@7516..7517 " "5089                        ARG@7517..75225090                          EXPR_BINARY@7517..75225091                            LHS_EXPR@7517..75185092                              EXPR_VAR@7517..75185093                                NAME@7517..75185094                                  IDENT@7517..7518 "i"5095                            WHITESPACE@7518..7519 " "5096                            PLUS@7519..7520 "+"5097                            WHITESPACE@7520..7521 " "5098                            EXPR_NUMBER@7521..75225099                              FLOAT@7521..7522 "1"5100                        COMMA@7522..7523 ","5101                        WHITESPACE@7523..7524 " "5102                        ARG@7524..75295103                          EXPR_BINARY@7524..75295104                            LHS_EXPR@7524..75255105                              EXPR_VAR@7524..75255106                                NAME@7524..75255107                                  IDENT@7524..7525 "j"5108                            WHITESPACE@7525..7526 " "5109                            PLUS@7526..7527 "+"5110                            WHITESPACE@7527..7528 " "5111                            EXPR_NUMBER@7528..75295112                              FLOAT@7528..7529 "1"5113                        COMMA@7529..7530 ","5114                        WHITESPACE@7530..7531 " "5115                        ARG@7531..75435116                          EXPR_BINARY@7531..75435117                            LHS_EXPR@7531..75345118                              EXPR_VAR@7531..75345119                                NAME@7531..75345120                                  IDENT@7531..7534 "acc"5121                            WHITESPACE@7534..7535 " "5122                            PLUS@7535..7536 "+"5123                            WHITESPACE@7536..7537 " "5124                            EXPR_ARRAY@7537..75435125                              L_BRACK@7537..7538 "["5126                              EXPR_INDEX_EXPR@7538..75425127                                LHS_EXPR@7538..75395128                                  EXPR_VAR@7538..75395129                                    NAME@7538..75395130                                      IDENT@7538..7539 "a"5131                                L_BRACK@7539..7540 "["5132                                EXPR_VAR@7540..75415133                                  NAME@7540..75415134                                    IDENT@7540..7541 "i"5135                                R_BRACK@7541..7542 "]"5136                              R_BRACK@7542..7543 "]"5137                        R_PAREN@7543..7544 ")"5138                        WHITESPACE@7544..7545 " "5139                        TAILSTRICT_KW@7545..7555 "tailstrict"5140                  WHITESPACE@7555..7564 "\n        "5141                  ELSE_KW@7564..7568 "else"5142                  WHITESPACE@7568..7569 " "5143                  FALSE_EXPR@7569..77055144                    EXPR_IF_THEN_ELSE@7569..77055145                      IF_KW@7569..7571 "if"5146                      WHITESPACE@7571..7572 " "5147                      EXPR_BINARY@7572..75955148                        LHS_EXPR@7572..75825149                          EXPR_APPLY@7572..75825150                            EXPR_VAR@7572..75765151                              NAME@7572..75765152                                IDENT@7572..7576 "keyF"5153                            ARGS_DESC@7576..75825154                              L_PAREN@7576..7577 "("5155                              ARG@7577..75815156                                EXPR_INDEX_EXPR@7577..75815157                                  LHS_EXPR@7577..75785158                                    EXPR_VAR@7577..75785159                                      NAME@7577..75785160                                        IDENT@7577..7578 "a"5161                                  L_BRACK@7578..7579 "["5162                                  EXPR_VAR@7579..75805163                                    NAME@7579..75805164                                      IDENT@7579..7580 "i"5165                                  R_BRACK@7580..7581 "]"5166                              R_PAREN@7581..7582 ")"5167                        WHITESPACE@7582..7583 " "5168                        LT@7583..7584 "<"5169                        WHITESPACE@7584..7585 " "5170                        EXPR_APPLY@7585..75955171                          EXPR_VAR@7585..75895172                            NAME@7585..75895173                              IDENT@7585..7589 "keyF"5174                          ARGS_DESC@7589..75955175                            L_PAREN@7589..7590 "("5176                            ARG@7590..75945177                              EXPR_INDEX_EXPR@7590..75945178                                LHS_EXPR@7590..75915179                                  EXPR_VAR@7590..75915180                                    NAME@7590..75915181                                      IDENT@7590..7591 "b"5182                                L_BRACK@7591..7592 "["5183                                EXPR_VAR@7592..75935184                                  NAME@7592..75935185                                    IDENT@7592..7593 "j"5186                                R_BRACK@7593..7594 "]"5187                            R_PAREN@7594..7595 ")"5188                      WHITESPACE@7595..7596 " "5189                      THEN_KW@7596..7600 "then"5190                      WHITESPACE@7600..7611 "\n          "5191                      TRUE_EXPR@7611..76465192                        EXPR_APPLY@7611..76465193                          EXPR_VAR@7611..76145194                            NAME@7611..76145195                              IDENT@7611..7614 "aux"5196                          ARGS_DESC@7614..76465197                            L_PAREN@7614..7615 "("5198                            ARG@7615..76165199                              EXPR_VAR@7615..76165200                                NAME@7615..76165201                                  IDENT@7615..7616 "a"5202                            COMMA@7616..7617 ","5203                            WHITESPACE@7617..7618 " "5204                            ARG@7618..76195205                              EXPR_VAR@7618..76195206                                NAME@7618..76195207                                  IDENT@7618..7619 "b"5208                            COMMA@7619..7620 ","5209                            WHITESPACE@7620..7621 " "5210                            ARG@7621..76265211                              EXPR_BINARY@7621..76265212                                LHS_EXPR@7621..76225213                                  EXPR_VAR@7621..76225214                                    NAME@7621..76225215                                      IDENT@7621..7622 "i"5216                                WHITESPACE@7622..7623 " "5217                                PLUS@7623..7624 "+"5218                                WHITESPACE@7624..7625 " "5219                                EXPR_NUMBER@7625..76265220                                  FLOAT@7625..7626 "1"5221                            COMMA@7626..7627 ","5222                            WHITESPACE@7627..7628 " "5223                            ARG@7628..76295224                              EXPR_VAR@7628..76295225                                NAME@7628..76295226                                  IDENT@7628..7629 "j"5227                            COMMA@7629..7630 ","5228                            WHITESPACE@7630..7631 " "5229                            ARG@7631..76345230                              EXPR_VAR@7631..76345231                                NAME@7631..76345232                                  IDENT@7631..7634 "acc"5233                            R_PAREN@7634..7635 ")"5234                            WHITESPACE@7635..7636 " "5235                            TAILSTRICT_KW@7636..7646 "tailstrict"5236                      WHITESPACE@7646..7655 "\n        "5237                      ELSE_KW@7655..7659 "else"5238                      WHITESPACE@7659..7670 "\n          "5239                      FALSE_EXPR@7670..77055240                        EXPR_APPLY@7670..77055241                          EXPR_VAR@7670..76735242                            NAME@7670..76735243                              IDENT@7670..7673 "aux"5244                          ARGS_DESC@7673..77055245                            L_PAREN@7673..7674 "("5246                            ARG@7674..76755247                              EXPR_VAR@7674..76755248                                NAME@7674..76755249                                  IDENT@7674..7675 "a"5250                            COMMA@7675..7676 ","5251                            WHITESPACE@7676..7677 " "5252                            ARG@7677..76785253                              EXPR_VAR@7677..76785254                                NAME@7677..76785255                                  IDENT@7677..7678 "b"5256                            COMMA@7678..7679 ","5257                            WHITESPACE@7679..7680 " "5258                            ARG@7680..76815259                              EXPR_VAR@7680..76815260                                NAME@7680..76815261                                  IDENT@7680..7681 "i"5262                            COMMA@7681..7682 ","5263                            WHITESPACE@7682..7683 " "5264                            ARG@7683..76885265                              EXPR_BINARY@7683..76885266                                LHS_EXPR@7683..76845267                                  EXPR_VAR@7683..76845268                                    NAME@7683..76845269                                      IDENT@7683..7684 "j"5270                                WHITESPACE@7684..7685 " "5271                                PLUS@7685..7686 "+"5272                                WHITESPACE@7686..7687 " "5273                                EXPR_NUMBER@7687..76885274                                  FLOAT@7687..7688 "1"5275                            COMMA@7688..7689 ","5276                            WHITESPACE@7689..7690 " "5277                            ARG@7690..76935278                              EXPR_VAR@7690..76935279                                NAME@7690..76935280                                  IDENT@7690..7693 "acc"5281                            R_PAREN@7693..7694 ")"5282                            WHITESPACE@7694..7695 " "5283                            TAILSTRICT_KW@7695..7705 "tailstrict"5284          SEMI@7705..7706 ";"5285          WHITESPACE@7706..7711 "\n    "5286          EXPR_APPLY@7711..77415287            EXPR_VAR@7711..77145288              NAME@7711..77145289                IDENT@7711..7714 "aux"5290            ARGS_DESC@7714..77415291              L_PAREN@7714..7715 "("5292              ARG@7715..77165293                EXPR_VAR@7715..77165294                  NAME@7715..77165295                    IDENT@7715..7716 "a"5296              COMMA@7716..7717 ","5297              WHITESPACE@7717..7718 " "5298              ARG@7718..77195299                EXPR_VAR@7718..77195300                  NAME@7718..77195301                    IDENT@7718..7719 "b"5302              COMMA@7719..7720 ","5303              WHITESPACE@7720..7721 " "5304              ARG@7721..77225305                EXPR_NUMBER@7721..77225306                  FLOAT@7721..7722 "0"5307              COMMA@7722..7723 ","5308              WHITESPACE@7723..7724 " "5309              ARG@7724..77255310                EXPR_NUMBER@7724..77255311                  FLOAT@7724..7725 "0"5312              COMMA@7725..7726 ","5313              WHITESPACE@7726..7727 " "5314              ARG@7727..77295315                EXPR_ARRAY@7727..77295316                  L_BRACK@7727..7728 "["5317                  R_BRACK@7728..7729 "]"5318              R_PAREN@7729..7730 ")"5319              WHITESPACE@7730..7731 " "5320              TAILSTRICT_KW@7731..7741 "tailstrict"5321      COMMA@7741..7742 ","5322      WHITESPACE@7742..7746 "\n\n  "5323      MEMBER_FIELD_METHOD@7746..82035324        FIELD_NAME_FIXED@7746..77535325          NAME@7746..77535326            IDENT@7746..7753 "setDiff"5327        PARAMS_DESC@7753..77685328          L_PAREN@7753..7754 "("5329          PARAM@7754..77555330            DESTRUCT_FULL@7754..77555331              NAME@7754..77555332                IDENT@7754..7755 "a"5333          COMMA@7755..7756 ","5334          WHITESPACE@7756..7757 " "5335          PARAM@7757..77585336            DESTRUCT_FULL@7757..77585337              NAME@7757..77585338                IDENT@7757..7758 "b"5339          COMMA@7758..7759 ","5340          WHITESPACE@7759..7760 " "5341          PARAM@7760..77675342            DESTRUCT_FULL@7760..77645343              NAME@7760..77645344                IDENT@7760..7764 "keyF"5345            ASSIGN@7764..7765 "="5346            EXPR_VAR@7765..77675347              NAME@7765..77675348                IDENT@7765..7767 "id"5349          R_PAREN@7767..7768 ")"5350        COLONCOLON@7768..7770 "::"5351        WHITESPACE@7770..7775 "\n    "5352        EXPR_LOCAL@7775..82035353          LOCAL_KW@7775..7780 "local"5354          WHITESPACE@7780..7781 " "5355          BIND_FUNCTION@7781..81675356            NAME@7781..77845357              IDENT@7781..7784 "aux"5358            PARAMS_DESC@7784..78015359              L_PAREN@7784..7785 "("5360              PARAM@7785..77865361                DESTRUCT_FULL@7785..77865362                  NAME@7785..77865363                    IDENT@7785..7786 "a"5364              COMMA@7786..7787 ","5365              WHITESPACE@7787..7788 " "5366              PARAM@7788..77895367                DESTRUCT_FULL@7788..77895368                  NAME@7788..77895369                    IDENT@7788..7789 "b"5370              COMMA@7789..7790 ","5371              WHITESPACE@7790..7791 " "5372              PARAM@7791..77925373                DESTRUCT_FULL@7791..77925374                  NAME@7791..77925375                    IDENT@7791..7792 "i"5376              COMMA@7792..7793 ","5377              WHITESPACE@7793..7794 " "5378              PARAM@7794..77955379                DESTRUCT_FULL@7794..77955380                  NAME@7794..77955381                    IDENT@7794..7795 "j"5382              COMMA@7795..7796 ","5383              WHITESPACE@7796..7797 " "5384              PARAM@7797..78005385                DESTRUCT_FULL@7797..78005386                  NAME@7797..78005387                    IDENT@7797..7800 "acc"5388              R_PAREN@7800..7801 ")"5389            WHITESPACE@7801..7802 " "5390            ASSIGN@7802..7803 "="5391            WHITESPACE@7803..7810 "\n      "5392            EXPR_IF_THEN_ELSE@7810..81675393              IF_KW@7810..7812 "if"5394              WHITESPACE@7812..7813 " "5395              EXPR_BINARY@7813..78315396                LHS_EXPR@7813..78145397                  EXPR_VAR@7813..78145398                    NAME@7813..78145399                      IDENT@7813..7814 "i"5400                WHITESPACE@7814..7815 " "5401                GE@7815..7817 ">="5402                WHITESPACE@7817..7818 " "5403                EXPR_APPLY@7818..78315404                  EXPR_INDEX@7818..78285405                    EXPR_VAR@7818..78215406                      NAME@7818..78215407                        IDENT@7818..7821 "std"5408                    DOT@7821..7822 "."5409                    NAME@7822..78285410                      IDENT@7822..7828 "length"5411                  ARGS_DESC@7828..78315412                    L_PAREN@7828..7829 "("5413                    ARG@7829..78305414                      EXPR_VAR@7829..78305415                        NAME@7829..78305416                          IDENT@7829..7830 "a"5417                    R_PAREN@7830..7831 ")"5418              WHITESPACE@7831..7832 " "5419              THEN_KW@7832..7836 "then"5420              WHITESPACE@7836..7845 "\n        "5421              TRUE_EXPR@7845..78485422                EXPR_VAR@7845..78485423                  NAME@7845..78485424                    IDENT@7845..7848 "acc"5425              WHITESPACE@7848..7855 "\n      "5426              ELSE_KW@7855..7859 "else"5427              WHITESPACE@7859..7860 " "5428              FALSE_EXPR@7860..81675429                EXPR_IF_THEN_ELSE@7860..81675430                  IF_KW@7860..7862 "if"5431                  WHITESPACE@7862..7863 " "5432                  EXPR_BINARY@7863..78815433                    LHS_EXPR@7863..78645434                      EXPR_VAR@7863..78645435                        NAME@7863..78645436                          IDENT@7863..7864 "j"5437                    WHITESPACE@7864..7865 " "5438                    GE@7865..7867 ">="5439                    WHITESPACE@7867..7868 " "5440                    EXPR_APPLY@7868..78815441                      EXPR_INDEX@7868..78785442                        EXPR_VAR@7868..78715443                          NAME@7868..78715444                            IDENT@7868..7871 "std"5445                        DOT@7871..7872 "."5446                        NAME@7872..78785447                          IDENT@7872..7878 "length"5448                      ARGS_DESC@7878..78815449                        L_PAREN@7878..7879 "("5450                        ARG@7879..78805451                          EXPR_VAR@7879..78805452                            NAME@7879..78805453                              IDENT@7879..7880 "b"5454                        R_PAREN@7880..7881 ")"5455                  WHITESPACE@7881..7882 " "5456                  THEN_KW@7882..7886 "then"5457                  WHITESPACE@7886..7895 "\n        "5458                  TRUE_EXPR@7895..79065459                    EXPR_BINARY@7895..79065460                      LHS_EXPR@7895..78985461                        EXPR_VAR@7895..78985462                          NAME@7895..78985463                            IDENT@7895..7898 "acc"5464                      WHITESPACE@7898..7899 " "5465                      PLUS@7899..7900 "+"5466                      WHITESPACE@7900..7901 " "5467                      EXPR_SLICE@7901..79065468                        EXPR_VAR@7901..79025469                          NAME@7901..79025470                            IDENT@7901..7902 "a"5471                        SLICE_DESC@7902..79065472                          L_BRACK@7902..7903 "["5473                          EXPR_VAR@7903..79045474                            NAME@7903..79045475                              IDENT@7903..7904 "i"5476                          COLON@7904..7905 ":"5477                          R_BRACK@7905..7906 "]"5478                  WHITESPACE@7906..7913 "\n      "5479                  ELSE_KW@7913..7917 "else"5480                  WHITESPACE@7917..7926 "\n        "5481                  FALSE_EXPR@7926..81675482                    EXPR_IF_THEN_ELSE@7926..81675483                      IF_KW@7926..7928 "if"5484                      WHITESPACE@7928..7929 " "5485                      EXPR_BINARY@7929..79535486                        LHS_EXPR@7929..79395487                          EXPR_APPLY@7929..79395488                            EXPR_VAR@7929..79335489                              NAME@7929..79335490                                IDENT@7929..7933 "keyF"5491                            ARGS_DESC@7933..79395492                              L_PAREN@7933..7934 "("5493                              ARG@7934..79385494                                EXPR_INDEX_EXPR@7934..79385495                                  LHS_EXPR@7934..79355496                                    EXPR_VAR@7934..79355497                                      NAME@7934..79355498                                        IDENT@7934..7935 "a"5499                                  L_BRACK@7935..7936 "["5500                                  EXPR_VAR@7936..79375501                                    NAME@7936..79375502                                      IDENT@7936..7937 "i"5503                                  R_BRACK@7937..7938 "]"5504                              R_PAREN@7938..7939 ")"5505                        WHITESPACE@7939..7940 " "5506                        EQ@7940..7942 "=="5507                        WHITESPACE@7942..7943 " "5508                        EXPR_APPLY@7943..79535509                          EXPR_VAR@7943..79475510                            NAME@7943..79475511                              IDENT@7943..7947 "keyF"5512                          ARGS_DESC@7947..79535513                            L_PAREN@7947..7948 "("5514                            ARG@7948..79525515                              EXPR_INDEX_EXPR@7948..79525516                                LHS_EXPR@7948..79495517                                  EXPR_VAR@7948..79495518                                    NAME@7948..79495519                                      IDENT@7948..7949 "b"5520                                L_BRACK@7949..7950 "["5521                                EXPR_VAR@7950..79515522                                  NAME@7950..79515523                                    IDENT@7950..7951 "j"5524                                R_BRACK@7951..7952 "]"5525                            R_PAREN@7952..7953 ")"5526                      WHITESPACE@7953..7954 " "5527                      THEN_KW@7954..7958 "then"5528                      WHITESPACE@7958..7969 "\n          "5529                      TRUE_EXPR@7969..80085530                        EXPR_APPLY@7969..80085531                          EXPR_VAR@7969..79725532                            NAME@7969..79725533                              IDENT@7969..7972 "aux"5534                          ARGS_DESC@7972..80085535                            L_PAREN@7972..7973 "("5536                            ARG@7973..79745537                              EXPR_VAR@7973..79745538                                NAME@7973..79745539                                  IDENT@7973..7974 "a"5540                            COMMA@7974..7975 ","5541                            WHITESPACE@7975..7976 " "5542                            ARG@7976..79775543                              EXPR_VAR@7976..79775544                                NAME@7976..79775545                                  IDENT@7976..7977 "b"5546                            COMMA@7977..7978 ","5547                            WHITESPACE@7978..7979 " "5548                            ARG@7979..79845549                              EXPR_BINARY@7979..79845550                                LHS_EXPR@7979..79805551                                  EXPR_VAR@7979..79805552                                    NAME@7979..79805553                                      IDENT@7979..7980 "i"5554                                WHITESPACE@7980..7981 " "5555                                PLUS@7981..7982 "+"5556                                WHITESPACE@7982..7983 " "5557                                EXPR_NUMBER@7983..79845558                                  FLOAT@7983..7984 "1"5559                            COMMA@7984..7985 ","5560                            WHITESPACE@7985..7986 " "5561                            ARG@7986..79915562                              EXPR_BINARY@7986..79915563                                LHS_EXPR@7986..79875564                                  EXPR_VAR@7986..79875565                                    NAME@7986..79875566                                      IDENT@7986..7987 "j"5567                                WHITESPACE@7987..7988 " "5568                                PLUS@7988..7989 "+"5569                                WHITESPACE@7989..7990 " "5570                                EXPR_NUMBER@7990..79915571                                  FLOAT@7990..7991 "1"5572                            COMMA@7991..7992 ","5573                            WHITESPACE@7992..7993 " "5574                            ARG@7993..79965575                              EXPR_VAR@7993..79965576                                NAME@7993..79965577                                  IDENT@7993..7996 "acc"5578                            R_PAREN@7996..7997 ")"5579                            WHITESPACE@7997..7998 " "5580                            TAILSTRICT_KW@7998..8008 "tailstrict"5581                      WHITESPACE@8008..8017 "\n        "5582                      ELSE_KW@8017..8021 "else"5583                      WHITESPACE@8021..8022 " "5584                      FALSE_EXPR@8022..81675585                        EXPR_IF_THEN_ELSE@8022..81675586                          IF_KW@8022..8024 "if"5587                          WHITESPACE@8024..8025 " "5588                          EXPR_BINARY@8025..80485589                            LHS_EXPR@8025..80355590                              EXPR_APPLY@8025..80355591                                EXPR_VAR@8025..80295592                                  NAME@8025..80295593                                    IDENT@8025..8029 "keyF"5594                                ARGS_DESC@8029..80355595                                  L_PAREN@8029..8030 "("5596                                  ARG@8030..80345597                                    EXPR_INDEX_EXPR@8030..80345598                                      LHS_EXPR@8030..80315599                                        EXPR_VAR@8030..80315600                                          NAME@8030..80315601                                            IDENT@8030..8031 "a"5602                                      L_BRACK@8031..8032 "["5603                                      EXPR_VAR@8032..80335604                                        NAME@8032..80335605                                          IDENT@8032..8033 "i"5606                                      R_BRACK@8033..8034 "]"5607                                  R_PAREN@8034..8035 ")"5608                            WHITESPACE@8035..8036 " "5609                            LT@8036..8037 "<"5610                            WHITESPACE@8037..8038 " "5611                            EXPR_APPLY@8038..80485612                              EXPR_VAR@8038..80425613                                NAME@8038..80425614                                  IDENT@8038..8042 "keyF"5615                              ARGS_DESC@8042..80485616                                L_PAREN@8042..8043 "("5617                                ARG@8043..80475618                                  EXPR_INDEX_EXPR@8043..80475619                                    LHS_EXPR@8043..80445620                                      EXPR_VAR@8043..80445621                                        NAME@8043..80445622                                          IDENT@8043..8044 "b"5623                                    L_BRACK@8044..8045 "["5624                                    EXPR_VAR@8045..80465625                                      NAME@8045..80465626                                        IDENT@8045..8046 "j"5627                                    R_BRACK@8046..8047 "]"5628                                R_PAREN@8047..8048 ")"5629                          WHITESPACE@8048..8049 " "5630                          THEN_KW@8049..8053 "then"5631                          WHITESPACE@8053..8064 "\n          "5632                          TRUE_EXPR@8064..81085633                            EXPR_APPLY@8064..81085634                              EXPR_VAR@8064..80675635                                NAME@8064..80675636                                  IDENT@8064..8067 "aux"5637                              ARGS_DESC@8067..81085638                                L_PAREN@8067..8068 "("5639                                ARG@8068..80695640                                  EXPR_VAR@8068..80695641                                    NAME@8068..80695642                                      IDENT@8068..8069 "a"5643                                COMMA@8069..8070 ","5644                                WHITESPACE@8070..8071 " "5645                                ARG@8071..80725646                                  EXPR_VAR@8071..80725647                                    NAME@8071..80725648                                      IDENT@8071..8072 "b"5649                                COMMA@8072..8073 ","5650                                WHITESPACE@8073..8074 " "5651                                ARG@8074..80795652                                  EXPR_BINARY@8074..80795653                                    LHS_EXPR@8074..80755654                                      EXPR_VAR@8074..80755655                                        NAME@8074..80755656                                          IDENT@8074..8075 "i"5657                                    WHITESPACE@8075..8076 " "5658                                    PLUS@8076..8077 "+"5659                                    WHITESPACE@8077..8078 " "5660                                    EXPR_NUMBER@8078..80795661                                      FLOAT@8078..8079 "1"5662                                COMMA@8079..8080 ","5663                                WHITESPACE@8080..8081 " "5664                                ARG@8081..80825665                                  EXPR_VAR@8081..80825666                                    NAME@8081..80825667                                      IDENT@8081..8082 "j"5668                                COMMA@8082..8083 ","5669                                WHITESPACE@8083..8084 " "5670                                ARG@8084..80965671                                  EXPR_BINARY@8084..80965672                                    LHS_EXPR@8084..80875673                                      EXPR_VAR@8084..80875674                                        NAME@8084..80875675                                          IDENT@8084..8087 "acc"5676                                    WHITESPACE@8087..8088 " "5677                                    PLUS@8088..8089 "+"5678                                    WHITESPACE@8089..8090 " "5679                                    EXPR_ARRAY@8090..80965680                                      L_BRACK@8090..8091 "["5681                                      EXPR_INDEX_EXPR@8091..80955682                                        LHS_EXPR@8091..80925683                                          EXPR_VAR@8091..80925684                                            NAME@8091..80925685                                              IDENT@8091..8092 "a"5686                                        L_BRACK@8092..8093 "["5687                                        EXPR_VAR@8093..80945688                                          NAME@8093..80945689                                            IDENT@8093..8094 "i"5690                                        R_BRACK@8094..8095 "]"5691                                      R_BRACK@8095..8096 "]"5692                                R_PAREN@8096..8097 ")"5693                                WHITESPACE@8097..8098 " "5694                                TAILSTRICT_KW@8098..8108 "tailstrict"5695                          WHITESPACE@8108..8117 "\n        "5696                          ELSE_KW@8117..8121 "else"5697                          WHITESPACE@8121..8132 "\n          "5698                          FALSE_EXPR@8132..81675699                            EXPR_APPLY@8132..81675700                              EXPR_VAR@8132..81355701                                NAME@8132..81355702                                  IDENT@8132..8135 "aux"5703                              ARGS_DESC@8135..81675704                                L_PAREN@8135..8136 "("5705                                ARG@8136..81375706                                  EXPR_VAR@8136..81375707                                    NAME@8136..81375708                                      IDENT@8136..8137 "a"5709                                COMMA@8137..8138 ","5710                                WHITESPACE@8138..8139 " "5711                                ARG@8139..81405712                                  EXPR_VAR@8139..81405713                                    NAME@8139..81405714                                      IDENT@8139..8140 "b"5715                                COMMA@8140..8141 ","5716                                WHITESPACE@8141..8142 " "5717                                ARG@8142..81435718                                  EXPR_VAR@8142..81435719                                    NAME@8142..81435720                                      IDENT@8142..8143 "i"5721                                COMMA@8143..8144 ","5722                                WHITESPACE@8144..8145 " "5723                                ARG@8145..81505724                                  EXPR_BINARY@8145..81505725                                    LHS_EXPR@8145..81465726                                      EXPR_VAR@8145..81465727                                        NAME@8145..81465728                                          IDENT@8145..8146 "j"5729                                    WHITESPACE@8146..8147 " "5730                                    PLUS@8147..8148 "+"5731                                    WHITESPACE@8148..8149 " "5732                                    EXPR_NUMBER@8149..81505733                                      FLOAT@8149..8150 "1"5734                                COMMA@8150..8151 ","5735                                WHITESPACE@8151..8152 " "5736                                ARG@8152..81555737                                  EXPR_VAR@8152..81555738                                    NAME@8152..81555739                                      IDENT@8152..8155 "acc"5740                                R_PAREN@8155..8156 ")"5741                                WHITESPACE@8156..8157 " "5742                                TAILSTRICT_KW@8157..8167 "tailstrict"5743          SEMI@8167..8168 ";"5744          WHITESPACE@8168..8173 "\n    "5745          EXPR_APPLY@8173..82035746            EXPR_VAR@8173..81765747              NAME@8173..81765748                IDENT@8173..8176 "aux"5749            ARGS_DESC@8176..82035750              L_PAREN@8176..8177 "("5751              ARG@8177..81785752                EXPR_VAR@8177..81785753                  NAME@8177..81785754                    IDENT@8177..8178 "a"5755              COMMA@8178..8179 ","5756              WHITESPACE@8179..8180 " "5757              ARG@8180..81815758                EXPR_VAR@8180..81815759                  NAME@8180..81815760                    IDENT@8180..8181 "b"5761              COMMA@8181..8182 ","5762              WHITESPACE@8182..8183 " "5763              ARG@8183..81845764                EXPR_NUMBER@8183..81845765                  FLOAT@8183..8184 "0"5766              COMMA@8184..8185 ","5767              WHITESPACE@8185..8186 " "5768              ARG@8186..81875769                EXPR_NUMBER@8186..81875770                  FLOAT@8186..8187 "0"5771              COMMA@8187..8188 ","5772              WHITESPACE@8188..8189 " "5773              ARG@8189..81915774                EXPR_ARRAY@8189..81915775                  L_BRACK@8189..8190 "["5776                  R_BRACK@8190..8191 "]"5777              R_PAREN@8191..8192 ")"5778              WHITESPACE@8192..8193 " "5779              TAILSTRICT_KW@8193..8203 "tailstrict"5780      COMMA@8203..8204 ","5781      WHITESPACE@8204..8208 "\n\n  "5782      MEMBER_FIELD_METHOD@8208..89965783        FIELD_NAME_FIXED@8208..82185784          NAME@8208..82185785            IDENT@8208..8218 "mergePatch"5786        PARAMS_DESC@8218..82335787          L_PAREN@8218..8219 "("5788          PARAM@8219..82255789            DESTRUCT_FULL@8219..82255790              NAME@8219..82255791                IDENT@8219..8225 "target"5792          COMMA@8225..8226 ","5793          WHITESPACE@8226..8227 " "5794          PARAM@8227..82325795            DESTRUCT_FULL@8227..82325796              NAME@8227..82325797                IDENT@8227..8232 "patch"5798          R_PAREN@8232..8233 ")"5799        COLONCOLON@8233..8235 "::"5800        WHITESPACE@8235..8240 "\n    "5801        EXPR_IF_THEN_ELSE@8240..89965802          IF_KW@8240..8242 "if"5803          WHITESPACE@8242..8243 " "5804          EXPR_APPLY@8243..82625805            EXPR_INDEX@8243..82555806              EXPR_VAR@8243..82465807                NAME@8243..82465808                  IDENT@8243..8246 "std"5809              DOT@8246..8247 "."5810              NAME@8247..82555811                IDENT@8247..8255 "isObject"5812            ARGS_DESC@8255..82625813              L_PAREN@8255..8256 "("5814              ARG@8256..82615815                EXPR_VAR@8256..82615816                  NAME@8256..82615817                    IDENT@8256..8261 "patch"5818              R_PAREN@8261..8262 ")"5819          WHITESPACE@8262..8263 " "5820          THEN_KW@8263..8267 "then"5821          WHITESPACE@8267..8274 "\n      "5822          TRUE_EXPR@8274..89755823            EXPR_LOCAL@8274..89755824              LOCAL_KW@8274..8279 "local"5825              WHITESPACE@8279..8280 " "5826              BIND_DESTRUCT@8280..83475827                DESTRUCT_FULL@8280..82935828                  NAME@8280..82935829                    IDENT@8280..8293 "target_object"5830                WHITESPACE@8293..8294 " "5831                ASSIGN@8294..8295 "="5832                WHITESPACE@8295..8304 "\n        "5833                EXPR_IF_THEN_ELSE@8304..83475834                  IF_KW@8304..8306 "if"5835                  WHITESPACE@8306..8307 " "5836                  EXPR_APPLY@8307..83275837                    EXPR_INDEX@8307..83195838                      EXPR_VAR@8307..83105839                        NAME@8307..83105840                          IDENT@8307..8310 "std"5841                      DOT@8310..8311 "."5842                      NAME@8311..83195843                        IDENT@8311..8319 "isObject"5844                    ARGS_DESC@8319..83275845                      L_PAREN@8319..8320 "("5846                      ARG@8320..83265847                        EXPR_VAR@8320..83265848                          NAME@8320..83265849                            IDENT@8320..8326 "target"5850                      R_PAREN@8326..8327 ")"5851                  WHITESPACE@8327..8328 " "5852                  THEN_KW@8328..8332 "then"5853                  WHITESPACE@8332..8333 " "5854                  TRUE_EXPR@8333..83395855                    EXPR_VAR@8333..83395856                      NAME@8333..83395857                        IDENT@8333..8339 "target"5858                  WHITESPACE@8339..8340 " "5859                  ELSE_KW@8340..8344 "else"5860                  WHITESPACE@8344..8345 " "5861                  FALSE_EXPR@8345..83475862                    EXPR_OBJECT@8345..83475863                      OBJ_BODY_MEMBER_LIST@8345..83475864                        L_BRACE@8345..8346 "{"5865                        R_BRACE@8346..8347 "}"5866              SEMI@8347..8348 ";"5867              WHITESPACE@8348..8356 "\n\n      "5868              EXPR_LOCAL@8356..89755869                LOCAL_KW@8356..8361 "local"5870                WHITESPACE@8361..8362 " "5871                BIND_DESTRUCT@8362..84615872                  DESTRUCT_FULL@8362..83755873                    NAME@8362..83755874                      IDENT@8362..8375 "target_fields"5875                  WHITESPACE@8375..8376 " "5876                  ASSIGN@8376..8377 "="5877                  WHITESPACE@8377..8386 "\n        "5878                  EXPR_IF_THEN_ELSE@8386..84615879                    IF_KW@8386..8388 "if"5880                    WHITESPACE@8388..8389 " "5881                    EXPR_APPLY@8389..84165882                      EXPR_INDEX@8389..84015883                        EXPR_VAR@8389..83925884                          NAME@8389..83925885                            IDENT@8389..8392 "std"5886                        DOT@8392..8393 "."5887                        NAME@8393..84015888                          IDENT@8393..8401 "isObject"5889                      ARGS_DESC@8401..84165890                        L_PAREN@8401..8402 "("5891                        ARG@8402..84155892                          EXPR_VAR@8402..84155893                            NAME@8402..84155894                              IDENT@8402..8415 "target_object"5895                        R_PAREN@8415..8416 ")"5896                    WHITESPACE@8416..8417 " "5897                    THEN_KW@8417..8421 "then"5898                    WHITESPACE@8421..8422 " "5899                    TRUE_EXPR@8422..84535900                      EXPR_APPLY@8422..84535901                        EXPR_INDEX@8422..84385902                          EXPR_VAR@8422..84255903                            NAME@8422..84255904                              IDENT@8422..8425 "std"5905                          DOT@8425..8426 "."5906                          NAME@8426..84385907                            IDENT@8426..8438 "objectFields"5908                        ARGS_DESC@8438..84535909                          L_PAREN@8438..8439 "("5910                          ARG@8439..84525911                            EXPR_VAR@8439..84525912                              NAME@8439..84525913                                IDENT@8439..8452 "target_object"5914                          R_PAREN@8452..8453 ")"5915                    WHITESPACE@8453..8454 " "5916                    ELSE_KW@8454..8458 "else"5917                    WHITESPACE@8458..8459 " "5918                    FALSE_EXPR@8459..84615919                      EXPR_ARRAY@8459..84615920                        L_BRACK@8459..8460 "["5921                        R_BRACK@8460..8461 "]"5922                SEMI@8461..8462 ";"5923                WHITESPACE@8462..8470 "\n\n      "5924                EXPR_LOCAL@8470..89755925                  LOCAL_KW@8470..8475 "local"5926                  WHITESPACE@8475..8476 " "5927                  BIND_DESTRUCT@8476..85465928                    DESTRUCT_FULL@8476..84875929                      NAME@8476..84875930                        IDENT@8476..8487 "null_fields"5931                    WHITESPACE@8487..8488 " "5932                    ASSIGN@8488..8489 "="5933                    WHITESPACE@8489..8490 " "5934                    EXPR_ARRAY_COMP@8490..85465935                      L_BRACK@8490..8491 "["5936                      EXPR_VAR@8491..84925937                        NAME@8491..84925938                          IDENT@8491..8492 "k"5939                      WHITESPACE@8492..8493 " "5940                      FOR_SPEC@8493..85255941                        FOR_KW@8493..8496 "for"5942                        WHITESPACE@8496..8497 " "5943                        NAME@8497..84985944                          IDENT@8497..8498 "k"5945                        WHITESPACE@8498..8499 " "5946                        IN_KW@8499..8501 "in"5947                        WHITESPACE@8501..8502 " "5948                        EXPR_APPLY@8502..85255949                          EXPR_INDEX@8502..85185950                            EXPR_VAR@8502..85055951                              NAME@8502..85055952                                IDENT@8502..8505 "std"5953                            DOT@8505..8506 "."5954                            NAME@8506..85185955                              IDENT@8506..8518 "objectFields"5956                          ARGS_DESC@8518..85255957                            L_PAREN@8518..8519 "("5958                            ARG@8519..85245959                              EXPR_VAR@8519..85245960                                NAME@8519..85245961                                  IDENT@8519..8524 "patch"5962                            R_PAREN@8524..8525 ")"5963                      WHITESPACE@8525..8526 " "5964                      IF_SPEC@8526..85455965                        IF_KW@8526..8528 "if"5966                        WHITESPACE@8528..8529 " "5967                        EXPR_BINARY@8529..85455968                          LHS_EXPR@8529..85375969                            EXPR_INDEX_EXPR@8529..85375970                              LHS_EXPR@8529..85345971                                EXPR_VAR@8529..85345972                                  NAME@8529..85345973                                    IDENT@8529..8534 "patch"5974                              L_BRACK@8534..8535 "["5975                              EXPR_VAR@8535..85365976                                NAME@8535..85365977                                  IDENT@8535..8536 "k"5978                              R_BRACK@8536..8537 "]"5979                          WHITESPACE@8537..8538 " "5980                          EQ@8538..8540 "=="5981                          WHITESPACE@8540..8541 " "5982                          EXPR_LITERAL@8541..85455983                            NULL_KW@8541..8545 "null"5984                      R_BRACK@8545..8546 "]"5985                  SEMI@8546..8547 ";"5986                  WHITESPACE@8547..8554 "\n      "5987                  EXPR_LOCAL@8554..89755988                    LOCAL_KW@8554..8559 "local"5989                    WHITESPACE@8559..8560 " "5990                    BIND_DESTRUCT@8560..86265991                      DESTRUCT_FULL@8560..85715992                        NAME@8560..85715993                          IDENT@8560..8571 "both_fields"5994                      WHITESPACE@8571..8572 " "5995                      ASSIGN@8572..8573 "="5996                      WHITESPACE@8573..8574 " "5997                      EXPR_APPLY@8574..86265998                        EXPR_INDEX@8574..85865999                          EXPR_VAR@8574..85776000                            NAME@8574..85776001                              IDENT@8574..8577 "std"6002                          DOT@8577..8578 "."6003                          NAME@8578..85866004                            IDENT@8578..8586 "setUnion"6005                        ARGS_DESC@8586..86266006                          L_PAREN@8586..8587 "("6007                          ARG@8587..86006008                            EXPR_VAR@8587..86006009                              NAME@8587..86006010                                IDENT@8587..8600 "target_fields"6011                          COMMA@8600..8601 ","6012                          WHITESPACE@8601..8602 " "6013                          ARG@8602..86256014                            EXPR_APPLY@8602..86256015                              EXPR_INDEX@8602..86186016                                EXPR_VAR@8602..86056017                                  NAME@8602..86056018                                    IDENT@8602..8605 "std"6019                                DOT@8605..8606 "."6020                                NAME@8606..86186021                                  IDENT@8606..8618 "objectFields"6022                              ARGS_DESC@8618..86256023                                L_PAREN@8618..8619 "("6024                                ARG@8619..86246025                                  EXPR_VAR@8619..86246026                                    NAME@8619..86246027                                      IDENT@8619..8624 "patch"6028                                R_PAREN@8624..8625 ")"6029                          R_PAREN@8625..8626 ")"6030                    SEMI@8626..8627 ";"6031                    WHITESPACE@8627..8635 "\n\n      "6032                    EXPR_OBJECT@8635..89756033                      OBJ_BODY_COMP@8635..89756034                        L_BRACE@8635..8636 "{"6035                        WHITESPACE@8636..8645 "\n        "6036                        MEMBER_FIELD_NORMAL@8645..89126037                          FIELD_NAME_DYNAMIC@8645..86486038                            L_BRACK@8645..8646 "["6039                            EXPR_VAR@8646..86476040                              NAME@8646..86476041                                IDENT@8646..8647 "k"6042                            R_BRACK@8647..8648 "]"6043                          COLON@8648..8649 ":"6044                          WHITESPACE@8649..8660 "\n          "6045                          EXPR_IF_THEN_ELSE@8660..89126046                            IF_KW@8660..8662 "if"6047                            WHITESPACE@8662..8663 " "6048                            EXPR_UNARY@8663..86876049                              NOT@8663..8664 "!"6050                              EXPR_APPLY@8664..86876051                                EXPR_INDEX@8664..86776052                                  EXPR_VAR@8664..86676053                                    NAME@8664..86676054                                      IDENT@8664..8667 "std"6055                                  DOT@8667..8668 "."6056                                  NAME@8668..86776057                                    IDENT@8668..8677 "objectHas"6058                                ARGS_DESC@8677..86876059                                  L_PAREN@8677..8678 "("6060                                  ARG@8678..86836061                                    EXPR_VAR@8678..86836062                                      NAME@8678..86836063                                        IDENT@8678..8683 "patch"6064                                  COMMA@8683..8684 ","6065                                  WHITESPACE@8684..8685 " "6066                                  ARG@8685..86866067                                    EXPR_VAR@8685..86866068                                      NAME@8685..86866069                                        IDENT@8685..8686 "k"6070                                  R_PAREN@8686..8687 ")"6071                            WHITESPACE@8687..8688 " "6072                            THEN_KW@8688..8692 "then"6073                            WHITESPACE@8692..8705 "\n            "6074                            TRUE_EXPR@8705..87216075                              EXPR_INDEX_EXPR@8705..87216076                                LHS_EXPR@8705..87186077                                  EXPR_VAR@8705..87186078                                    NAME@8705..87186079                                      IDENT@8705..8718 "target_object"6080                                L_BRACK@8718..8719 "["6081                                EXPR_VAR@8719..87206082                                  NAME@8719..87206083                                    IDENT@8719..8720 "k"6084                                R_BRACK@8720..8721 "]"6085                            WHITESPACE@8721..8732 "\n          "6086                            ELSE_KW@8732..8736 "else"6087                            WHITESPACE@8736..8737 " "6088                            FALSE_EXPR@8737..89126089                              EXPR_IF_THEN_ELSE@8737..89126090                                IF_KW@8737..8739 "if"6091                                WHITESPACE@8739..8740 " "6092                                EXPR_UNARY@8740..87726093                                  NOT@8740..8741 "!"6094                                  EXPR_APPLY@8741..87726095                                    EXPR_INDEX@8741..87546096                                      EXPR_VAR@8741..87446097                                        NAME@8741..87446098                                          IDENT@8741..8744 "std"6099                                      DOT@8744..8745 "."6100                                      NAME@8745..87546101                                        IDENT@8745..8754 "objectHas"6102                                    ARGS_DESC@8754..87726103                                      L_PAREN@8754..8755 "("6104                                      ARG@8755..87686105                                        EXPR_VAR@8755..87686106                                          NAME@8755..87686107                                            IDENT@8755..8768 "target_object"6108                                      COMMA@8768..8769 ","6109                                      WHITESPACE@8769..8770 " "6110                                      ARG@8770..87716111                                        EXPR_VAR@8770..87716112                                          NAME@8770..87716113                                            IDENT@8770..8771 "k"6114                                      R_PAREN@8771..8772 ")"6115                                WHITESPACE@8772..8773 " "6116                                THEN_KW@8773..8777 "then"6117                                WHITESPACE@8777..8790 "\n            "6118                                TRUE_EXPR@8790..88316119                                  EXPR_APPLY@8790..88316120                                    EXPR_INDEX@8790..88046121                                      EXPR_VAR@8790..87936122                                        NAME@8790..87936123                                          IDENT@8790..8793 "std"6124                                      DOT@8793..8794 "."6125                                      NAME@8794..88046126                                        IDENT@8794..8804 "mergePatch"6127                                    ARGS_DESC@8804..88316128                                      L_PAREN@8804..8805 "("6129                                      ARG@8805..88096130                                        EXPR_LITERAL@8805..88096131                                          NULL_KW@8805..8809 "null"6132                                      COMMA@8809..8810 ","6133                                      WHITESPACE@8810..8811 " "6134                                      ARG@8811..88196135                                        EXPR_INDEX_EXPR@8811..88196136                                          LHS_EXPR@8811..88166137                                            EXPR_VAR@8811..88166138                                              NAME@8811..88166139                                                IDENT@8811..8816 "patch"6140                                          L_BRACK@8816..8817 "["6141                                          EXPR_VAR@8817..88186142                                            NAME@8817..88186143                                              IDENT@8817..8818 "k"6144                                          R_BRACK@8818..8819 "]"6145                                      R_PAREN@8819..8820 ")"6146                                      WHITESPACE@8820..8821 " "6147                                      TAILSTRICT_KW@8821..8831 "tailstrict"6148                                WHITESPACE@8831..8842 "\n          "6149                                ELSE_KW@8842..8846 "else"6150                                WHITESPACE@8846..8859 "\n            "6151                                FALSE_EXPR@8859..89126152                                  EXPR_APPLY@8859..89126153                                    EXPR_INDEX@8859..88736154                                      EXPR_VAR@8859..88626155                                        NAME@8859..88626156                                          IDENT@8859..8862 "std"6157                                      DOT@8862..8863 "."6158                                      NAME@8863..88736159                                        IDENT@8863..8873 "mergePatch"6160                                    ARGS_DESC@8873..89126161                                      L_PAREN@8873..8874 "("6162                                      ARG@8874..88906163                                        EXPR_INDEX_EXPR@8874..88906164                                          LHS_EXPR@8874..88876165                                            EXPR_VAR@8874..88876166                                              NAME@8874..88876167                                                IDENT@8874..8887 "target_object"6168                                          L_BRACK@8887..8888 "["6169                                          EXPR_VAR@8888..88896170                                            NAME@8888..88896171                                              IDENT@8888..8889 "k"6172                                          R_BRACK@8889..8890 "]"6173                                      COMMA@8890..8891 ","6174                                      WHITESPACE@8891..8892 " "6175                                      ARG@8892..89006176                                        EXPR_INDEX_EXPR@8892..89006177                                          LHS_EXPR@8892..88976178                                            EXPR_VAR@8892..88976179                                              NAME@8892..88976180                                                IDENT@8892..8897 "patch"6181                                          L_BRACK@8897..8898 "["6182                                          EXPR_VAR@8898..88996183                                            NAME@8898..88996184                                              IDENT@8898..8899 "k"6185                                          R_BRACK@8899..8900 "]"6186                                      R_PAREN@8900..8901 ")"6187                                      WHITESPACE@8901..8902 " "6188                                      TAILSTRICT_KW@8902..8912 "tailstrict"6189                        WHITESPACE@8912..8921 "\n        "6190                        FOR_SPEC@8921..89676191                          FOR_KW@8921..8924 "for"6192                          WHITESPACE@8924..8925 " "6193                          NAME@8925..89266194                            IDENT@8925..8926 "k"6195                          WHITESPACE@8926..8927 " "6196                          IN_KW@8927..8929 "in"6197                          WHITESPACE@8929..8930 " "6198                          EXPR_APPLY@8930..89676199                            EXPR_INDEX@8930..89416200                              EXPR_VAR@8930..89336201                                NAME@8930..89336202                                  IDENT@8930..8933 "std"6203                              DOT@8933..8934 "."6204                              NAME@8934..89416205                                IDENT@8934..8941 "setDiff"6206                            ARGS_DESC@8941..89676207                              L_PAREN@8941..8942 "("6208                              ARG@8942..89536209                                EXPR_VAR@8942..89536210                                  NAME@8942..89536211                                    IDENT@8942..8953 "both_fields"6212                              COMMA@8953..8954 ","6213                              WHITESPACE@8954..8955 " "6214                              ARG@8955..89666215                                EXPR_VAR@8955..89666216                                  NAME@8955..89666217                                    IDENT@8955..8966 "null_fields"6218                              R_PAREN@8966..8967 ")"6219                        WHITESPACE@8967..8974 "\n      "6220                        R_BRACE@8974..8975 "}"6221          WHITESPACE@8975..8980 "\n    "6222          ELSE_KW@8980..8984 "else"6223          WHITESPACE@8984..8991 "\n      "6224          FALSE_EXPR@8991..89966225            EXPR_VAR@8991..89966226              NAME@8991..89966227                IDENT@8991..8996 "patch"6228      COMMA@8996..8997 ","6229      WHITESPACE@8997..9001 "\n\n  "6230      MEMBER_FIELD_METHOD@9001..91076231        FIELD_NAME_FIXED@9001..90046232          NAME@9001..90046233            IDENT@9001..9004 "get"6234        PARAMS_DESC@9004..90416235          L_PAREN@9004..9005 "("6236          PARAM@9005..90066237            DESTRUCT_FULL@9005..90066238              NAME@9005..90066239                IDENT@9005..9006 "o"6240          COMMA@9006..9007 ","6241          WHITESPACE@9007..9008 " "6242          PARAM@9008..90096243            DESTRUCT_FULL@9008..90096244              NAME@9008..90096245                IDENT@9008..9009 "f"6246          COMMA@9009..9010 ","6247          WHITESPACE@9010..9011 " "6248          PARAM@9011..90236249            DESTRUCT_FULL@9011..90186250              NAME@9011..90186251                IDENT@9011..9018 "default"6252            ASSIGN@9018..9019 "="6253            EXPR_LITERAL@9019..90236254              NULL_KW@9019..9023 "null"6255          COMMA@9023..9024 ","6256          WHITESPACE@9024..9025 " "6257          PARAM@9025..90406258            DESTRUCT_FULL@9025..90356259              NAME@9025..90356260                IDENT@9025..9035 "inc_hidden"6261            ASSIGN@9035..9036 "="6262            EXPR_LITERAL@9036..90406263              TRUE_KW@9036..9040 "true"6264          R_PAREN@9040..9041 ")"6265        COLONCOLON@9041..9043 "::"6266        WHITESPACE@9043..9048 "\n    "6267        EXPR_IF_THEN_ELSE@9048..91076268          IF_KW@9048..9050 "if"6269          WHITESPACE@9050..9051 " "6270          EXPR_APPLY@9051..90846271            EXPR_INDEX@9051..90666272              EXPR_VAR@9051..90546273                NAME@9051..90546274                  IDENT@9051..9054 "std"6275              DOT@9054..9055 "."6276              NAME@9055..90666277                IDENT@9055..9066 "objectHasEx"6278            ARGS_DESC@9066..90846279              L_PAREN@9066..9067 "("6280              ARG@9067..90686281                EXPR_VAR@9067..90686282                  NAME@9067..90686283                    IDENT@9067..9068 "o"6284              COMMA@9068..9069 ","6285              WHITESPACE@9069..9070 " "6286              ARG@9070..90716287                EXPR_VAR@9070..90716288                  NAME@9070..90716289                    IDENT@9070..9071 "f"6290              COMMA@9071..9072 ","6291              WHITESPACE@9072..9073 " "6292              ARG@9073..90836293                EXPR_VAR@9073..90836294                  NAME@9073..90836295                    IDENT@9073..9083 "inc_hidden"6296              R_PAREN@9083..9084 ")"6297          WHITESPACE@9084..9085 " "6298          THEN_KW@9085..9089 "then"6299          WHITESPACE@9089..9090 " "6300          TRUE_EXPR@9090..90946301            EXPR_INDEX_EXPR@9090..90946302              LHS_EXPR@9090..90916303                EXPR_VAR@9090..90916304                  NAME@9090..90916305                    IDENT@9090..9091 "o"6306              L_BRACK@9091..9092 "["6307              EXPR_VAR@9092..90936308                NAME@9092..90936309                  IDENT@9092..9093 "f"6310              R_BRACK@9093..9094 "]"6311          WHITESPACE@9094..9095 " "6312          ELSE_KW@9095..9099 "else"6313          WHITESPACE@9099..9100 " "6314          FALSE_EXPR@9100..91076315            EXPR_VAR@9100..91076316              NAME@9100..91076317                IDENT@9100..9107 "default"6318      COMMA@9107..9108 ","6319      WHITESPACE@9108..9112 "\n\n  "6320      MEMBER_FIELD_METHOD@9112..91626321        FIELD_NAME_FIXED@9112..91246322          NAME@9112..91246323            IDENT@9112..9124 "objectFields"6324        PARAMS_DESC@9124..91276325          L_PAREN@9124..9125 "("6326          PARAM@9125..91266327            DESTRUCT_FULL@9125..91266328              NAME@9125..91266329                IDENT@9125..9126 "o"6330          R_PAREN@9126..9127 ")"6331        COLONCOLON@9127..9129 "::"6332        WHITESPACE@9129..9134 "\n    "6333        EXPR_APPLY@9134..91626334          EXPR_INDEX@9134..91526335            EXPR_VAR@9134..91376336              NAME@9134..91376337                IDENT@9134..9137 "std"6338            DOT@9137..9138 "."6339            NAME@9138..91526340              IDENT@9138..9152 "objectFieldsEx"6341          ARGS_DESC@9152..91626342            L_PAREN@9152..9153 "("6343            ARG@9153..91546344              EXPR_VAR@9153..91546345                NAME@9153..91546346                  IDENT@9153..9154 "o"6347            COMMA@9154..9155 ","6348            WHITESPACE@9155..9156 " "6349            ARG@9156..91616350              EXPR_LITERAL@9156..91616351                FALSE_KW@9156..9161 "false"6352            R_PAREN@9161..9162 ")"6353      COMMA@9162..9163 ","6354      WHITESPACE@9163..9167 "\n\n  "6355      MEMBER_FIELD_METHOD@9167..92196356        FIELD_NAME_FIXED@9167..91826357          NAME@9167..91826358            IDENT@9167..9182 "objectFieldsAll"6359        PARAMS_DESC@9182..91856360          L_PAREN@9182..9183 "("6361          PARAM@9183..91846362            DESTRUCT_FULL@9183..91846363              NAME@9183..91846364                IDENT@9183..9184 "o"6365          R_PAREN@9184..9185 ")"6366        COLONCOLON@9185..9187 "::"6367        WHITESPACE@9187..9192 "\n    "6368        EXPR_APPLY@9192..92196369          EXPR_INDEX@9192..92106370            EXPR_VAR@9192..91956371              NAME@9192..91956372                IDENT@9192..9195 "std"6373            DOT@9195..9196 "."6374            NAME@9196..92106375              IDENT@9196..9210 "objectFieldsEx"6376          ARGS_DESC@9210..92196377            L_PAREN@9210..9211 "("6378            ARG@9211..92126379              EXPR_VAR@9211..92126380                NAME@9211..92126381                  IDENT@9211..9212 "o"6382            COMMA@9212..9213 ","6383            WHITESPACE@9213..9214 " "6384            ARG@9214..92186385              EXPR_LITERAL@9214..92186386                TRUE_KW@9214..9218 "true"6387            R_PAREN@9218..9219 ")"6388      COMMA@9219..9220 ","6389      WHITESPACE@9220..9224 "\n\n  "6390      MEMBER_FIELD_METHOD@9224..92746391        FIELD_NAME_FIXED@9224..92336392          NAME@9224..92336393            IDENT@9224..9233 "objectHas"6394        PARAMS_DESC@9233..92396395          L_PAREN@9233..9234 "("6396          PARAM@9234..92356397            DESTRUCT_FULL@9234..92356398              NAME@9234..92356399                IDENT@9234..9235 "o"6400          COMMA@9235..9236 ","6401          WHITESPACE@9236..9237 " "6402          PARAM@9237..92386403            DESTRUCT_FULL@9237..92386404              NAME@9237..92386405                IDENT@9237..9238 "f"6406          R_PAREN@9238..9239 ")"6407        COLONCOLON@9239..9241 "::"6408        WHITESPACE@9241..9246 "\n    "6409        EXPR_APPLY@9246..92746410          EXPR_INDEX@9246..92616411            EXPR_VAR@9246..92496412              NAME@9246..92496413                IDENT@9246..9249 "std"6414            DOT@9249..9250 "."6415            NAME@9250..92616416              IDENT@9250..9261 "objectHasEx"6417          ARGS_DESC@9261..92746418            L_PAREN@9261..9262 "("6419            ARG@9262..92636420              EXPR_VAR@9262..92636421                NAME@9262..92636422                  IDENT@9262..9263 "o"6423            COMMA@9263..9264 ","6424            WHITESPACE@9264..9265 " "6425            ARG@9265..92666426              EXPR_VAR@9265..92666427                NAME@9265..92666428                  IDENT@9265..9266 "f"6429            COMMA@9266..9267 ","6430            WHITESPACE@9267..9268 " "6431            ARG@9268..92736432              EXPR_LITERAL@9268..92736433                FALSE_KW@9268..9273 "false"6434            R_PAREN@9273..9274 ")"6435      COMMA@9274..9275 ","6436      WHITESPACE@9275..9279 "\n\n  "6437      MEMBER_FIELD_METHOD@9279..93316438        FIELD_NAME_FIXED@9279..92916439          NAME@9279..92916440            IDENT@9279..9291 "objectHasAll"6441        PARAMS_DESC@9291..92976442          L_PAREN@9291..9292 "("6443          PARAM@9292..92936444            DESTRUCT_FULL@9292..92936445              NAME@9292..92936446                IDENT@9292..9293 "o"6447          COMMA@9293..9294 ","6448          WHITESPACE@9294..9295 " "6449          PARAM@9295..92966450            DESTRUCT_FULL@9295..92966451              NAME@9295..92966452                IDENT@9295..9296 "f"6453          R_PAREN@9296..9297 ")"6454        COLONCOLON@9297..9299 "::"6455        WHITESPACE@9299..9304 "\n    "6456        EXPR_APPLY@9304..93316457          EXPR_INDEX@9304..93196458            EXPR_VAR@9304..93076459              NAME@9304..93076460                IDENT@9304..9307 "std"6461            DOT@9307..9308 "."6462            NAME@9308..93196463              IDENT@9308..9319 "objectHasEx"6464          ARGS_DESC@9319..93316465            L_PAREN@9319..9320 "("6466            ARG@9320..93216467              EXPR_VAR@9320..93216468                NAME@9320..93216469                  IDENT@9320..9321 "o"6470            COMMA@9321..9322 ","6471            WHITESPACE@9322..9323 " "6472            ARG@9323..93246473              EXPR_VAR@9323..93246474                NAME@9323..93246475                  IDENT@9323..9324 "f"6476            COMMA@9324..9325 ","6477            WHITESPACE@9325..9326 " "6478            ARG@9326..93306479              EXPR_LITERAL@9326..93306480                TRUE_KW@9326..9330 "true"6481            R_PAREN@9330..9331 ")"6482      COMMA@9331..9332 ","6483      WHITESPACE@9332..9336 "\n\n  "6484      MEMBER_FIELD_METHOD@9336..93936485        FIELD_NAME_FIXED@9336..93486486          NAME@9336..93486487            IDENT@9336..9348 "objectValues"6488        PARAMS_DESC@9348..93516489          L_PAREN@9348..9349 "("6490          PARAM@9349..93506491            DESTRUCT_FULL@9349..93506492              NAME@9349..93506493                IDENT@9349..9350 "o"6494          R_PAREN@9350..9351 ")"6495        COLONCOLON@9351..9353 "::"6496        WHITESPACE@9353..9358 "\n    "6497        EXPR_ARRAY_COMP@9358..93936498          L_BRACK@9358..9359 "["6499          EXPR_INDEX_EXPR@9359..93636500            LHS_EXPR@9359..93606501              EXPR_VAR@9359..93606502                NAME@9359..93606503                  IDENT@9359..9360 "o"6504            L_BRACK@9360..9361 "["6505            EXPR_VAR@9361..93626506              NAME@9361..93626507                IDENT@9361..9362 "k"6508            R_BRACK@9362..9363 "]"6509          WHITESPACE@9363..9364 " "6510          FOR_SPEC@9364..93926511            FOR_KW@9364..9367 "for"6512            WHITESPACE@9367..9368 " "6513            NAME@9368..93696514              IDENT@9368..9369 "k"6515            WHITESPACE@9369..9370 " "6516            IN_KW@9370..9372 "in"6517            WHITESPACE@9372..9373 " "6518            EXPR_APPLY@9373..93926519              EXPR_INDEX@9373..93896520                EXPR_VAR@9373..93766521                  NAME@9373..93766522                    IDENT@9373..9376 "std"6523                DOT@9376..9377 "."6524                NAME@9377..93896525                  IDENT@9377..9389 "objectFields"6526              ARGS_DESC@9389..93926527                L_PAREN@9389..9390 "("6528                ARG@9390..93916529                  EXPR_VAR@9390..93916530                    NAME@9390..93916531                      IDENT@9390..9391 "o"6532                R_PAREN@9391..9392 ")"6533          R_BRACK@9392..9393 "]"6534      COMMA@9393..9394 ","6535      WHITESPACE@9394..9398 "\n\n  "6536      MEMBER_FIELD_METHOD@9398..94616537        FIELD_NAME_FIXED@9398..94136538          NAME@9398..94136539            IDENT@9398..9413 "objectValuesAll"6540        PARAMS_DESC@9413..94166541          L_PAREN@9413..9414 "("6542          PARAM@9414..94156543            DESTRUCT_FULL@9414..94156544              NAME@9414..94156545                IDENT@9414..9415 "o"6546          R_PAREN@9415..9416 ")"6547        COLONCOLON@9416..9418 "::"6548        WHITESPACE@9418..9423 "\n    "6549        EXPR_ARRAY_COMP@9423..94616550          L_BRACK@9423..9424 "["6551          EXPR_INDEX_EXPR@9424..94286552            LHS_EXPR@9424..94256553              EXPR_VAR@9424..94256554                NAME@9424..94256555                  IDENT@9424..9425 "o"6556            L_BRACK@9425..9426 "["6557            EXPR_VAR@9426..94276558              NAME@9426..94276559                IDENT@9426..9427 "k"6560            R_BRACK@9427..9428 "]"6561          WHITESPACE@9428..9429 " "6562          FOR_SPEC@9429..94606563            FOR_KW@9429..9432 "for"6564            WHITESPACE@9432..9433 " "6565            NAME@9433..94346566              IDENT@9433..9434 "k"6567            WHITESPACE@9434..9435 " "6568            IN_KW@9435..9437 "in"6569            WHITESPACE@9437..9438 " "6570            EXPR_APPLY@9438..94606571              EXPR_INDEX@9438..94576572                EXPR_VAR@9438..94416573                  NAME@9438..94416574                    IDENT@9438..9441 "std"6575                DOT@9441..9442 "."6576                NAME@9442..94576577                  IDENT@9442..9457 "objectFieldsAll"6578              ARGS_DESC@9457..94606579                L_PAREN@9457..9458 "("6580                ARG@9458..94596581                  EXPR_VAR@9458..94596582                    NAME@9458..94596583                      IDENT@9458..9459 "o"6584                R_PAREN@9459..9460 ")"6585          R_BRACK@9460..9461 "]"6586      COMMA@9461..9462 ","6587      WHITESPACE@9462..9466 "\n\n  "6588      MEMBER_FIELD_METHOD@9466..96006589        FIELD_NAME_FIXED@9466..94776590          NAME@9466..94776591            IDENT@9466..9477 "resolvePath"6592        PARAMS_DESC@9477..94836593          L_PAREN@9477..9478 "("6594          PARAM@9478..94796595            DESTRUCT_FULL@9478..94796596              NAME@9478..94796597                IDENT@9478..9479 "f"6598          COMMA@9479..9480 ","6599          WHITESPACE@9480..9481 " "6600          PARAM@9481..94826601            DESTRUCT_FULL@9481..94826602              NAME@9481..94826603                IDENT@9481..9482 "r"6604          R_PAREN@9482..9483 ")"6605        COLONCOLON@9483..9485 "::"6606        WHITESPACE@9485..9490 "\n    "6607        EXPR_LOCAL@9490..96006608          LOCAL_KW@9490..9495 "local"6609          WHITESPACE@9495..9496 " "6610          BIND_DESTRUCT@9496..95196611            DESTRUCT_FULL@9496..94996612              NAME@9496..94996613                IDENT@9496..9499 "arr"6614            WHITESPACE@9499..9500 " "6615            ASSIGN@9500..9501 "="6616            WHITESPACE@9501..9502 " "6617            EXPR_APPLY@9502..95196618              EXPR_INDEX@9502..95116619                EXPR_VAR@9502..95056620                  NAME@9502..95056621                    IDENT@9502..9505 "std"6622                DOT@9505..9506 "."6623                NAME@9506..95116624                  IDENT@9506..9511 "split"6625              ARGS_DESC@9511..95196626                L_PAREN@9511..9512 "("6627                ARG@9512..95136628                  EXPR_VAR@9512..95136629                    NAME@9512..95136630                      IDENT@9512..9513 "f"6631                COMMA@9513..9514 ","6632                WHITESPACE@9514..9515 " "6633                ARG@9515..95186634                  EXPR_STRING@9515..95186635                    STRING_SINGLE@9515..9518 "'/'"6636                R_PAREN@9518..9519 ")"6637          SEMI@9519..9520 ";"6638          WHITESPACE@9520..9525 "\n    "6639          EXPR_APPLY@9525..96006640            EXPR_INDEX@9525..95336641              EXPR_VAR@9525..95286642                NAME@9525..95286643                  IDENT@9525..9528 "std"6644              DOT@9528..9529 "."6645              NAME@9529..95336646                IDENT@9529..9533 "join"6647            ARGS_DESC@9533..96006648              L_PAREN@9533..9534 "("6649              ARG@9534..95376650                EXPR_STRING@9534..95376651                  STRING_SINGLE@9534..9537 "'/'"6652              COMMA@9537..9538 ","6653              WHITESPACE@9538..9539 " "6654              ARG@9539..95996655                EXPR_BINARY@9539..95996656                  LHS_EXPR@9539..95936657                    EXPR_APPLY@9539..95936658                      EXPR_INDEX@9539..95526659                        EXPR_VAR@9539..95426660                          NAME@9539..95426661                            IDENT@9539..9542 "std"6662                        DOT@9542..9543 "."6663                        NAME@9543..95526664                          IDENT@9543..9552 "makeArray"6665                      ARGS_DESC@9552..95936666                        L_PAREN@9552..9553 "("6667                        ARG@9553..95726668                          EXPR_BINARY@9553..95726669                            LHS_EXPR@9553..95686670                              EXPR_APPLY@9553..95686671                                EXPR_INDEX@9553..95636672                                  EXPR_VAR@9553..95566673                                    NAME@9553..95566674                                      IDENT@9553..9556 "std"6675                                  DOT@9556..9557 "."6676                                  NAME@9557..95636677                                    IDENT@9557..9563 "length"6678                                ARGS_DESC@9563..95686679                                  L_PAREN@9563..9564 "("6680                                  ARG@9564..95676681                                    EXPR_VAR@9564..95676682                                      NAME@9564..95676683                                        IDENT@9564..9567 "arr"6684                                  R_PAREN@9567..9568 ")"6685                            WHITESPACE@9568..9569 " "6686                            MINUS@9569..9570 "-"6687                            WHITESPACE@9570..9571 " "6688                            EXPR_NUMBER@9571..95726689                              FLOAT@9571..9572 "1"6690                        COMMA@9572..9573 ","6691                        WHITESPACE@9573..9574 " "6692                        ARG@9574..95926693                          EXPR_FUNCTION@9574..95926694                            FUNCTION_KW@9574..9582 "function"6695                            PARAMS_DESC@9582..95856696                              L_PAREN@9582..9583 "("6697                              PARAM@9583..95846698                                DESTRUCT_FULL@9583..95846699                                  NAME@9583..95846700                                    IDENT@9583..9584 "i"6701                              R_PAREN@9584..9585 ")"6702                            WHITESPACE@9585..9586 " "6703                            EXPR_INDEX_EXPR@9586..95926704                              LHS_EXPR@9586..95896705                                EXPR_VAR@9586..95896706                                  NAME@9586..95896707                                    IDENT@9586..9589 "arr"6708                              L_BRACK@9589..9590 "["6709                              EXPR_VAR@9590..95916710                                NAME@9590..95916711                                  IDENT@9590..9591 "i"6712                              R_BRACK@9591..9592 "]"6713                        R_PAREN@9592..9593 ")"6714                  WHITESPACE@9593..9594 " "6715                  PLUS@9594..9595 "+"6716                  WHITESPACE@9595..9596 " "6717                  EXPR_ARRAY@9596..95996718                    L_BRACK@9596..9597 "["6719                    EXPR_VAR@9597..95986720                      NAME@9597..95986721                        IDENT@9597..9598 "r"6722                    R_BRACK@9598..9599 "]"6723              R_PAREN@9599..9600 ")"6724      COMMA@9600..9601 ","6725      WHITESPACE@9601..9605 "\n\n  "6726      MEMBER_FIELD_METHOD@9605..100586727        FIELD_NAME_FIXED@9605..96106728          NAME@9605..96106729            IDENT@9605..9610 "prune"6730        PARAMS_DESC@9610..96136731          L_PAREN@9610..9611 "("6732          PARAM@9611..96126733            DESTRUCT_FULL@9611..96126734              NAME@9611..96126735                IDENT@9611..9612 "a"6736          R_PAREN@9612..9613 ")"6737        COLONCOLON@9613..9615 "::"6738        WHITESPACE@9615..9620 "\n    "6739        EXPR_LOCAL@9620..100586740          LOCAL_KW@9620..9625 "local"6741          WHITESPACE@9625..9626 " "6742          BIND_FUNCTION@9626..98236743            NAME@9626..96356744              IDENT@9626..9635 "isContent"6745            PARAMS_DESC@9635..96386746              L_PAREN@9635..9636 "("6747              PARAM@9636..96376748                DESTRUCT_FULL@9636..96376749                  NAME@9636..96376750                    IDENT@9636..9637 "b"6751              R_PAREN@9637..9638 ")"6752            WHITESPACE@9638..9639 " "6753            ASSIGN@9639..9640 "="6754            WHITESPACE@9640..9647 "\n      "6755            EXPR_IF_THEN_ELSE@9647..98236756              IF_KW@9647..9649 "if"6757              WHITESPACE@9649..9650 " "6758              EXPR_BINARY@9650..96596759                LHS_EXPR@9650..96516760                  EXPR_VAR@9650..96516761                    NAME@9650..96516762                      IDENT@9650..9651 "b"6763                WHITESPACE@9651..9652 " "6764                EQ@9652..9654 "=="6765                WHITESPACE@9654..9655 " "6766                EXPR_LITERAL@9655..96596767                  NULL_KW@9655..9659 "null"6768              WHITESPACE@9659..9660 " "6769              THEN_KW@9660..9664 "then"6770              WHITESPACE@9664..9673 "\n        "6771              TRUE_EXPR@9673..96786772                EXPR_LITERAL@9673..96786773                  FALSE_KW@9673..9678 "false"6774              WHITESPACE@9678..9685 "\n      "6775              ELSE_KW@9685..9689 "else"6776              WHITESPACE@9689..9690 " "6777              FALSE_EXPR@9690..98236778                EXPR_IF_THEN_ELSE@9690..98236779                  IF_KW@9690..9692 "if"6780                  WHITESPACE@9692..9693 " "6781                  EXPR_APPLY@9693..97076782                    EXPR_INDEX@9693..97046783                      EXPR_VAR@9693..96966784                        NAME@9693..96966785                          IDENT@9693..9696 "std"6786                      DOT@9696..9697 "."6787                      NAME@9697..97046788                        IDENT@9697..9704 "isArray"6789                    ARGS_DESC@9704..97076790                      L_PAREN@9704..9705 "("6791                      ARG@9705..97066792                        EXPR_VAR@9705..97066793                          NAME@9705..97066794                            IDENT@9705..9706 "b"6795                      R_PAREN@9706..9707 ")"6796                  WHITESPACE@9707..9708 " "6797                  THEN_KW@9708..9712 "then"6798                  WHITESPACE@9712..9721 "\n        "6799                  TRUE_EXPR@9721..97386800                    EXPR_BINARY@9721..97386801                      LHS_EXPR@9721..97346802                        EXPR_APPLY@9721..97346803                          EXPR_INDEX@9721..97316804                            EXPR_VAR@9721..97246805                              NAME@9721..97246806                                IDENT@9721..9724 "std"6807                            DOT@9724..9725 "."6808                            NAME@9725..97316809                              IDENT@9725..9731 "length"6810                          ARGS_DESC@9731..97346811                            L_PAREN@9731..9732 "("6812                            ARG@9732..97336813                              EXPR_VAR@9732..97336814                                NAME@9732..97336815                                  IDENT@9732..9733 "b"6816                            R_PAREN@9733..9734 ")"6817                      WHITESPACE@9734..9735 " "6818                      GT@9735..9736 ">"6819                      WHITESPACE@9736..9737 " "6820                      EXPR_NUMBER@9737..97386821                        FLOAT@9737..9738 "0"6822                  WHITESPACE@9738..9745 "\n      "6823                  ELSE_KW@9745..9749 "else"6824                  WHITESPACE@9749..9750 " "6825                  FALSE_EXPR@9750..98236826                    EXPR_IF_THEN_ELSE@9750..98236827                      IF_KW@9750..9752 "if"6828                      WHITESPACE@9752..9753 " "6829                      EXPR_APPLY@9753..97686830                        EXPR_INDEX@9753..97656831                          EXPR_VAR@9753..97566832                            NAME@9753..97566833                              IDENT@9753..9756 "std"6834                          DOT@9756..9757 "."6835                          NAME@9757..97656836                            IDENT@9757..9765 "isObject"6837                        ARGS_DESC@9765..97686838                          L_PAREN@9765..9766 "("6839                          ARG@9766..97676840                            EXPR_VAR@9766..97676841                              NAME@9766..97676842                                IDENT@9766..9767 "b"6843                          R_PAREN@9767..9768 ")"6844                      WHITESPACE@9768..9769 " "6845                      THEN_KW@9769..9773 "then"6846                      WHITESPACE@9773..9782 "\n        "6847                      TRUE_EXPR@9782..97996848                        EXPR_BINARY@9782..97996849                          LHS_EXPR@9782..97956850                            EXPR_APPLY@9782..97956851                              EXPR_INDEX@9782..97926852                                EXPR_VAR@9782..97856853                                  NAME@9782..97856854                                    IDENT@9782..9785 "std"6855                                DOT@9785..9786 "."6856                                NAME@9786..97926857                                  IDENT@9786..9792 "length"6858                              ARGS_DESC@9792..97956859                                L_PAREN@9792..9793 "("6860                                ARG@9793..97946861                                  EXPR_VAR@9793..97946862                                    NAME@9793..97946863                                      IDENT@9793..9794 "b"6864                                R_PAREN@9794..9795 ")"6865                          WHITESPACE@9795..9796 " "6866                          GT@9796..9797 ">"6867                          WHITESPACE@9797..9798 " "6868                          EXPR_NUMBER@9798..97996869                            FLOAT@9798..9799 "0"6870                      WHITESPACE@9799..9806 "\n      "6871                      ELSE_KW@9806..9810 "else"6872                      WHITESPACE@9810..9819 "\n        "6873                      FALSE_EXPR@9819..98236874                        EXPR_LITERAL@9819..98236875                          TRUE_KW@9819..9823 "true"6876          SEMI@9823..9824 ";"6877          WHITESPACE@9824..9829 "\n    "6878          EXPR_IF_THEN_ELSE@9829..100586879            IF_KW@9829..9831 "if"6880            WHITESPACE@9831..9832 " "6881            EXPR_APPLY@9832..98466882              EXPR_INDEX@9832..98436883                EXPR_VAR@9832..98356884                  NAME@9832..98356885                    IDENT@9832..9835 "std"6886                DOT@9835..9836 "."6887                NAME@9836..98436888                  IDENT@9836..9843 "isArray"6889              ARGS_DESC@9843..98466890                L_PAREN@9843..9844 "("6891                ARG@9844..98456892                  EXPR_VAR@9844..98456893                    NAME@9844..98456894                      IDENT@9844..9845 "a"6895                R_PAREN@9845..9846 ")"6896            WHITESPACE@9846..9847 " "6897            THEN_KW@9847..9851 "then"6898            WHITESPACE@9851..9858 "\n      "6899            TRUE_EXPR@9858..99086900              EXPR_ARRAY_COMP@9858..99086901                L_BRACK@9858..9859 "["6902                EXPR_APPLY@9859..98716903                  EXPR_INDEX@9859..98686904                    EXPR_VAR@9859..98626905                      NAME@9859..98626906                        IDENT@9859..9862 "std"6907                    DOT@9862..9863 "."6908                    NAME@9863..98686909                      IDENT@9863..9868 "prune"6910                  ARGS_DESC@9868..98716911                    L_PAREN@9868..9869 "("6912                    ARG@9869..98706913                      EXPR_VAR@9869..98706914                        NAME@9869..98706915                          IDENT@9869..9870 "x"6916                    R_PAREN@9870..9871 ")"6917                WHITESPACE@9871..9872 " "6918                FOR_SPEC@9872..98826919                  FOR_KW@9872..9875 "for"6920                  WHITESPACE@9875..9876 " "6921                  NAME@9876..98776922                    IDENT@9876..9877 "x"6923                  WHITESPACE@9877..9878 " "6924                  IN_KW@9878..9880 "in"6925                  WHITESPACE@9880..9881 " "6926                  EXPR_VAR@9881..98826927                    NAME@9881..98826928                      IDENT@9881..9882 "a"6929                WHITESPACE@9882..9883 " "6930                IF_SPEC@9883..99076931                  IF_KW@9883..9885 "if"6932                  WHITESPACE@9885..9886 " "6933                  EXPR_APPLY@9886..99076934                    EXPR_VAR@9886..98956935                      NAME@9886..98956936                        IDENT@9886..9895 "isContent"6937                    ARGS_DESC@9895..99076938                      L_PAREN@9895..9896 "("6939                      ARG@9896..99066940                        EXPR_APPLY@9896..99066941                          EXPR_INDEX@9896..99036942                            EXPR_LITERAL@9896..98976943                              DOLLAR@9896..9897 "$"6944                            DOT@9897..9898 "."6945                            NAME@9898..99036946                              IDENT@9898..9903 "prune"6947                          ARGS_DESC@9903..99066948                            L_PAREN@9903..9904 "("6949                            ARG@9904..99056950                              EXPR_VAR@9904..99056951                                NAME@9904..99056952                                  IDENT@9904..9905 "x"6953                            R_PAREN@9905..9906 ")"6954                      R_PAREN@9906..9907 ")"6955                R_BRACK@9907..9908 "]"6956            WHITESPACE@9908..9913 "\n    "6957            ELSE_KW@9913..9917 "else"6958            WHITESPACE@9917..9918 " "6959            FALSE_EXPR@9918..100586960              EXPR_IF_THEN_ELSE@9918..100586961                IF_KW@9918..9920 "if"6962                WHITESPACE@9920..9921 " "6963                EXPR_APPLY@9921..99366964                  EXPR_INDEX@9921..99336965                    EXPR_VAR@9921..99246966                      NAME@9921..99246967                        IDENT@9921..9924 "std"6968                    DOT@9924..9925 "."6969                    NAME@9925..99336970                      IDENT@9925..9933 "isObject"6971                  ARGS_DESC@9933..99366972                    L_PAREN@9933..9934 "("6973                    ARG@9934..99356974                      EXPR_VAR@9934..99356975                        NAME@9934..99356976                          IDENT@9934..9935 "a"6977                    R_PAREN@9935..9936 ")"6978                WHITESPACE@9936..9937 " "6979                THEN_KW@9937..9941 "then"6980                WHITESPACE@9941..9942 " "6981                TRUE_EXPR@9942..100456982                  EXPR_OBJECT@9942..100456983                    OBJ_BODY_COMP@9942..100456984                      L_BRACE@9942..9943 "{"6985                      WHITESPACE@9943..9950 "\n      "6986                      MEMBER_FIELD_NORMAL@9950..99686987                        FIELD_NAME_DYNAMIC@9950..99536988                          L_BRACK@9950..9951 "["6989                          EXPR_VAR@9951..99526990                            NAME@9951..99526991                              IDENT@9951..9952 "x"6992                          R_BRACK@9952..9953 "]"6993                        COLON@9953..9954 ":"6994                        WHITESPACE@9954..9955 " "6995                        EXPR_APPLY@9955..99686996                          EXPR_INDEX@9955..99626997                            EXPR_LITERAL@9955..99566998                              DOLLAR@9955..9956 "$"6999                            DOT@9956..9957 "."7000                            NAME@9957..99627001                              IDENT@9957..9962 "prune"7002                          ARGS_DESC@9962..99687003                            L_PAREN@9962..9963 "("7004                            ARG@9963..99677005                              EXPR_INDEX_EXPR@9963..99677006                                LHS_EXPR@9963..99647007                                  EXPR_VAR@9963..99647008                                    NAME@9963..99647009                                      IDENT@9963..9964 "a"7010                                L_BRACK@9964..9965 "["7011                                EXPR_VAR@9965..99667012                                  NAME@9965..99667013                                    IDENT@9965..9966 "x"7014                                R_BRACK@9966..9967 "]"7015                            R_PAREN@9967..9968 ")"7016                      WHITESPACE@9968..9975 "\n      "7017                      FOR_SPEC@9975..100037018                        FOR_KW@9975..9978 "for"7019                        WHITESPACE@9978..9979 " "7020                        NAME@9979..99807021                          IDENT@9979..9980 "x"7022                        WHITESPACE@9980..9981 " "7023                        IN_KW@9981..9983 "in"7024                        WHITESPACE@9983..9984 " "7025                        EXPR_APPLY@9984..100037026                          EXPR_INDEX@9984..100007027                            EXPR_VAR@9984..99877028                              NAME@9984..99877029                                IDENT@9984..9987 "std"7030                            DOT@9987..9988 "."7031                            NAME@9988..100007032                              IDENT@9988..10000 "objectFields"7033                          ARGS_DESC@10000..100037034                            L_PAREN@10000..10001 "("7035                            ARG@10001..100027036                              EXPR_VAR@10001..100027037                                NAME@10001..100027038                                  IDENT@10001..10002 "a"7039                            R_PAREN@10002..10003 ")"7040                      WHITESPACE@10003..10010 "\n      "7041                      IF_SPEC@10010..100397042                        IF_KW@10010..10012 "if"7043                        WHITESPACE@10012..10013 " "7044                        EXPR_APPLY@10013..100397045                          EXPR_VAR@10013..100227046                            NAME@10013..100227047                              IDENT@10013..10022 "isContent"7048                          ARGS_DESC@10022..100397049                            L_PAREN@10022..10023 "("7050                            ARG@10023..100387051                              EXPR_APPLY@10023..100387052                                EXPR_INDEX@10023..100327053                                  EXPR_VAR@10023..100267054                                    NAME@10023..100267055                                      IDENT@10023..10026 "std"7056                                  DOT@10026..10027 "."7057                                  NAME@10027..100327058                                    IDENT@10027..10032 "prune"7059                                ARGS_DESC@10032..100387060                                  L_PAREN@10032..10033 "("7061                                  ARG@10033..100377062                                    EXPR_INDEX_EXPR@10033..100377063                                      LHS_EXPR@10033..100347064                                        EXPR_VAR@10033..100347065                                          NAME@10033..100347066                                            IDENT@10033..10034 "a"7067                                      L_BRACK@10034..10035 "["7068                                      EXPR_VAR@10035..100367069                                        NAME@10035..100367070                                          IDENT@10035..10036 "x"7071                                      R_BRACK@10036..10037 "]"7072                                  R_PAREN@10037..10038 ")"7073                            R_PAREN@10038..10039 ")"7074                      WHITESPACE@10039..10044 "\n    "7075                      R_BRACE@10044..10045 "}"7076                WHITESPACE@10045..10046 " "7077                ELSE_KW@10046..10050 "else"7078                WHITESPACE@10050..10057 "\n      "7079                FALSE_EXPR@10057..100587080                  EXPR_VAR@10057..100587081                    NAME@10057..100587082                      IDENT@10057..10058 "a"7083      COMMA@10058..10059 ","7084      WHITESPACE@10059..10063 "\n\n  "7085      MEMBER_FIELD_METHOD@10063..102787086        FIELD_NAME_FIXED@10063..100677087          NAME@10063..100677088            IDENT@10063..10067 "find"7089        PARAMS_DESC@10067..100797090          L_PAREN@10067..10068 "("7091          PARAM@10068..100737092            DESTRUCT_FULL@10068..100737093              NAME@10068..100737094                IDENT@10068..10073 "value"7095          COMMA@10073..10074 ","7096          WHITESPACE@10074..10075 " "7097          PARAM@10075..100787098            DESTRUCT_FULL@10075..100787099              NAME@10075..100787100                IDENT@10075..10078 "arr"7101          R_PAREN@10078..10079 ")"7102        COLONCOLON@10079..10081 "::"7103        WHITESPACE@10081..10086 "\n    "7104        EXPR_IF_THEN_ELSE@10086..102787105          IF_KW@10086..10088 "if"7106          WHITESPACE@10088..10089 " "7107          EXPR_UNARY@10089..101067108            NOT@10089..10090 "!"7109            EXPR_APPLY@10090..101067110              EXPR_INDEX@10090..101017111                EXPR_VAR@10090..100937112                  NAME@10090..100937113                    IDENT@10090..10093 "std"7114                DOT@10093..10094 "."7115                NAME@10094..101017116                  IDENT@10094..10101 "isArray"7117              ARGS_DESC@10101..101067118                L_PAREN@10101..10102 "("7119                ARG@10102..101057120                  EXPR_VAR@10102..101057121                    NAME@10102..101057122                      IDENT@10102..10105 "arr"7123                R_PAREN@10105..10106 ")"7124          WHITESPACE@10106..10107 " "7125          THEN_KW@10107..10111 "then"7126          WHITESPACE@10111..10118 "\n      "7127          TRUE_EXPR@10118..101887128            EXPR_ERROR@10118..101887129              ERROR_KW@10118..10123 "error"7130              WHITESPACE@10123..10124 " "7131              EXPR_BINARY@10124..101887132                LHS_EXPR@10124..101727133                  EXPR_STRING@10124..101727134                    STRING_SINGLE@10124..10172 "'find second paramete ..."7135                WHITESPACE@10172..10173 " "7136                PLUS@10173..10174 "+"7137                WHITESPACE@10174..10175 " "7138                EXPR_APPLY@10175..101887139                  EXPR_INDEX@10175..101837140                    EXPR_VAR@10175..101787141                      NAME@10175..101787142                        IDENT@10175..10178 "std"7143                    DOT@10178..10179 "."7144                    NAME@10179..101837145                      IDENT@10179..10183 "type"7146                  ARGS_DESC@10183..101887147                    L_PAREN@10183..10184 "("7148                    ARG@10184..101877149                      EXPR_VAR@10184..101877150                        NAME@10184..101877151                          IDENT@10184..10187 "arr"7152                    R_PAREN@10187..10188 ")"7153          WHITESPACE@10188..10193 "\n    "7154          ELSE_KW@10193..10197 "else"7155          WHITESPACE@10197..10204 "\n      "7156          FALSE_EXPR@10204..102787157            EXPR_APPLY@10204..102787158              EXPR_INDEX@10204..102147159                EXPR_VAR@10204..102077160                  NAME@10204..102077161                    IDENT@10204..10207 "std"7162                DOT@10207..10208 "."7163                NAME@10208..102147164                  IDENT@10208..10214 "filter"7165              ARGS_DESC@10214..102787166                L_PAREN@10214..10215 "("7167                ARG@10215..102427168                  EXPR_FUNCTION@10215..102427169                    FUNCTION_KW@10215..10223 "function"7170                    PARAMS_DESC@10223..102267171                      L_PAREN@10223..10224 "("7172                      PARAM@10224..102257173                        DESTRUCT_FULL@10224..102257174                          NAME@10224..102257175                            IDENT@10224..10225 "i"7176                      R_PAREN@10225..10226 ")"7177                    WHITESPACE@10226..10227 " "7178                    EXPR_BINARY@10227..102427179                      LHS_EXPR@10227..102337180                        EXPR_INDEX_EXPR@10227..102337181                          LHS_EXPR@10227..102307182                            EXPR_VAR@10227..102307183                              NAME@10227..102307184                                IDENT@10227..10230 "arr"7185                          L_BRACK@10230..10231 "["7186                          EXPR_VAR@10231..102327187                            NAME@10231..102327188                              IDENT@10231..10232 "i"7189                          R_BRACK@10232..10233 "]"7190                      WHITESPACE@10233..10234 " "7191                      EQ@10234..10236 "=="7192                      WHITESPACE@10236..10237 " "7193                      EXPR_VAR@10237..102427194                        NAME@10237..102427195                          IDENT@10237..10242 "value"7196                COMMA@10242..10243 ","7197                WHITESPACE@10243..10244 " "7198                ARG@10244..102777199                  EXPR_APPLY@10244..102777200                    EXPR_INDEX@10244..102537201                      EXPR_VAR@10244..102477202                        NAME@10244..102477203                          IDENT@10244..10247 "std"7204                      DOT@10247..10248 "."7205                      NAME@10248..102537206                        IDENT@10248..10253 "range"7207                    ARGS_DESC@10253..102777208                      L_PAREN@10253..10254 "("7209                      ARG@10254..102557210                        EXPR_NUMBER@10254..102557211                          FLOAT@10254..10255 "0"7212                      COMMA@10255..10256 ","7213                      WHITESPACE@10256..10257 " "7214                      ARG@10257..102767215                        EXPR_BINARY@10257..102767216                          LHS_EXPR@10257..102727217                            EXPR_APPLY@10257..102727218                              EXPR_INDEX@10257..102677219                                EXPR_VAR@10257..102607220                                  NAME@10257..102607221                                    IDENT@10257..10260 "std"7222                                DOT@10260..10261 "."7223                                NAME@10261..102677224                                  IDENT@10261..10267 "length"7225                              ARGS_DESC@10267..102727226                                L_PAREN@10267..10268 "("7227                                ARG@10268..102717228                                  EXPR_VAR@10268..102717229                                    NAME@10268..102717230                                      IDENT@10268..10271 "arr"7231                                R_PAREN@10271..10272 ")"7232                          WHITESPACE@10272..10273 " "7233                          MINUS@10273..10274 "-"7234                          WHITESPACE@10274..10275 " "7235                          EXPR_NUMBER@10275..102767236                            FLOAT@10275..10276 "1"7237                      R_PAREN@10276..10277 ")"7238                R_PAREN@10277..10278 ")"7239      COMMA@10278..10279 ","7240      WHITESPACE@10279..10280 "\n"7241      R_BRACE@10280..10281 "}"7242  WHITESPACE@10281..10282 "\n"
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snapdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
@@ -3,7 +3,7 @@
 expression: "local * = 1;\na\n"
 ---
 SOURCE_FILE@0..15
-  EXPR_LOCAL@0..14
+  STMT_LOCAL@0..12
     LOCAL_KW@0..5 "local"
     WHITESPACE@5..6 " "
     BIND_DESTRUCT@6..11
@@ -15,10 +15,10 @@
       EXPR_NUMBER@10..11
         FLOAT@10..11 "1"
     SEMI@11..12 ";"
-    WHITESPACE@12..13 "\n"
-    EXPR_VAR@13..14
-      NAME@13..14
-        IDENT@13..14 "a"
+  WHITESPACE@12..13 "\n"
+  EXPR_VAR@13..14
+    NAME@13..14
+      IDENT@13..14 "a"
   WHITESPACE@14..15 "\n"
 ===
 LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }
modifiedcrates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/tests.rs
+++ b/crates/jrsonnet-rowan-parser/src/tests.rs
@@ -244,3 +244,10 @@
 	let result = process(src);
 	insta::assert_snapshot!("stdlib", result, src);
 }
+#[test]
+fn eval_simple() {
+	let src = "local a = 1, b = 2; a + local c = 1; c";
+	let (node, errors) = parse(src);
+
+	dbg!(node);
+}
modifiedflake.nixdiffbeforeafterboth
--- a/flake.nix
+++ b/flake.nix
@@ -132,6 +132,7 @@
             cargo-asm
             cargo-outdated
             cargo-watch
+            cargo-insta
             lld
             hyperfine
             graphviz