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

difftreelog

feat try to parse locals as statements, not as expressions

Yaroslav Bolyukin2023-09-04parent: #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
1---1---
2source: crates/jrsonnet-rowan-parser/src/tests.rs2source: crates/jrsonnet-rowan-parser/src/tests.rs
3expression: "{\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"3expression: "{\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 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 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 // Compat\n __compare_array(arr1, arr2)::\n assert std.isArray(arr1) && std.isArray(arr2);\n std.__compare(arr1, arr2),\n __array_less(arr1, arr2):: std.__compare_array(arr1, arr2) == -1,\n __array_greater(arr1, arr2):: std.__compare_array(arr1, arr2) == 1,\n __array_less_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) <= 0,\n __array_greater_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) >= 0,\n}\n"
4---4---
5SOURCE_FILE@0..102825SOURCE_FILE@0..9860
6 EXPR_OBJECT@0..102816 EXPR_OBJECT@0..9859
7 OBJ_BODY_MEMBER_LIST@0..102817 OBJ_BODY_MEMBER_LIST@0..9859
8 L_BRACE@0..1 "{"8 L_BRACE@0..1 "{"
9 WHITESPACE@1..4 "\n "9 WHITESPACE@1..4 "\n "
10 MEMBER_BIND_STMT@4..2010 MEMBER_BIND_STMT@4..20
216 R_PAREN@424..425 ")"216 R_PAREN@424..425 ")"
217 COLONCOLON@425..427 "::"217 COLONCOLON@425..427 "::"
218 WHITESPACE@427..432 "\n "218 WHITESPACE@427..432 "\n "
219 EXPR_LOCAL@432..578219 STMT_LOCAL@432..460
220 LOCAL_KW@432..437 "local"220 LOCAL_KW@432..437 "local"
221 WHITESPACE@437..438 " "221 WHITESPACE@437..438 " "
222 BIND_DESTRUCT@438..459222 BIND_DESTRUCT@438..459
242 IDENT@455..458 "str"242 IDENT@455..458 "str"
243 R_PAREN@458..459 ")"243 R_PAREN@458..459 ")"
244 SEMI@459..460 ";"244 SEMI@459..460 ";"
245 WHITESPACE@460..465 "\n "245 WHITESPACE@460..465 "\n "
246 EXPR_IF_THEN_ELSE@465..578246 EXPR_IF_THEN_ELSE@465..578
247 IF_KW@465..467 "if"247 IF_KW@465..467 "if"
248 WHITESPACE@467..468 " "248 WHITESPACE@467..468 " "
249 EXPR_BINARY@468..510249 EXPR_BINARY@468..510
250 LHS_EXPR@468..475250 LHS_EXPR@468..475
251 EXPR_BINARY@468..475251 EXPR_BINARY@468..475
252 LHS_EXPR@468..471252 LHS_EXPR@468..471
253 EXPR_VAR@468..471253 EXPR_VAR@468..471
254 NAME@468..471254 NAME@468..471
255 IDENT@468..471 "len"255 IDENT@468..471 "len"
256 WHITESPACE@471..472 " "256 WHITESPACE@471..472 " "
257 GT@472..473 ">"257 GT@472..473 ">"
258 WHITESPACE@473..474 " "258 WHITESPACE@473..474 " "
259 EXPR_NUMBER@474..475259 EXPR_NUMBER@474..475
260 FLOAT@474..475 "0"260 FLOAT@474..475 "0"
261 WHITESPACE@475..476 " "261 WHITESPACE@475..476 " "
262 AND@476..478 "&&"262 AND@476..478 "&&"
263 WHITESPACE@478..479 " "263 WHITESPACE@478..479 " "
264 EXPR_APPLY@479..510264 EXPR_APPLY@479..510
265 EXPR_INDEX@479..489265 EXPR_INDEX@479..489
266 EXPR_VAR@479..482266 EXPR_VAR@479..482
267 NAME@479..482267 NAME@479..482
268 IDENT@479..482 "std"268 IDENT@479..482 "std"
269 DOT@482..483 "."269 DOT@482..483 "."
270 NAME@483..489270 NAME@483..489
271 IDENT@483..489 "member"271 IDENT@483..489 "member"
272 ARGS_DESC@489..510272 ARGS_DESC@489..510
273 L_PAREN@489..490 "("273 L_PAREN@489..490 "("
274 ARG@490..495274 ARG@490..495
275 EXPR_VAR@490..495275 EXPR_VAR@490..495
276 NAME@490..495276 NAME@490..495
277 IDENT@490..495 "chars"277 IDENT@490..495 "chars"
278 COMMA@495..496 ","278 COMMA@495..496 ","
279 WHITESPACE@496..497 " "279 WHITESPACE@496..497 " "
280 ARG@497..509280 ARG@497..509
281 EXPR_INDEX_EXPR@497..509281 EXPR_INDEX_EXPR@497..509
282 LHS_EXPR@497..500282 LHS_EXPR@497..500
283 EXPR_VAR@497..500283 EXPR_VAR@497..500
284 NAME@497..500284 NAME@497..500
285 IDENT@497..500 "str"285 IDENT@497..500 "str"
286 L_BRACK@500..501 "["286 L_BRACK@500..501 "["
287 EXPR_BINARY@501..508287 EXPR_BINARY@501..508
288 LHS_EXPR@501..504288 LHS_EXPR@501..504
289 EXPR_VAR@501..504289 EXPR_VAR@501..504
290 NAME@501..504290 NAME@501..504
291 IDENT@501..504 "len"291 IDENT@501..504 "len"
292 WHITESPACE@504..505 " "292 WHITESPACE@504..505 " "
293 MINUS@505..506 "-"293 MINUS@505..506 "-"
294 WHITESPACE@506..507 " "294 WHITESPACE@506..507 " "
295 EXPR_NUMBER@507..508295 EXPR_NUMBER@507..508
296 FLOAT@507..508 "1"296 FLOAT@507..508 "1"
297 R_BRACK@508..509 "]"297 R_BRACK@508..509 "]"
298 R_PAREN@509..510 ")"298 R_PAREN@509..510 ")"
299 WHITESPACE@510..511 " "299 WHITESPACE@510..511 " "
300 THEN_KW@511..515 "then"300 THEN_KW@511..515 "then"
301 WHITESPACE@515..522 "\n "301 WHITESPACE@515..522 "\n "
302 TRUE_EXPR@522..559302 TRUE_EXPR@522..559
303 EXPR_APPLY@522..559303 EXPR_APPLY@522..559
304 EXPR_INDEX@522..537304 EXPR_INDEX@522..537
305 EXPR_VAR@522..525305 EXPR_VAR@522..525
306 NAME@522..525306 NAME@522..525
307 IDENT@522..525 "std"307 IDENT@522..525 "std"
308 DOT@525..526 "."308 DOT@525..526 "."
309 NAME@526..537309 NAME@526..537
310 IDENT@526..537 "rstripChars"310 IDENT@526..537 "rstripChars"
311 ARGS_DESC@537..559311 ARGS_DESC@537..559
312 L_PAREN@537..538 "("312 L_PAREN@537..538 "("
313 ARG@538..551313 ARG@538..551
314 EXPR_SLICE@538..551314 EXPR_SLICE@538..551
315 EXPR_VAR@538..541315 EXPR_VAR@538..541
316 NAME@538..541316 NAME@538..541
317 IDENT@538..541 "str"317 IDENT@538..541 "str"
318 SLICE_DESC@541..551318 SLICE_DESC@541..551
319 L_BRACK@541..542 "["319 L_BRACK@541..542 "["
320 COLON@542..543 ":"320 COLON@542..543 ":"
321 SLICE_DESC_END@543..550321 SLICE_DESC_END@543..550
322 EXPR_BINARY@543..550322 EXPR_BINARY@543..550
323 LHS_EXPR@543..546323 LHS_EXPR@543..546
324 EXPR_VAR@543..546324 EXPR_VAR@543..546
325 NAME@543..546325 NAME@543..546
326 IDENT@543..546 "len"326 IDENT@543..546 "len"
327 WHITESPACE@546..547 " "327 WHITESPACE@546..547 " "
328 MINUS@547..548 "-"328 MINUS@547..548 "-"
329 WHITESPACE@548..549 " "329 WHITESPACE@548..549 " "
330 EXPR_NUMBER@549..550330 EXPR_NUMBER@549..550
331 FLOAT@549..550 "1"331 FLOAT@549..550 "1"
332 R_BRACK@550..551 "]"332 R_BRACK@550..551 "]"
333 COMMA@551..552 ","333 COMMA@551..552 ","
334 WHITESPACE@552..553 " "334 WHITESPACE@552..553 " "
335 ARG@553..558335 ARG@553..558
336 EXPR_VAR@553..558336 EXPR_VAR@553..558
337 NAME@553..558337 NAME@553..558
338 IDENT@553..558 "chars"338 IDENT@553..558 "chars"
339 R_PAREN@558..559 ")"339 R_PAREN@558..559 ")"
340 WHITESPACE@559..564 "\n "340 WHITESPACE@559..564 "\n "
341 ELSE_KW@564..568 "else"341 ELSE_KW@564..568 "else"
342 WHITESPACE@568..575 "\n "342 WHITESPACE@568..575 "\n "
343 FALSE_EXPR@575..578343 FALSE_EXPR@575..578
344 EXPR_VAR@575..578344 EXPR_VAR@575..578
345 NAME@575..578345 NAME@575..578
346 IDENT@575..578 "str"346 IDENT@575..578 "str"
347 COMMA@578..579 ","347 COMMA@578..579 ","
348 WHITESPACE@579..583 "\n\n "348 WHITESPACE@579..583 "\n\n "
349 MEMBER_FIELD_METHOD@583..663349 MEMBER_FIELD_METHOD@583..663
546 WHITESPACE@839..844 "\n "546 WHITESPACE@839..844 "\n "
547 ELSE_KW@844..848 "else"547 ELSE_KW@844..848 "else"
548 WHITESPACE@848..855 "\n "548 WHITESPACE@848..855 "\n "
549 FALSE_EXPR@855..1024549 STMT_LOCAL@855..923
550 EXPR_LOCAL@855..1024550 LOCAL_KW@855..860 "local"
551 LOCAL_KW@855..860 "local"551 WHITESPACE@860..861 " "
552 WHITESPACE@860..861 " "552 BIND_FUNCTION@861..922
553 BIND_FUNCTION@861..922553 NAME@861..867
554 NAME@861..867554 IDENT@861..867 "revStr"
555 IDENT@861..867 "revStr"555 PARAMS_DESC@867..872
556 PARAMS_DESC@867..872556 L_PAREN@867..868 "("
557 L_PAREN@867..868 "("557 PARAM@868..871
558 PARAM@868..871558 DESTRUCT_FULL@868..871
559 DESTRUCT_FULL@868..871559 NAME@868..871
560 NAME@868..871560 IDENT@868..871 "str"
561 IDENT@868..871 "str"561 R_PAREN@871..872 ")"
562 R_PAREN@871..872 ")"562 WHITESPACE@872..873 " "
563 WHITESPACE@872..873 " "563 ASSIGN@873..874 "="
564 ASSIGN@873..874 "="564 WHITESPACE@874..875 " "
565 WHITESPACE@874..875 " "565 EXPR_APPLY@875..922
566 EXPR_APPLY@875..922566 EXPR_INDEX@875..883
567 EXPR_INDEX@875..883567 EXPR_VAR@875..878
568 EXPR_VAR@875..878568 NAME@875..878
569 NAME@875..878569 IDENT@875..878 "std"
570 IDENT@875..878 "std"570 DOT@878..879 "."
571 DOT@878..879 "."571 NAME@879..883
572 NAME@879..883572 IDENT@879..883 "join"
573 IDENT@879..883 "join"573 ARGS_DESC@883..922
574 ARGS_DESC@883..922574 L_PAREN@883..884 "("
575 L_PAREN@883..884 "("575 ARG@884..886
576 ARG@884..886576 EXPR_STRING@884..886
577 EXPR_STRING@884..886577 STRING_SINGLE@884..886 "''"
578 STRING_SINGLE@884..886 "''"578 COMMA@886..887 ","
579 COMMA@886..887 ","579 WHITESPACE@887..888 " "
580 WHITESPACE@887..888 " "580 ARG@888..921
581 ARG@888..921581 EXPR_APPLY@888..921
582 EXPR_APPLY@888..921582 EXPR_INDEX@888..899
583 EXPR_INDEX@888..899583 EXPR_VAR@888..891
584 EXPR_VAR@888..891584 NAME@888..891
585 NAME@888..891585 IDENT@888..891 "std"
586 IDENT@888..891 "std"586 DOT@891..892 "."
587 DOT@891..892 "."587 NAME@892..899
588 NAME@892..899588 IDENT@892..899 "reverse"
589 IDENT@892..899 "reverse"589 ARGS_DESC@899..921
590 ARGS_DESC@899..921590 L_PAREN@899..900 "("
591 L_PAREN@899..900 "("591 ARG@900..920
592 ARG@900..920592 EXPR_APPLY@900..920
593 EXPR_APPLY@900..920593 EXPR_INDEX@900..915
594 EXPR_INDEX@900..915594 EXPR_VAR@900..903
595 EXPR_VAR@900..903595 NAME@900..903
596 NAME@900..903596 IDENT@900..903 "std"
597 IDENT@900..903 "std"597 DOT@903..904 "."
598 DOT@903..904 "."598 NAME@904..915
599 NAME@904..915599 IDENT@904..915 "stringChars"
600 IDENT@904..915 "stringChars"600 ARGS_DESC@915..920
601 ARGS_DESC@915..920601 L_PAREN@915..916 "("
602 L_PAREN@915..916 "("602 ARG@916..919
603 ARG@916..919603 EXPR_VAR@916..919
604 EXPR_VAR@916..919604 NAME@916..919
605 NAME@916..919605 IDENT@916..919 "str"
606 IDENT@916..919 "str"606 R_PAREN@919..920 ")"
607 R_PAREN@919..920 ")"607 R_PAREN@920..921 ")"
608 R_PAREN@920..921 ")"608 R_PAREN@921..922 ")"
609 R_PAREN@921..922 ")"609 SEMI@922..923 ";"
610 SEMI@922..923 ";"610 WHITESPACE@923..930 "\n "
611 WHITESPACE@923..930 "\n "611 FALSE_EXPR@930..1024
612 EXPR_APPLY@930..1024612 EXPR_APPLY@930..1024
613 EXPR_INDEX@930..937613 EXPR_INDEX@930..937
614 EXPR_VAR@930..933614 EXPR_VAR@930..933
615 NAME@930..933615 NAME@930..933
616 IDENT@930..933 "std"616 IDENT@930..933 "std"
617 DOT@933..934 "."617 DOT@933..934 "."
618 NAME@934..937618 NAME@934..937
619 IDENT@934..937 "map"619 IDENT@934..937 "map"
620 ARGS_DESC@937..1024620 ARGS_DESC@937..1024
621 L_PAREN@937..938 "("621 L_PAREN@937..938 "("
622 ARG@938..959622 ARG@938..959
623 EXPR_FUNCTION@938..959623 EXPR_FUNCTION@938..959
624 FUNCTION_KW@938..946 "function"624 FUNCTION_KW@938..946 "function"
625 PARAMS_DESC@946..949625 PARAMS_DESC@946..949
626 L_PAREN@946..947 "("626 L_PAREN@946..947 "("
627 PARAM@947..948627 PARAM@947..948
628 DESTRUCT_FULL@947..948628 DESTRUCT_FULL@947..948
629 NAME@947..948629 NAME@947..948
630 IDENT@947..948 "e"630 IDENT@947..948 "e"
631 R_PAREN@948..949 ")"631 R_PAREN@948..949 ")"
632 WHITESPACE@949..950 " "632 WHITESPACE@949..950 " "
633 EXPR_APPLY@950..959633 EXPR_APPLY@950..959
634 EXPR_VAR@950..956634 EXPR_VAR@950..956
635 NAME@950..956635 NAME@950..956
636 IDENT@950..956 "revStr"636 IDENT@950..956 "revStr"
637 ARGS_DESC@956..959637 ARGS_DESC@956..959
638 L_PAREN@956..957 "("638 L_PAREN@956..957 "("
639 ARG@957..958639 ARG@957..958
640 EXPR_VAR@957..958640 EXPR_VAR@957..958
641 NAME@957..958641 NAME@957..958
642 IDENT@957..958 "e"642 IDENT@957..958 "e"
643 R_PAREN@958..959 ")"643 R_PAREN@958..959 ")"
644 COMMA@959..960 ","644 COMMA@959..960 ","
645 WHITESPACE@960..961 " "645 WHITESPACE@960..961 " "
646 ARG@961..1023646 ARG@961..1023
647 EXPR_APPLY@961..1023647 EXPR_APPLY@961..1023
648 EXPR_INDEX@961..972648 EXPR_INDEX@961..972
649 EXPR_VAR@961..964649 EXPR_VAR@961..964
650 NAME@961..964650 NAME@961..964
651 IDENT@961..964 "std"651 IDENT@961..964 "std"
652 DOT@964..965 "."652 DOT@964..965 "."
653 NAME@965..972653 NAME@965..972
654 IDENT@965..972 "reverse"654 IDENT@965..972 "reverse"
655 ARGS_DESC@972..1023655 ARGS_DESC@972..1023
656 L_PAREN@972..973 "("656 L_PAREN@972..973 "("
657 ARG@973..1022657 ARG@973..1022
658 EXPR_APPLY@973..1022658 EXPR_APPLY@973..1022
659 EXPR_INDEX@973..987659 EXPR_INDEX@973..987
660 EXPR_VAR@973..976660 EXPR_VAR@973..976
661 NAME@973..976661 NAME@973..976
662 IDENT@973..976 "std"662 IDENT@973..976 "std"
663 DOT@976..977 "."663 DOT@976..977 "."
664 NAME@977..987664 NAME@977..987
665 IDENT@977..987 "splitLimit"665 IDENT@977..987 "splitLimit"
666 ARGS_DESC@987..1022666 ARGS_DESC@987..1022
667 L_PAREN@987..988 "("667 L_PAREN@987..988 "("
668 ARG@988..999668 ARG@988..999
669 EXPR_APPLY@988..999669 EXPR_APPLY@988..999
670 EXPR_VAR@988..994670 EXPR_VAR@988..994
671 NAME@988..994671 NAME@988..994
672 IDENT@988..994 "revStr"672 IDENT@988..994 "revStr"
673 ARGS_DESC@994..999673 ARGS_DESC@994..999
674 L_PAREN@994..995 "("674 L_PAREN@994..995 "("
675 ARG@995..998675 ARG@995..998
676 EXPR_VAR@995..998676 EXPR_VAR@995..998
677 NAME@995..998677 NAME@995..998
678 IDENT@995..998 "str"678 IDENT@995..998 "str"
679 R_PAREN@998..999 ")"679 R_PAREN@998..999 ")"
680 COMMA@999..1000 ","680 COMMA@999..1000 ","
681 WHITESPACE@1000..1001 " "681 WHITESPACE@1000..1001 " "
682 ARG@1001..1010682 ARG@1001..1010
683 EXPR_APPLY@1001..1010683 EXPR_APPLY@1001..1010
684 EXPR_VAR@1001..1007684 EXPR_VAR@1001..1007
685 NAME@1001..1007685 NAME@1001..1007
686 IDENT@1001..1007 "revStr"686 IDENT@1001..1007 "revStr"
687 ARGS_DESC@1007..1010687 ARGS_DESC@1007..1010
688 L_PAREN@1007..1008 "("688 L_PAREN@1007..1008 "("
689 ARG@1008..1009689 ARG@1008..1009
690 EXPR_VAR@1008..1009690 EXPR_VAR@1008..1009
691 NAME@1008..1009691 NAME@1008..1009
692 IDENT@1008..1009 "c"692 IDENT@1008..1009 "c"
693 R_PAREN@1009..1010 ")"693 R_PAREN@1009..1010 ")"
694 COMMA@1010..1011 ","694 COMMA@1010..1011 ","
695 WHITESPACE@1011..1012 " "695 WHITESPACE@1011..1012 " "
696 ARG@1012..1021696 ARG@1012..1021
697 EXPR_VAR@1012..1021697 EXPR_VAR@1012..1021
698 NAME@1012..1021698 NAME@1012..1021
699 IDENT@1012..1021 "maxsplits"699 IDENT@1012..1021 "maxsplits"
700 R_PAREN@1021..1022 ")"700 R_PAREN@1021..1022 ")"
701 R_PAREN@1022..1023 ")"701 R_PAREN@1022..1023 ")"
702 R_PAREN@1023..1024 ")"702 R_PAREN@1023..1024 ")"
703 COMMA@1024..1025 ","703 COMMA@1024..1025 ","
704 WHITESPACE@1025..1029 "\n\n "704 WHITESPACE@1025..1029 "\n\n "
705 MEMBER_FIELD_METHOD@1029..1071705 MEMBER_FIELD_METHOD@1029..1071
1819 R_PAREN@2824..2825 ")"1819 R_PAREN@2824..2825 ")"
1820 COLONCOLON@2825..2827 "::"1820 COLONCOLON@2825..2827 "::"
1821 WHITESPACE@2827..2832 "\n "1821 WHITESPACE@2827..2832 "\n "
1822 EXPR_LOCAL@2832..34951822 STMT_LOCAL@2832..3136
1823 LOCAL_KW@2832..2837 "local"1823 LOCAL_KW@2832..2837 "local"
1824 WHITESPACE@2837..2838 " "1824 WHITESPACE@2837..2838 " "
1825 BIND_FUNCTION@2838..31351825 BIND_FUNCTION@2838..3135
1855 EXPR_ARRAY_COMP@2876..31341855 EXPR_ARRAY_COMP@2876..3134
1856 L_BRACK@2876..2877 "["1856 L_BRACK@2876..2877 "["
1857 WHITESPACE@2877..2886 "\n "1857 WHITESPACE@2877..2886 "\n "
1858 EXPR_LOCAL@2886..30851858 STMT_LOCAL@2886..2918
1859 LOCAL_KW@2886..2891 "local"1859 LOCAL_KW@2886..2891 "local"
1860 WHITESPACE@2891..2892 " "1860 WHITESPACE@2891..2892 " "
1861 BIND_DESTRUCT@2892..29171861 BIND_DESTRUCT@2892..2917
1876 IDENT@2915..2916 "k"1876 IDENT@2915..2916 "k"
1877 R_BRACK@2916..2917 "]"1877 R_BRACK@2916..2917 "]"
1878 SEMI@2917..2918 ";"1878 SEMI@2917..2918 ";"
1879 WHITESPACE@2918..2927 "\n "1879 WHITESPACE@2918..2927 "\n "
1880 EXPR_IF_THEN_ELSE@2927..30851880 EXPR_IF_THEN_ELSE@2927..3085
1881 IF_KW@2927..2929 "if"1881 IF_KW@2927..2929 "if"
1882 WHITESPACE@2929..2930 " "1882 WHITESPACE@2929..2930 " "
1883 EXPR_APPLY@2930..29581883 EXPR_APPLY@2930..2958
1884 EXPR_INDEX@2930..29411884 EXPR_INDEX@2930..2941
1885 EXPR_VAR@2930..29331885 EXPR_VAR@2930..2933
1886 NAME@2930..29331886 NAME@2930..2933
1887 IDENT@2930..2933 "std"1887 IDENT@2930..2933 "std"
1888 DOT@2933..2934 "."1888 DOT@2933..2934 "."
1889 NAME@2934..29411889 NAME@2934..2941
1890 IDENT@2934..2941 "isArray"1890 IDENT@2934..2941 "isArray"
1891 ARGS_DESC@2941..29581891 ARGS_DESC@2941..2958
1892 L_PAREN@2941..2942 "("1892 L_PAREN@2941..2942 "("
1893 ARG@2942..29571893 ARG@2942..2957
1894 EXPR_VAR@2942..29571894 EXPR_VAR@2942..2957
1895 NAME@2942..29571895 NAME@2942..2957
1896 IDENT@2942..2957 "value_or_values"1896 IDENT@2942..2957 "value_or_values"
1897 R_PAREN@2957..2958 ")"1897 R_PAREN@2957..2958 ")"
1898 WHITESPACE@2958..2959 " "1898 WHITESPACE@2958..2959 " "
1899 THEN_KW@2959..2963 "then"1899 THEN_KW@2959..2963 "then"
1900 WHITESPACE@2963..2974 "\n "1900 WHITESPACE@2963..2974 "\n "
1901 TRUE_EXPR@2974..30271901 TRUE_EXPR@2974..3027
1902 EXPR_ARRAY_COMP@2974..30271902 EXPR_ARRAY_COMP@2974..3027
1903 L_BRACK@2974..2975 "["1903 L_BRACK@2974..2975 "["
1904 EXPR_BINARY@2975..29971904 EXPR_BINARY@2975..2997
1905 LHS_EXPR@2975..29841905 LHS_EXPR@2975..2984
1906 EXPR_STRING@2975..29841906 EXPR_STRING@2975..2984
1907 STRING_SINGLE@2975..2984 "'%s = %s'"1907 STRING_SINGLE@2975..2984 "'%s = %s'"
1908 WHITESPACE@2984..2985 " "1908 WHITESPACE@2984..2985 " "
1909 MODULO@2985..2986 "%"1909 MODULO@2985..2986 "%"
1910 WHITESPACE@2986..2987 " "1910 WHITESPACE@2986..2987 " "
1911 EXPR_ARRAY@2987..29971911 EXPR_ARRAY@2987..2997
1912 L_BRACK@2987..2988 "["1912 L_BRACK@2987..2988 "["
1913 EXPR_VAR@2988..29891913 EXPR_VAR@2988..2989
1914 NAME@2988..29891914 NAME@2988..2989
1915 IDENT@2988..2989 "k"1915 IDENT@2988..2989 "k"
1916 COMMA@2989..2990 ","1916 COMMA@2989..2990 ","
1917 WHITESPACE@2990..2991 " "1917 WHITESPACE@2990..2991 " "
1918 EXPR_VAR@2991..29961918 EXPR_VAR@2991..2996
1919 NAME@2991..29961919 NAME@2991..2996
1920 IDENT@2991..2996 "value"1920 IDENT@2991..2996 "value"
1921 R_BRACK@2996..2997 "]"1921 R_BRACK@2996..2997 "]"
1922 WHITESPACE@2997..2998 " "1922 WHITESPACE@2997..2998 " "
1923 FOR_SPEC@2998..30261923 FOR_SPEC@2998..3026
1924 FOR_KW@2998..3001 "for"1924 FOR_KW@2998..3001 "for"
1925 WHITESPACE@3001..3002 " "1925 WHITESPACE@3001..3002 " "
1926 NAME@3002..30071926 NAME@3002..3007
1927 IDENT@3002..3007 "value"1927 IDENT@3002..3007 "value"
1928 WHITESPACE@3007..3008 " "1928 WHITESPACE@3007..3008 " "
1929 IN_KW@3008..3010 "in"1929 IN_KW@3008..3010 "in"
1930 WHITESPACE@3010..3011 " "1930 WHITESPACE@3010..3011 " "
1931 EXPR_VAR@3011..30261931 EXPR_VAR@3011..3026
1932 NAME@3011..30261932 NAME@3011..3026
1933 IDENT@3011..3026 "value_or_values"1933 IDENT@3011..3026 "value_or_values"
1934 R_BRACK@3026..3027 "]"1934 R_BRACK@3026..3027 "]"
1935 WHITESPACE@3027..3036 "\n "1935 WHITESPACE@3027..3036 "\n "
1936 ELSE_KW@3036..3040 "else"1936 ELSE_KW@3036..3040 "else"
1937 WHITESPACE@3040..3051 "\n "1937 WHITESPACE@3040..3051 "\n "
1938 FALSE_EXPR@3051..30851938 FALSE_EXPR@3051..3085
1939 EXPR_ARRAY@3051..30851939 EXPR_ARRAY@3051..3085
1940 L_BRACK@3051..3052 "["1940 L_BRACK@3051..3052 "["
1941 EXPR_BINARY@3052..30841941 EXPR_BINARY@3052..3084
1942 LHS_EXPR@3052..30611942 LHS_EXPR@3052..3061
1943 EXPR_STRING@3052..30611943 EXPR_STRING@3052..3061
1944 STRING_SINGLE@3052..3061 "'%s = %s'"1944 STRING_SINGLE@3052..3061 "'%s = %s'"
1945 WHITESPACE@3061..3062 " "1945 WHITESPACE@3061..3062 " "
1946 MODULO@3062..3063 "%"1946 MODULO@3062..3063 "%"
1947 WHITESPACE@3063..3064 " "1947 WHITESPACE@3063..3064 " "
1948 EXPR_ARRAY@3064..30841948 EXPR_ARRAY@3064..3084
1949 L_BRACK@3064..3065 "["1949 L_BRACK@3064..3065 "["
1950 EXPR_VAR@3065..30661950 EXPR_VAR@3065..3066
1951 NAME@3065..30661951 NAME@3065..3066
1952 IDENT@3065..3066 "k"1952 IDENT@3065..3066 "k"
1953 COMMA@3066..3067 ","1953 COMMA@3066..3067 ","
1954 WHITESPACE@3067..3068 " "1954 WHITESPACE@3067..3068 " "
1955 EXPR_VAR@3068..30831955 EXPR_VAR@3068..3083
1956 NAME@3068..30831956 NAME@3068..3083
1957 IDENT@3068..3083 "value_or_values"1957 IDENT@3068..3083 "value_or_values"
1958 R_BRACK@3083..3084 "]"1958 R_BRACK@3083..3084 "]"
1959 R_BRACK@3084..3085 "]"1959 R_BRACK@3084..3085 "]"
1960 WHITESPACE@3085..3095 "\n\n "1960 WHITESPACE@3085..3095 "\n\n "
1961 FOR_SPEC@3095..31261961 FOR_SPEC@3095..3126
1962 FOR_KW@3095..3098 "for"1962 FOR_KW@3095..3098 "for"
1985 R_BRACK@3133..3134 "]"1985 R_BRACK@3133..3134 "]"
1986 R_PAREN@3134..3135 ")"1986 R_PAREN@3134..3135 ")"
1987 SEMI@3135..3136 ";"1987 SEMI@3135..3136 ";"
1988 WHITESPACE@3136..3142 "\n\n "1988 WHITESPACE@3136..3142 "\n\n "
1989 EXPR_LOCAL@3142..34951989 STMT_LOCAL@3142..3424
1990 LOCAL_KW@3142..3147 "local"1990 LOCAL_KW@3142..3147 "local"
1991 WHITESPACE@3147..3148 " "1991 WHITESPACE@3147..3148 " "
1992 BIND_FUNCTION@3148..32161992 BIND_FUNCTION@3148..3216
1993 NAME@3148..31611993 NAME@3148..3161
1994 IDENT@3148..3161 "section_lines"1994 IDENT@3148..3161 "section_lines"
1995 PARAMS_DESC@3161..31751995 PARAMS_DESC@3161..3175
1996 L_PAREN@3161..3162 "("1996 L_PAREN@3161..3162 "("
1997 PARAM@3162..31671997 PARAM@3162..3167
1998 DESTRUCT_FULL@3162..31671998 DESTRUCT_FULL@3162..3167
1999 NAME@3162..31671999 NAME@3162..3167
2000 IDENT@3162..3167 "sname"2000 IDENT@3162..3167 "sname"
2001 COMMA@3167..3168 ","2001 COMMA@3167..3168 ","
2002 WHITESPACE@3168..3169 " "2002 WHITESPACE@3168..3169 " "
2003 PARAM@3169..31742003 PARAM@3169..3174
2004 DESTRUCT_FULL@3169..31742004 DESTRUCT_FULL@3169..3174
2005 NAME@3169..31742005 NAME@3169..3174
2006 IDENT@3169..3174 "sbody"2006 IDENT@3169..3174 "sbody"
2007 R_PAREN@3174..3175 ")"2007 R_PAREN@3174..3175 ")"
2008 WHITESPACE@3175..3176 " "2008 WHITESPACE@3175..3176 " "
2009 ASSIGN@3176..3177 "="2009 ASSIGN@3176..3177 "="
2010 WHITESPACE@3177..3178 " "2010 WHITESPACE@3177..3178 " "
2011 EXPR_BINARY@3178..32162011 EXPR_BINARY@3178..3216
2012 LHS_EXPR@3178..31962012 LHS_EXPR@3178..3196
2013 EXPR_ARRAY@3178..31962013 EXPR_ARRAY@3178..3196
2014 L_BRACK@3178..3179 "["2014 L_BRACK@3178..3179 "["
2015 EXPR_BINARY@3179..31952015 EXPR_BINARY@3179..3195
2016 LHS_EXPR@3179..31852016 LHS_EXPR@3179..3185
2017 EXPR_STRING@3179..31852017 EXPR_STRING@3179..3185
2018 STRING_SINGLE@3179..3185 "'[%s]'"2018 STRING_SINGLE@3179..3185 "'[%s]'"
2019 WHITESPACE@3185..3186 " "2019 WHITESPACE@3185..3186 " "
2020 MODULO@3186..3187 "%"2020 MODULO@3186..3187 "%"
2021 WHITESPACE@3187..3188 " "2021 WHITESPACE@3187..3188 " "
2022 EXPR_ARRAY@3188..31952022 EXPR_ARRAY@3188..3195
2023 L_BRACK@3188..3189 "["2023 L_BRACK@3188..3189 "["
2024 EXPR_VAR@3189..31942024 EXPR_VAR@3189..3194
2025 NAME@3189..31942025 NAME@3189..3194
2026 IDENT@3189..3194 "sname"2026 IDENT@3189..3194 "sname"
2027 R_BRACK@3194..3195 "]"2027 R_BRACK@3194..3195 "]"
2028 R_BRACK@3195..3196 "]"2028 R_BRACK@3195..3196 "]"
2029 WHITESPACE@3196..3197 " "2029 WHITESPACE@3196..3197 " "
2030 PLUS@3197..3198 "+"2030 PLUS@3197..3198 "+"
2031 WHITESPACE@3198..3199 " "2031 WHITESPACE@3198..3199 " "
2032 EXPR_APPLY@3199..32162032 EXPR_APPLY@3199..3216
2033 EXPR_VAR@3199..32092033 EXPR_VAR@3199..3209
2034 NAME@3199..32092034 NAME@3199..3209
2035 IDENT@3199..3209 "body_lines"2035 IDENT@3199..3209 "body_lines"
2036 ARGS_DESC@3209..32162036 ARGS_DESC@3209..3216
2037 L_PAREN@3209..3210 "("2037 L_PAREN@3209..3210 "("
2038 ARG@3210..32152038 ARG@3210..3215
2039 EXPR_VAR@3210..32152039 EXPR_VAR@3210..3215
2040 NAME@3210..32152040 NAME@3210..3215
2041 IDENT@3210..3215 "sbody"2041 IDENT@3210..3215 "sbody"
2042 R_PAREN@3215..3216 ")"2042 R_PAREN@3215..3216 ")"
2043 COMMA@3216..3217 ","2043 COMMA@3216..3217 ","
2044 WHITESPACE@3217..3228 "\n "2044 WHITESPACE@3217..3228 "\n "
2045 BIND_DESTRUCT@3228..33032045 BIND_DESTRUCT@3228..3303
2046 DESTRUCT_FULL@3228..32372046 DESTRUCT_FULL@3228..3237
2047 NAME@3228..32372047 NAME@3228..3237
2048 IDENT@3228..3237 "main_body"2048 IDENT@3228..3237 "main_body"
2049 WHITESPACE@3237..3238 " "2049 WHITESPACE@3237..3238 " "
2050 ASSIGN@3238..3239 "="2050 ASSIGN@3238..3239 "="
2051 WHITESPACE@3239..3240 " "2051 WHITESPACE@3239..3240 " "
2052 EXPR_IF_THEN_ELSE@3240..33032052 EXPR_IF_THEN_ELSE@3240..3303
2053 IF_KW@3240..3242 "if"2053 IF_KW@3240..3242 "if"
2054 WHITESPACE@3242..3243 " "2054 WHITESPACE@3242..3243 " "
2055 EXPR_APPLY@3243..32692055 EXPR_APPLY@3243..3269
2056 EXPR_INDEX@3243..32562056 EXPR_INDEX@3243..3256
2057 EXPR_VAR@3243..32462057 EXPR_VAR@3243..3246
2058 NAME@3243..32462058 NAME@3243..3246
2059 IDENT@3243..3246 "std"2059 IDENT@3243..3246 "std"
2060 DOT@3246..3247 "."2060 DOT@3246..3247 "."
2061 NAME@3247..32562061 NAME@3247..3256
2062 IDENT@3247..3256 "objectHas"2062 IDENT@3247..3256 "objectHas"
2063 ARGS_DESC@3256..32692063 ARGS_DESC@3256..3269
2064 L_PAREN@3256..3257 "("2064 L_PAREN@3256..3257 "("
2065 ARG@3257..32602065 ARG@3257..3260
2066 EXPR_VAR@3257..32602066 EXPR_VAR@3257..3260
2067 NAME@3257..32602067 NAME@3257..3260
2068 IDENT@3257..3260 "ini"2068 IDENT@3257..3260 "ini"
2069 COMMA@3260..3261 ","2069 COMMA@3260..3261 ","
2070 WHITESPACE@3261..3262 " "2070 WHITESPACE@3261..3262 " "
2071 ARG@3262..32682071 ARG@3262..3268
2072 EXPR_STRING@3262..32682072 EXPR_STRING@3262..3268
2073 STRING_SINGLE@3262..3268 "'main'"2073 STRING_SINGLE@3262..3268 "'main'"
2074 R_PAREN@3268..3269 ")"2074 R_PAREN@3268..3269 ")"
2075 WHITESPACE@3269..3270 " "2075 WHITESPACE@3269..3270 " "
2076 THEN_KW@3270..3274 "then"2076 THEN_KW@3270..3274 "then"
2077 WHITESPACE@3274..3275 " "2077 WHITESPACE@3274..3275 " "
2078 TRUE_EXPR@3275..32952078 TRUE_EXPR@3275..3295
2079 EXPR_APPLY@3275..32952079 EXPR_APPLY@3275..3295
2080 EXPR_VAR@3275..32852080 EXPR_VAR@3275..3285
2081 NAME@3275..32852081 NAME@3275..3285
2082 IDENT@3275..3285 "body_lines"2082 IDENT@3275..3285 "body_lines"
2083 ARGS_DESC@3285..32952083 ARGS_DESC@3285..3295
2084 L_PAREN@3285..3286 "("2084 L_PAREN@3285..3286 "("
2085 ARG@3286..32942085 ARG@3286..3294
2086 EXPR_INDEX@3286..32942086 EXPR_INDEX@3286..3294
2087 EXPR_VAR@3286..32892087 EXPR_VAR@3286..3289
2088 NAME@3286..32892088 NAME@3286..3289
2089 IDENT@3286..3289 "ini"2089 IDENT@3286..3289 "ini"
2090 DOT@3289..3290 "."2090 DOT@3289..3290 "."
2091 NAME@3290..32942091 NAME@3290..3294
2092 IDENT@3290..3294 "main"2092 IDENT@3290..3294 "main"
2093 R_PAREN@3294..3295 ")"2093 R_PAREN@3294..3295 ")"
2094 WHITESPACE@3295..3296 " "2094 WHITESPACE@3295..3296 " "
2095 ELSE_KW@3296..3300 "else"2095 ELSE_KW@3296..3300 "else"
2096 WHITESPACE@3300..3301 " "2096 WHITESPACE@3300..3301 " "
2097 FALSE_EXPR@3301..33032097 FALSE_EXPR@3301..3303
2098 EXPR_ARRAY@3301..33032098 EXPR_ARRAY@3301..3303
2099 L_BRACK@3301..3302 "["2099 L_BRACK@3301..3302 "["
2100 R_BRACK@3302..3303 "]"2100 R_BRACK@3302..3303 "]"
2101 COMMA@3303..3304 ","2101 COMMA@3303..3304 ","
2102 WHITESPACE@3304..3315 "\n "2102 WHITESPACE@3304..3315 "\n "
2103 BIND_DESTRUCT@3315..34232103 BIND_DESTRUCT@3315..3423
2104 DESTRUCT_FULL@3315..33272104 DESTRUCT_FULL@3315..3327
2105 NAME@3315..33272105 NAME@3315..3327
2106 IDENT@3315..3327 "all_sections"2106 IDENT@3315..3327 "all_sections"
2107 WHITESPACE@3327..3328 " "2107 WHITESPACE@3327..3328 " "
2108 ASSIGN@3328..3329 "="2108 ASSIGN@3328..3329 "="
2109 WHITESPACE@3329..3330 " "2109 WHITESPACE@3329..3330 " "
2110 EXPR_ARRAY_COMP@3330..34232110 EXPR_ARRAY_COMP@3330..3423
2111 L_BRACK@3330..3331 "["2111 L_BRACK@3330..3331 "["
2112 WHITESPACE@3331..3338 "\n "2112 WHITESPACE@3331..3338 "\n "
2113 EXPR_APPLY@3338..33712113 EXPR_APPLY@3338..3371
2114 EXPR_VAR@3338..33512114 EXPR_VAR@3338..3351
2115 NAME@3338..33512115 NAME@3338..3351
2116 IDENT@3338..3351 "section_lines"2116 IDENT@3338..3351 "section_lines"
2117 ARGS_DESC@3351..33712117 ARGS_DESC@3351..3371
2118 L_PAREN@3351..3352 "("2118 L_PAREN@3351..3352 "("
2119 ARG@3352..33532119 ARG@3352..3353
2120 EXPR_VAR@3352..33532120 EXPR_VAR@3352..3353
2121 NAME@3352..33532121 NAME@3352..3353
2122 IDENT@3352..3353 "k"2122 IDENT@3352..3353 "k"
2123 COMMA@3353..3354 ","2123 COMMA@3353..3354 ","
2124 WHITESPACE@3354..3355 " "2124 WHITESPACE@3354..3355 " "
2125 ARG@3355..33702125 ARG@3355..3370
2126 EXPR_INDEX_EXPR@3355..33702126 EXPR_INDEX_EXPR@3355..3370
2127 LHS_EXPR@3355..33672127 LHS_EXPR@3355..3367
2128 EXPR_INDEX@3355..33672128 EXPR_INDEX@3355..3367
2129 EXPR_VAR@3355..33582129 EXPR_VAR@3355..3358
2130 NAME@3355..33582130 NAME@3355..3358
2131 IDENT@3355..3358 "ini"2131 IDENT@3355..3358 "ini"
2132 DOT@3358..3359 "."2132 DOT@3358..3359 "."
2133 NAME@3359..33672133 NAME@3359..3367
2134 IDENT@3359..3367 "sections"2134 IDENT@3359..3367 "sections"
2135 L_BRACK@3367..3368 "["2135 L_BRACK@3367..3368 "["
2136 EXPR_VAR@3368..33692136 EXPR_VAR@3368..3369
2137 NAME@3368..33692137 NAME@3368..3369
2138 IDENT@3368..3369 "k"2138 IDENT@3368..3369 "k"
2139 R_BRACK@3369..3370 "]"2139 R_BRACK@3369..3370 "]"
2140 R_PAREN@3370..3371 ")"2140 R_PAREN@3370..3371 ")"
2141 WHITESPACE@3371..3378 "\n "2141 WHITESPACE@3371..3378 "\n "
2142 FOR_SPEC@3378..34172142 FOR_SPEC@3378..3417
2143 FOR_KW@3378..3381 "for"2143 FOR_KW@3378..3381 "for"
2144 WHITESPACE@3381..3382 " "2144 WHITESPACE@3381..3382 " "
2145 NAME@3382..33832145 NAME@3382..3383
2146 IDENT@3382..3383 "k"2146 IDENT@3382..3383 "k"
2147 WHITESPACE@3383..3384 " "2147 WHITESPACE@3383..3384 " "
2148 IN_KW@3384..3386 "in"2148 IN_KW@3384..3386 "in"
2149 WHITESPACE@3386..3387 " "2149 WHITESPACE@3386..3387 " "
2150 EXPR_APPLY@3387..34172150 EXPR_APPLY@3387..3417
2151 EXPR_INDEX@3387..34032151 EXPR_INDEX@3387..3403
2152 EXPR_VAR@3387..33902152 EXPR_VAR@3387..3390
2153 NAME@3387..33902153 NAME@3387..3390
2154 IDENT@3387..3390 "std"2154 IDENT@3387..3390 "std"
2155 DOT@3390..3391 "."2155 DOT@3390..3391 "."
2156 NAME@3391..34032156 NAME@3391..3403
2157 IDENT@3391..3403 "objectFields"2157 IDENT@3391..3403 "objectFields"
2158 ARGS_DESC@3403..34172158 ARGS_DESC@3403..3417
2159 L_PAREN@3403..3404 "("2159 L_PAREN@3403..3404 "("
2160 ARG@3404..34162160 ARG@3404..3416
2161 EXPR_INDEX@3404..34162161 EXPR_INDEX@3404..3416
2162 EXPR_VAR@3404..34072162 EXPR_VAR@3404..3407
2163 NAME@3404..34072163 NAME@3404..3407
2164 IDENT@3404..3407 "ini"2164 IDENT@3404..3407 "ini"
2165 DOT@3407..3408 "."2165 DOT@3407..3408 "."
2166 NAME@3408..34162166 NAME@3408..3416
2167 IDENT@3408..3416 "sections"2167 IDENT@3408..3416 "sections"
2168 R_PAREN@3416..3417 ")"2168 R_PAREN@3416..3417 ")"
2169 WHITESPACE@3417..3422 "\n "2169 WHITESPACE@3417..3422 "\n "
2170 R_BRACK@3422..3423 "]"2170 R_BRACK@3422..3423 "]"
2171 SEMI@3423..3424 ";"2171 SEMI@3423..3424 ";"
2172 WHITESPACE@3424..3429 "\n "2172 WHITESPACE@3424..3429 "\n "
2173 EXPR_APPLY@3429..34952173 EXPR_APPLY@3429..3495
2174 EXPR_INDEX@3429..34372174 EXPR_INDEX@3429..3437
2175 EXPR_VAR@3429..34322175 EXPR_VAR@3429..3432
2176 NAME@3429..34322176 NAME@3429..3432
2177 IDENT@3429..3432 "std"2177 IDENT@3429..3432 "std"
2178 DOT@3432..3433 "."2178 DOT@3432..3433 "."
2179 NAME@3433..34372179 NAME@3433..3437
2180 IDENT@3433..3437 "join"2180 IDENT@3433..3437 "join"
2181 ARGS_DESC@3437..34952181 ARGS_DESC@3437..3495
2182 L_PAREN@3437..3438 "("2182 L_PAREN@3437..3438 "("
2183 ARG@3438..34422183 ARG@3438..3442
2184 EXPR_STRING@3438..34422184 EXPR_STRING@3438..3442
2185 STRING_SINGLE@3438..3442 "'\\n'"2185 STRING_SINGLE@3438..3442 "'\\n'"
2186 COMMA@3442..3443 ","2186 COMMA@3442..3443 ","
2187 WHITESPACE@3443..3444 " "2187 WHITESPACE@3443..3444 " "
2188 ARG@3444..34942188 ARG@3444..3494
2189 EXPR_BINARY@3444..34942189 EXPR_BINARY@3444..3494
2190 LHS_EXPR@3444..34872190 LHS_EXPR@3444..3487
2191 EXPR_BINARY@3444..34872191 EXPR_BINARY@3444..3487
2192 LHS_EXPR@3444..34532192 LHS_EXPR@3444..3453
2193 EXPR_VAR@3444..34532193 EXPR_VAR@3444..3453
2194 NAME@3444..34532194 NAME@3444..3453
2195 IDENT@3444..3453 "main_body"2195 IDENT@3444..3453 "main_body"
2196 WHITESPACE@3453..3454 " "2196 WHITESPACE@3453..3454 " "
2197 PLUS@3454..3455 "+"2197 PLUS@3454..3455 "+"
2198 WHITESPACE@3455..3456 " "2198 WHITESPACE@3455..3456 " "
2199 EXPR_APPLY@3456..34872199 EXPR_APPLY@3456..3487
2200 EXPR_INDEX@3456..34732200 EXPR_INDEX@3456..3473
2201 EXPR_VAR@3456..34592201 EXPR_VAR@3456..3459
2202 NAME@3456..34592202 NAME@3456..3459
2203 IDENT@3456..3459 "std"2203 IDENT@3456..3459 "std"
2204 DOT@3459..3460 "."2204 DOT@3459..3460 "."
2205 NAME@3460..34732205 NAME@3460..3473
2206 IDENT@3460..3473 "flattenArrays"2206 IDENT@3460..3473 "flattenArrays"
2207 ARGS_DESC@3473..34872207 ARGS_DESC@3473..3487
2208 L_PAREN@3473..3474 "("2208 L_PAREN@3473..3474 "("
2209 ARG@3474..34862209 ARG@3474..3486
2210 EXPR_VAR@3474..34862210 EXPR_VAR@3474..3486
2211 NAME@3474..34862211 NAME@3474..3486
2212 IDENT@3474..3486 "all_sections"2212 IDENT@3474..3486 "all_sections"
2213 R_PAREN@3486..3487 ")"2213 R_PAREN@3486..3487 ")"
2214 WHITESPACE@3487..3488 " "2214 WHITESPACE@3487..3488 " "
2215 PLUS@3488..3489 "+"2215 PLUS@3488..3489 "+"
2216 WHITESPACE@3489..3490 " "2216 WHITESPACE@3489..3490 " "
2217 EXPR_ARRAY@3490..34942217 EXPR_ARRAY@3490..3494
2218 L_BRACK@3490..3491 "["2218 L_BRACK@3490..3491 "["
2219 EXPR_STRING@3491..34932219 EXPR_STRING@3491..3493
2220 STRING_SINGLE@3491..3493 "''"2220 STRING_SINGLE@3491..3493 "''"
2221 R_BRACK@3493..3494 "]"2221 R_BRACK@3493..3494 "]"
2222 R_PAREN@3494..3495 ")"2222 R_PAREN@3494..3495 ")"
2223 COMMA@3495..3496 ","2223 COMMA@3495..3496 ","
2224 WHITESPACE@3496..3500 "\n\n "2224 WHITESPACE@3496..3500 "\n\n "
2225 MEMBER_FIELD_METHOD@3500..35532225 MEMBER_FIELD_METHOD@3500..3553
2300 R_PAREN@3639..3640 ")"2300 R_PAREN@3639..3640 ")"
2301 COLONCOLON@3640..3642 "::"2301 COLONCOLON@3640..3642 "::"
2302 WHITESPACE@3642..3647 "\n "2302 WHITESPACE@3642..3647 "\n "
2303 EXPR_LOCAL@3647..38352303 STMT_LOCAL@3647..3678
2304 LOCAL_KW@3647..3652 "local"2304 LOCAL_KW@3647..3652 "local"
2305 WHITESPACE@3652..3653 " "2305 WHITESPACE@3652..3653 " "
2306 BIND_DESTRUCT@3653..36772306 BIND_DESTRUCT@3653..3677
2326 IDENT@3672..3676 "str_"2326 IDENT@3672..3676 "str_"
2327 R_PAREN@3676..3677 ")"2327 R_PAREN@3676..3677 ")"
2328 SEMI@3677..3678 ";"2328 SEMI@3677..3678 ";"
2329 WHITESPACE@3678..3683 "\n "2329 WHITESPACE@3678..3683 "\n "
2330 EXPR_LOCAL@3683..38352330 STMT_LOCAL@3683..3765
2331 LOCAL_KW@3683..3688 "local"2331 LOCAL_KW@3683..3688 "local"
2332 WHITESPACE@3688..3689 " "2332 WHITESPACE@3688..3689 " "
2333 BIND_FUNCTION@3689..37642333 BIND_FUNCTION@3689..3764
2334 NAME@3689..36942334 NAME@3689..3694
2335 IDENT@3689..3694 "trans"2335 IDENT@3689..3694 "trans"
2336 PARAMS_DESC@3694..36982336 PARAMS_DESC@3694..3698
2337 L_PAREN@3694..3695 "("2337 L_PAREN@3694..3695 "("
2338 PARAM@3695..36972338 PARAM@3695..3697
2339 DESTRUCT_FULL@3695..36972339 DESTRUCT_FULL@3695..3697
2340 NAME@3695..36972340 NAME@3695..3697
2341 IDENT@3695..3697 "ch"2341 IDENT@3695..3697 "ch"
2342 R_PAREN@3697..3698 ")"2342 R_PAREN@3697..3698 ")"
2343 WHITESPACE@3698..3699 " "2343 WHITESPACE@3698..3699 " "
2344 ASSIGN@3699..3700 "="2344 ASSIGN@3699..3700 "="
2345 WHITESPACE@3700..3707 "\n "2345 WHITESPACE@3700..3707 "\n "
2346 EXPR_IF_THEN_ELSE@3707..37642346 EXPR_IF_THEN_ELSE@3707..3764
2347 IF_KW@3707..3709 "if"2347 IF_KW@3707..3709 "if"
2348 WHITESPACE@3709..3710 " "2348 WHITESPACE@3709..3710 " "
2349 EXPR_BINARY@3710..37192349 EXPR_BINARY@3710..3719
2350 LHS_EXPR@3710..37122350 LHS_EXPR@3710..3712
2351 EXPR_VAR@3710..37122351 EXPR_VAR@3710..3712
2352 NAME@3710..37122352 NAME@3710..3712
2353 IDENT@3710..3712 "ch"2353 IDENT@3710..3712 "ch"
2354 WHITESPACE@3712..3713 " "2354 WHITESPACE@3712..3713 " "
2355 EQ@3713..3715 "=="2355 EQ@3713..3715 "=="
2356 WHITESPACE@3715..3716 " "2356 WHITESPACE@3715..3716 " "
2357 EXPR_STRING@3716..37192357 EXPR_STRING@3716..3719
2358 STRING_DOUBLE@3716..3719 "\"'\""2358 STRING_DOUBLE@3716..3719 "\"'\""
2359 WHITESPACE@3719..3720 " "2359 WHITESPACE@3719..3720 " "
2360 THEN_KW@3720..3724 "then"2360 THEN_KW@3720..3724 "then"
2361 WHITESPACE@3724..3733 "\n "2361 WHITESPACE@3724..3733 "\n "
2362 TRUE_EXPR@3733..37422362 TRUE_EXPR@3733..3742
2363 EXPR_STRING@3733..37422363 EXPR_STRING@3733..3742
2364 STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\""2364 STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\""
2365 WHITESPACE@3742..3749 "\n "2365 WHITESPACE@3742..3749 "\n "
2366 ELSE_KW@3749..3753 "else"2366 ELSE_KW@3749..3753 "else"
2367 WHITESPACE@3753..3762 "\n "2367 WHITESPACE@3753..3762 "\n "
2368 FALSE_EXPR@3762..37642368 FALSE_EXPR@3762..3764
2369 EXPR_VAR@3762..37642369 EXPR_VAR@3762..3764
2370 NAME@3762..37642370 NAME@3762..3764
2371 IDENT@3762..3764 "ch"2371 IDENT@3762..3764 "ch"
2372 SEMI@3764..3765 ";"2372 SEMI@3764..3765 ";"
2373 WHITESPACE@3765..3770 "\n "2373 WHITESPACE@3765..3770 "\n "
2374 EXPR_BINARY@3770..38352374 EXPR_BINARY@3770..3835
2375 LHS_EXPR@3770..37762375 LHS_EXPR@3770..3776
2376 EXPR_STRING@3770..37762376 EXPR_STRING@3770..3776
2377 STRING_DOUBLE@3770..3776 "\"'%s'\""2377 STRING_DOUBLE@3770..3776 "\"'%s'\""
2378 WHITESPACE@3776..3777 " "2378 WHITESPACE@3776..3777 " "
2379 MODULO@3777..3778 "%"2379 MODULO@3777..3778 "%"
2380 WHITESPACE@3778..3779 " "2380 WHITESPACE@3778..3779 " "
2381 EXPR_APPLY@3779..38352381 EXPR_APPLY@3779..3835
2382 EXPR_INDEX@3779..37872382 EXPR_INDEX@3779..3787
2383 EXPR_VAR@3779..37822383 EXPR_VAR@3779..3782
2384 NAME@3779..37822384 NAME@3779..3782
2385 IDENT@3779..3782 "std"2385 IDENT@3779..3782 "std"
2386 DOT@3782..3783 "."2386 DOT@3782..3783 "."
2387 NAME@3783..37872387 NAME@3783..3787
2388 IDENT@3783..3787 "join"2388 IDENT@3783..3787 "join"
2389 ARGS_DESC@3787..38352389 ARGS_DESC@3787..3835
2390 L_PAREN@3787..3788 "("2390 L_PAREN@3787..3788 "("
2391 ARG@3788..37902391 ARG@3788..3790
2392 EXPR_STRING@3788..37902392 EXPR_STRING@3788..3790
2393 STRING_SINGLE@3788..3790 "''"2393 STRING_SINGLE@3788..3790 "''"
2394 COMMA@3790..3791 ","2394 COMMA@3790..3791 ","
2395 WHITESPACE@3791..3792 " "2395 WHITESPACE@3791..3792 " "
2396 ARG@3792..38342396 ARG@3792..3834
2397 EXPR_ARRAY_COMP@3792..38342397 EXPR_ARRAY_COMP@3792..3834
2398 L_BRACK@3792..3793 "["2398 L_BRACK@3792..3793 "["
2399 EXPR_APPLY@3793..38022399 EXPR_APPLY@3793..3802
2400 EXPR_VAR@3793..37982400 EXPR_VAR@3793..3798
2401 NAME@3793..37982401 NAME@3793..3798
2402 IDENT@3793..3798 "trans"2402 IDENT@3793..3798 "trans"
2403 ARGS_DESC@3798..38022403 ARGS_DESC@3798..3802
2404 L_PAREN@3798..3799 "("2404 L_PAREN@3798..3799 "("
2405 ARG@3799..38012405 ARG@3799..3801
2406 EXPR_VAR@3799..38012406 EXPR_VAR@3799..3801
2407 NAME@3799..38012407 NAME@3799..3801
2408 IDENT@3799..3801 "ch"2408 IDENT@3799..3801 "ch"
2409 R_PAREN@3801..3802 ")"2409 R_PAREN@3801..3802 ")"
2410 WHITESPACE@3802..3803 " "2410 WHITESPACE@3802..3803 " "
2411 FOR_SPEC@3803..38332411 FOR_SPEC@3803..3833
2412 FOR_KW@3803..3806 "for"2412 FOR_KW@3803..3806 "for"
2413 WHITESPACE@3806..3807 " "2413 WHITESPACE@3806..3807 " "
2414 NAME@3807..38092414 NAME@3807..3809
2415 IDENT@3807..3809 "ch"2415 IDENT@3807..3809 "ch"
2416 WHITESPACE@3809..3810 " "2416 WHITESPACE@3809..3810 " "
2417 IN_KW@3810..3812 "in"2417 IN_KW@3810..3812 "in"
2418 WHITESPACE@3812..3813 " "2418 WHITESPACE@3812..3813 " "
2419 EXPR_APPLY@3813..38332419 EXPR_APPLY@3813..3833
2420 EXPR_INDEX@3813..38282420 EXPR_INDEX@3813..3828
2421 EXPR_VAR@3813..38162421 EXPR_VAR@3813..3816
2422 NAME@3813..38162422 NAME@3813..3816
2423 IDENT@3813..3816 "std"2423 IDENT@3813..3816 "std"
2424 DOT@3816..3817 "."2424 DOT@3816..3817 "."
2425 NAME@3817..38282425 NAME@3817..3828
2426 IDENT@3817..3828 "stringChars"2426 IDENT@3817..3828 "stringChars"
2427 ARGS_DESC@3828..38332427 ARGS_DESC@3828..3833
2428 L_PAREN@3828..3829 "("2428 L_PAREN@3828..3829 "("
2429 ARG@3829..38322429 ARG@3829..3832
2430 EXPR_VAR@3829..38322430 EXPR_VAR@3829..3832
2431 NAME@3829..38322431 NAME@3829..3832
2432 IDENT@3829..3832 "str"2432 IDENT@3829..3832 "str"
2433 R_PAREN@3832..3833 ")"2433 R_PAREN@3832..3833 ")"
2434 R_BRACK@3833..3834 "]"2434 R_BRACK@3833..3834 "]"
2435 R_PAREN@3834..3835 ")"2435 R_PAREN@3834..3835 ")"
2436 COMMA@3835..3836 ","2436 COMMA@3835..3836 ","
2437 WHITESPACE@3836..3840 "\n\n "2437 WHITESPACE@3836..3840 "\n\n "
2438 MEMBER_FIELD_METHOD@3840..40542438 MEMBER_FIELD_METHOD@3840..4054
2448 R_PAREN@3864..3865 ")"2448 R_PAREN@3864..3865 ")"
2449 COLONCOLON@3865..3867 "::"2449 COLONCOLON@3865..3867 "::"
2450 WHITESPACE@3867..3872 "\n "2450 WHITESPACE@3867..3872 "\n "
2451 EXPR_LOCAL@3872..40542451 STMT_LOCAL@3872..3903
2452 LOCAL_KW@3872..3877 "local"2452 LOCAL_KW@3872..3877 "local"
2453 WHITESPACE@3877..3878 " "2453 WHITESPACE@3877..3878 " "
2454 BIND_DESTRUCT@3878..39022454 BIND_DESTRUCT@3878..3902
2474 IDENT@3897..3901 "str_"2474 IDENT@3897..3901 "str_"
2475 R_PAREN@3901..3902 ")"2475 R_PAREN@3901..3902 ")"
2476 SEMI@3902..3903 ";"2476 SEMI@3902..3903 ";"
2477 WHITESPACE@3903..3908 "\n "2477 WHITESPACE@3903..3908 "\n "
2478 EXPR_LOCAL@3908..40542478 STMT_LOCAL@3908..3985
2479 LOCAL_KW@3908..3913 "local"2479 LOCAL_KW@3908..3913 "local"
2480 WHITESPACE@3913..3914 " "2480 WHITESPACE@3913..3914 " "
2481 BIND_FUNCTION@3914..39842481 BIND_FUNCTION@3914..3984
2482 NAME@3914..39192482 NAME@3914..3919
2483 IDENT@3914..3919 "trans"2483 IDENT@3914..3919 "trans"
2484 PARAMS_DESC@3919..39232484 PARAMS_DESC@3919..3923
2485 L_PAREN@3919..3920 "("2485 L_PAREN@3919..3920 "("
2486 PARAM@3920..39222486 PARAM@3920..3922
2487 DESTRUCT_FULL@3920..39222487 DESTRUCT_FULL@3920..3922
2488 NAME@3920..39222488 NAME@3920..3922
2489 IDENT@3920..3922 "ch"2489 IDENT@3920..3922 "ch"
2490 R_PAREN@3922..3923 ")"2490 R_PAREN@3922..3923 ")"
2491 WHITESPACE@3923..3924 " "2491 WHITESPACE@3923..3924 " "
2492 ASSIGN@3924..3925 "="2492 ASSIGN@3924..3925 "="
2493 WHITESPACE@3925..3932 "\n "2493 WHITESPACE@3925..3932 "\n "
2494 EXPR_IF_THEN_ELSE@3932..39842494 EXPR_IF_THEN_ELSE@3932..3984
2495 IF_KW@3932..3934 "if"2495 IF_KW@3932..3934 "if"
2496 WHITESPACE@3934..3935 " "2496 WHITESPACE@3934..3935 " "
2497 EXPR_BINARY@3935..39442497 EXPR_BINARY@3935..3944
2498 LHS_EXPR@3935..39372498 LHS_EXPR@3935..3937
2499 EXPR_VAR@3935..39372499 EXPR_VAR@3935..3937
2500 NAME@3935..39372500 NAME@3935..3937
2501 IDENT@3935..3937 "ch"2501 IDENT@3935..3937 "ch"
2502 WHITESPACE@3937..3938 " "2502 WHITESPACE@3937..3938 " "
2503 EQ@3938..3940 "=="2503 EQ@3938..3940 "=="
2504 WHITESPACE@3940..3941 " "2504 WHITESPACE@3940..3941 " "
2505 EXPR_STRING@3941..39442505 EXPR_STRING@3941..3944
2506 STRING_SINGLE@3941..3944 "'$'"2506 STRING_SINGLE@3941..3944 "'$'"
2507 WHITESPACE@3944..3945 " "2507 WHITESPACE@3944..3945 " "
2508 THEN_KW@3945..3949 "then"2508 THEN_KW@3945..3949 "then"
2509 WHITESPACE@3949..3958 "\n "2509 WHITESPACE@3949..3958 "\n "
2510 TRUE_EXPR@3958..39622510 TRUE_EXPR@3958..3962
2511 EXPR_STRING@3958..39622511 EXPR_STRING@3958..3962
2512 STRING_SINGLE@3958..3962 "'$$'"2512 STRING_SINGLE@3958..3962 "'$$'"
2513 WHITESPACE@3962..3969 "\n "2513 WHITESPACE@3962..3969 "\n "
2514 ELSE_KW@3969..3973 "else"2514 ELSE_KW@3969..3973 "else"
2515 WHITESPACE@3973..3982 "\n "2515 WHITESPACE@3973..3982 "\n "
2516 FALSE_EXPR@3982..39842516 FALSE_EXPR@3982..3984
2517 EXPR_VAR@3982..39842517 EXPR_VAR@3982..3984
2518 NAME@3982..39842518 NAME@3982..3984
2519 IDENT@3982..3984 "ch"2519 IDENT@3982..3984 "ch"
2520 SEMI@3984..3985 ";"2520 SEMI@3984..3985 ";"
2521 WHITESPACE@3985..3990 "\n "2521 WHITESPACE@3985..3990 "\n "
2522 EXPR_APPLY@3990..40542522 EXPR_APPLY@3990..4054
2523 EXPR_INDEX@3990..39992523 EXPR_INDEX@3990..3999
2524 EXPR_VAR@3990..39932524 EXPR_VAR@3990..3993
2525 NAME@3990..39932525 NAME@3990..3993
2526 IDENT@3990..3993 "std"2526 IDENT@3990..3993 "std"
2527 DOT@3993..3994 "."2527 DOT@3993..3994 "."
2528 NAME@3994..39992528 NAME@3994..3999
2529 IDENT@3994..3999 "foldl"2529 IDENT@3994..3999 "foldl"
2530 ARGS_DESC@3999..40542530 ARGS_DESC@3999..4054
2531 L_PAREN@3999..4000 "("2531 L_PAREN@3999..4000 "("
2532 ARG@4000..40272532 ARG@4000..4027
2533 EXPR_FUNCTION@4000..40272533 EXPR_FUNCTION@4000..4027
2534 FUNCTION_KW@4000..4008 "function"2534 FUNCTION_KW@4000..4008 "function"
2535 PARAMS_DESC@4008..40142535 PARAMS_DESC@4008..4014
2536 L_PAREN@4008..4009 "("2536 L_PAREN@4008..4009 "("
2537 PARAM@4009..40102537 PARAM@4009..4010
2538 DESTRUCT_FULL@4009..40102538 DESTRUCT_FULL@4009..4010
2539 NAME@4009..40102539 NAME@4009..4010
2540 IDENT@4009..4010 "a"2540 IDENT@4009..4010 "a"
2541 COMMA@4010..4011 ","2541 COMMA@4010..4011 ","
2542 WHITESPACE@4011..4012 " "2542 WHITESPACE@4011..4012 " "
2543 PARAM@4012..40132543 PARAM@4012..4013
2544 DESTRUCT_FULL@4012..40132544 DESTRUCT_FULL@4012..4013
2545 NAME@4012..40132545 NAME@4012..4013
2546 IDENT@4012..4013 "b"2546 IDENT@4012..4013 "b"
2547 R_PAREN@4013..4014 ")"2547 R_PAREN@4013..4014 ")"
2548 WHITESPACE@4014..4015 " "2548 WHITESPACE@4014..4015 " "
2549 EXPR_BINARY@4015..40272549 EXPR_BINARY@4015..4027
2550 LHS_EXPR@4015..40162550 LHS_EXPR@4015..4016
2551 EXPR_VAR@4015..40162551 EXPR_VAR@4015..4016
2552 NAME@4015..40162552 NAME@4015..4016
2553 IDENT@4015..4016 "a"2553 IDENT@4015..4016 "a"
2554 WHITESPACE@4016..4017 " "2554 WHITESPACE@4016..4017 " "
2555 PLUS@4017..4018 "+"2555 PLUS@4017..4018 "+"
2556 WHITESPACE@4018..4019 " "2556 WHITESPACE@4018..4019 " "
2557 EXPR_APPLY@4019..40272557 EXPR_APPLY@4019..4027
2558 EXPR_VAR@4019..40242558 EXPR_VAR@4019..4024
2559 NAME@4019..40242559 NAME@4019..4024
2560 IDENT@4019..4024 "trans"2560 IDENT@4019..4024 "trans"
2561 ARGS_DESC@4024..40272561 ARGS_DESC@4024..4027
2562 L_PAREN@4024..4025 "("2562 L_PAREN@4024..4025 "("
2563 ARG@4025..40262563 ARG@4025..4026
2564 EXPR_VAR@4025..40262564 EXPR_VAR@4025..4026
2565 NAME@4025..40262565 NAME@4025..4026
2566 IDENT@4025..4026 "b"2566 IDENT@4025..4026 "b"
2567 R_PAREN@4026..4027 ")"2567 R_PAREN@4026..4027 ")"
2568 COMMA@4027..4028 ","2568 COMMA@4027..4028 ","
2569 WHITESPACE@4028..4029 " "2569 WHITESPACE@4028..4029 " "
2570 ARG@4029..40492570 ARG@4029..4049
2571 EXPR_APPLY@4029..40492571 EXPR_APPLY@4029..4049
2572 EXPR_INDEX@4029..40442572 EXPR_INDEX@4029..4044
2573 EXPR_VAR@4029..40322573 EXPR_VAR@4029..4032
2574 NAME@4029..40322574 NAME@4029..4032
2575 IDENT@4029..4032 "std"2575 IDENT@4029..4032 "std"
2576 DOT@4032..4033 "."2576 DOT@4032..4033 "."
2577 NAME@4033..40442577 NAME@4033..4044
2578 IDENT@4033..4044 "stringChars"2578 IDENT@4033..4044 "stringChars"
2579 ARGS_DESC@4044..40492579 ARGS_DESC@4044..4049
2580 L_PAREN@4044..4045 "("2580 L_PAREN@4044..4045 "("
2581 ARG@4045..40482581 ARG@4045..4048
2582 EXPR_VAR@4045..40482582 EXPR_VAR@4045..4048
2583 NAME@4045..40482583 NAME@4045..4048
2584 IDENT@4045..4048 "str"2584 IDENT@4045..4048 "str"
2585 R_PAREN@4048..4049 ")"2585 R_PAREN@4048..4049 ")"
2586 COMMA@4049..4050 ","2586 COMMA@4049..4050 ","
2587 WHITESPACE@4050..4051 " "2587 WHITESPACE@4050..4051 " "
2588 ARG@4051..40532588 ARG@4051..4053
2589 EXPR_STRING@4051..40532589 EXPR_STRING@4051..4053
2590 STRING_SINGLE@4051..4053 "''"2590 STRING_SINGLE@4051..4053 "''"
2591 R_PAREN@4053..4054 ")"2591 R_PAREN@4053..4054 ")"
2592 COMMA@4054..4055 ","2592 COMMA@4054..4055 ","
2593 WHITESPACE@4055..4059 "\n\n "2593 WHITESPACE@4055..4059 "\n\n "
2594 MEMBER_BIND_STMT@4059..41742594 MEMBER_BIND_STMT@4059..4174
2667 R_PAREN@4199..4200 ")"2667 R_PAREN@4199..4200 ")"
2668 COLONCOLON@4200..4202 "::"2668 COLONCOLON@4200..4202 "::"
2669 WHITESPACE@4202..4207 "\n "2669 WHITESPACE@4202..4207 "\n "
2670 EXPR_LOCAL@4207..43182670 STMT_LOCAL@4207..4238
2671 LOCAL_KW@4207..4212 "local"2671 LOCAL_KW@4207..4212 "local"
2672 WHITESPACE@4212..4213 " "2672 WHITESPACE@4212..4213 " "
2673 BIND_DESTRUCT@4213..42372673 BIND_DESTRUCT@4213..4237
2693 IDENT@4232..4236 "str_"2693 IDENT@4232..4236 "str_"
2694 R_PAREN@4236..4237 ")"2694 R_PAREN@4236..4237 ")"
2695 SEMI@4237..4238 ";"2695 SEMI@4237..4238 ";"
2696 WHITESPACE@4238..4243 "\n "2696 WHITESPACE@4238..4243 "\n "
2697 EXPR_APPLY@4243..43182697 EXPR_APPLY@4243..4318
2698 EXPR_INDEX@4243..42512698 EXPR_INDEX@4243..4251
2699 EXPR_VAR@4243..42462699 EXPR_VAR@4243..4246
2700 NAME@4243..42462700 NAME@4243..4246
2701 IDENT@4243..4246 "std"2701 IDENT@4243..4246 "std"
2702 DOT@4246..4247 "."2702 DOT@4246..4247 "."
2703 NAME@4247..42512703 NAME@4247..4251
2704 IDENT@4247..4251 "join"2704 IDENT@4247..4251 "join"
2705 ARGS_DESC@4251..43182705 ARGS_DESC@4251..4318
2706 L_PAREN@4251..4252 "("2706 L_PAREN@4251..4252 "("
2707 ARG@4252..42542707 ARG@4252..4254
2708 EXPR_STRING@4252..42542708 EXPR_STRING@4252..4254
2709 STRING_SINGLE@4252..4254 "''"2709 STRING_SINGLE@4252..4254 "''"
2710 COMMA@4254..4255 ","2710 COMMA@4254..4255 ","
2711 WHITESPACE@4255..4256 " "2711 WHITESPACE@4255..4256 " "
2712 ARG@4256..43172712 ARG@4256..4317
2713 EXPR_ARRAY_COMP@4256..43172713 EXPR_ARRAY_COMP@4256..4317
2714 L_BRACK@4256..4257 "["2714 L_BRACK@4256..4257 "["
2715 EXPR_APPLY@4257..42852715 EXPR_APPLY@4257..4285
2716 EXPR_INDEX@4257..42642716 EXPR_INDEX@4257..4264
2717 EXPR_VAR@4257..42602717 EXPR_VAR@4257..4260
2718 NAME@4257..42602718 NAME@4257..4260
2719 IDENT@4257..4260 "std"2719 IDENT@4257..4260 "std"
2720 DOT@4260..4261 "."2720 DOT@4260..4261 "."
2721 NAME@4261..42642721 NAME@4261..4264
2722 IDENT@4261..4264 "get"2722 IDENT@4261..4264 "get"
2723 ARGS_DESC@4264..42852723 ARGS_DESC@4264..4285
2724 L_PAREN@4264..4265 "("2724 L_PAREN@4264..4265 "("
2725 ARG@4265..42762725 ARG@4265..4276
2726 EXPR_VAR@4265..42762726 EXPR_VAR@4265..4276
2727 NAME@4265..42762727 NAME@4265..4276
2728 IDENT@4265..4276 "xml_escapes"2728 IDENT@4265..4276 "xml_escapes"
2729 COMMA@4276..4277 ","2729 COMMA@4276..4277 ","
2730 WHITESPACE@4277..4278 " "2730 WHITESPACE@4277..4278 " "
2731 ARG@4278..42802731 ARG@4278..4280
2732 EXPR_VAR@4278..42802732 EXPR_VAR@4278..4280
2733 NAME@4278..42802733 NAME@4278..4280
2734 IDENT@4278..4280 "ch"2734 IDENT@4278..4280 "ch"
2735 COMMA@4280..4281 ","2735 COMMA@4280..4281 ","
2736 WHITESPACE@4281..4282 " "2736 WHITESPACE@4281..4282 " "
2737 ARG@4282..42842737 ARG@4282..4284
2738 EXPR_VAR@4282..42842738 EXPR_VAR@4282..4284
2739 NAME@4282..42842739 NAME@4282..4284
2740 IDENT@4282..4284 "ch"2740 IDENT@4282..4284 "ch"
2741 R_PAREN@4284..4285 ")"2741 R_PAREN@4284..4285 ")"
2742 WHITESPACE@4285..4286 " "2742 WHITESPACE@4285..4286 " "
2743 FOR_SPEC@4286..43162743 FOR_SPEC@4286..4316
2744 FOR_KW@4286..4289 "for"2744 FOR_KW@4286..4289 "for"
2745 WHITESPACE@4289..4290 " "2745 WHITESPACE@4289..4290 " "
2746 NAME@4290..42922746 NAME@4290..4292
2747 IDENT@4290..4292 "ch"2747 IDENT@4290..4292 "ch"
2748 WHITESPACE@4292..4293 " "2748 WHITESPACE@4292..4293 " "
2749 IN_KW@4293..4295 "in"2749 IN_KW@4293..4295 "in"
2750 WHITESPACE@4295..4296 " "2750 WHITESPACE@4295..4296 " "
2751 EXPR_APPLY@4296..43162751 EXPR_APPLY@4296..4316
2752 EXPR_INDEX@4296..43112752 EXPR_INDEX@4296..4311
2753 EXPR_VAR@4296..42992753 EXPR_VAR@4296..4299
2754 NAME@4296..42992754 NAME@4296..4299
2755 IDENT@4296..4299 "std"2755 IDENT@4296..4299 "std"
2756 DOT@4299..4300 "."2756 DOT@4299..4300 "."
2757 NAME@4300..43112757 NAME@4300..4311
2758 IDENT@4300..4311 "stringChars"2758 IDENT@4300..4311 "stringChars"
2759 ARGS_DESC@4311..43162759 ARGS_DESC@4311..4316
2760 L_PAREN@4311..4312 "("2760 L_PAREN@4311..4312 "("
2761 ARG@4312..43152761 ARG@4312..4315
2762 EXPR_VAR@4312..43152762 EXPR_VAR@4312..4315
2763 NAME@4312..43152763 NAME@4312..4315
2764 IDENT@4312..4315 "str"2764 IDENT@4312..4315 "str"
2765 R_PAREN@4315..4316 ")"2765 R_PAREN@4315..4316 ")"
2766 R_BRACK@4316..4317 "]"2766 R_BRACK@4316..4317 "]"
2767 R_PAREN@4317..4318 ")"2767 R_PAREN@4317..4318 ")"
2768 COMMA@4318..4319 ","2768 COMMA@4318..4319 ","
2769 WHITESPACE@4319..4323 "\n\n "2769 WHITESPACE@4319..4323 "\n\n "
2770 MEMBER_FIELD_METHOD@4323..43892770 MEMBER_FIELD_METHOD@4323..4389
3069 WHITESPACE@4899..4900 " "3069 WHITESPACE@4899..4900 " "
3070 THEN_KW@4900..4904 "then"3070 THEN_KW@4900..4904 "then"
3071 WHITESPACE@4904..4911 "\n "3071 WHITESPACE@4904..4911 "\n "
3072 TRUE_EXPR@4911..50863072 STMT_LOCAL@4911..5046
3073 EXPR_LOCAL@4911..50863073 LOCAL_KW@4911..4916 "local"
3074 LOCAL_KW@4911..4916 "local"3074 WHITESPACE@4916..4917 " "
3075 WHITESPACE@4916..4917 " "3075 BIND_DESTRUCT@4917..5045
3076 BIND_DESTRUCT@4917..50453076 DESTRUCT_FULL@4917..4923
3077 DESTRUCT_FULL@4917..49233077 NAME@4917..4923
3078 NAME@4917..49233078 IDENT@4917..4923 "fields"
3079 IDENT@4917..4923 "fields"3079 WHITESPACE@4923..4924 " "
3080 WHITESPACE@4923..4924 " "3080 ASSIGN@4924..4925 "="
3081 ASSIGN@4924..4925 "="3081 WHITESPACE@4925..4926 " "
3082 WHITESPACE@4925..4926 " "3082 EXPR_ARRAY_COMP@4926..5045
3083 EXPR_ARRAY_COMP@4926..50453083 L_BRACK@4926..4927 "["
3084 L_BRACK@4926..4927 "["3084 WHITESPACE@4927..4936 "\n "
3085 WHITESPACE@4927..4936 "\n "3085 EXPR_BINARY@4936..5000
3086 EXPR_BINARY@4936..50003086 LHS_EXPR@4936..4944
3087 LHS_EXPR@4936..49443087 EXPR_STRING@4936..4944
3088 EXPR_STRING@4936..49443088 STRING_SINGLE@4936..4944 "'%s: %s'"
3089 STRING_SINGLE@4936..4944 "'%s: %s'"3089 WHITESPACE@4944..4945 " "
3090 WHITESPACE@4944..4945 " "3090 MODULO@4945..4946 "%"
3091 MODULO@4945..4946 "%"3091 WHITESPACE@4946..4947 " "
3092 WHITESPACE@4946..4947 " "3092 EXPR_ARRAY@4947..5000
3093 EXPR_ARRAY@4947..50003093 L_BRACK@4947..4948 "["
3094 L_BRACK@4947..4948 "["3094 EXPR_APPLY@4948..4973
3095 EXPR_APPLY@4948..49733095 EXPR_INDEX@4948..4970
3096 EXPR_INDEX@4948..49703096 EXPR_VAR@4948..4951
3097 EXPR_VAR@4948..49513097 NAME@4948..4951
3098 NAME@4948..49513098 IDENT@4948..4951 "std"
3099 IDENT@4948..4951 "std"3099 DOT@4951..4952 "."
3100 DOT@4951..4952 "."3100 NAME@4952..4970
3101 NAME@4952..49703101 IDENT@4952..4970 "escapeStringPython"
3102 IDENT@4952..4970 "escapeStringPython"3102 ARGS_DESC@4970..4973
3103 ARGS_DESC@4970..49733103 L_PAREN@4970..4971 "("
3104 L_PAREN@4970..4971 "("3104 ARG@4971..4972
3105 ARG@4971..49723105 EXPR_VAR@4971..4972
3106 EXPR_VAR@4971..49723106 NAME@4971..4972
3107 NAME@4971..49723107 IDENT@4971..4972 "k"
3108 IDENT@4971..4972 "k"3108 R_PAREN@4972..4973 ")"
3109 R_PAREN@4972..4973 ")"3109 COMMA@4973..4974 ","
3110 COMMA@4973..4974 ","3110 WHITESPACE@4974..4975 " "
3111 WHITESPACE@4974..4975 " "3111 EXPR_APPLY@4975..4999
3112 EXPR_APPLY@4975..49993112 EXPR_INDEX@4975..4993
3113 EXPR_INDEX@4975..49933113 EXPR_VAR@4975..4978
3114 EXPR_VAR@4975..49783114 NAME@4975..4978
3115 NAME@4975..49783115 IDENT@4975..4978 "std"
3116 IDENT@4975..4978 "std"3116 DOT@4978..4979 "."
3117 DOT@4978..4979 "."3117 NAME@4979..4993
3118 NAME@4979..49933118 IDENT@4979..4993 "manifestPython"
3119 IDENT@4979..4993 "manifestPython"3119 ARGS_DESC@4993..4999
3120 ARGS_DESC@4993..49993120 L_PAREN@4993..4994 "("
3121 L_PAREN@4993..4994 "("3121 ARG@4994..4998
3122 ARG@4994..49983122 EXPR_INDEX_EXPR@4994..4998
3123 EXPR_INDEX_EXPR@4994..49983123 LHS_EXPR@4994..4995
3124 LHS_EXPR@4994..49953124 EXPR_VAR@4994..4995
3125 EXPR_VAR@4994..49953125 NAME@4994..4995
3126 NAME@4994..49953126 IDENT@4994..4995 "v"
3127 IDENT@4994..4995 "v"3127 L_BRACK@4995..4996 "["
3128 L_BRACK@4995..4996 "["3128 EXPR_VAR@4996..4997
3129 EXPR_VAR@4996..49973129 NAME@4996..4997
3130 NAME@4996..49973130 IDENT@4996..4997 "k"
3131 IDENT@4996..4997 "k"3131 R_BRACK@4997..4998 "]"
3132 R_BRACK@4997..4998 "]"3132 R_PAREN@4998..4999 ")"
3133 R_PAREN@4998..4999 ")"3133 R_BRACK@4999..5000 "]"
3134 R_BRACK@4999..5000 "]"3134 WHITESPACE@5000..5009 "\n "
3135 WHITESPACE@5000..5009 "\n "3135 FOR_SPEC@5009..5037
3136 FOR_SPEC@5009..50373136 FOR_KW@5009..5012 "for"
3137 FOR_KW@5009..5012 "for"3137 WHITESPACE@5012..5013 " "
3138 WHITESPACE@5012..5013 " "3138 NAME@5013..5014
3139 NAME@5013..50143139 IDENT@5013..5014 "k"
3140 IDENT@5013..5014 "k"3140 WHITESPACE@5014..5015 " "
3141 WHITESPACE@5014..5015 " "3141 IN_KW@5015..5017 "in"
3142 IN_KW@5015..5017 "in"3142 WHITESPACE@5017..5018 " "
3143 WHITESPACE@5017..5018 " "3143 EXPR_APPLY@5018..5037
3144 EXPR_APPLY@5018..50373144 EXPR_INDEX@5018..5034
3145 EXPR_INDEX@5018..50343145 EXPR_VAR@5018..5021
3146 EXPR_VAR@5018..50213146 NAME@5018..5021
3147 NAME@5018..50213147 IDENT@5018..5021 "std"
3148 IDENT@5018..5021 "std"3148 DOT@5021..5022 "."
3149 DOT@5021..5022 "."3149 NAME@5022..5034
3150 NAME@5022..50343150 IDENT@5022..5034 "objectFields"
3151 IDENT@5022..5034 "objectFields"3151 ARGS_DESC@5034..5037
3152 ARGS_DESC@5034..50373152 L_PAREN@5034..5035 "("
3153 L_PAREN@5034..5035 "("3153 ARG@5035..5036
3154 ARG@5035..50363154 EXPR_VAR@5035..5036
3155 EXPR_VAR@5035..50363155 NAME@5035..5036
3156 NAME@5035..50363156 IDENT@5035..5036 "v"
3157 IDENT@5035..5036 "v"3157 R_PAREN@5036..5037 ")"
3158 R_PAREN@5036..5037 ")"3158 WHITESPACE@5037..5044 "\n "
3159 WHITESPACE@5037..5044 "\n "3159 R_BRACK@5044..5045 "]"
3160 R_BRACK@5044..5045 "]"3160 SEMI@5045..5046 ";"
3161 SEMI@5045..5046 ";"3161 WHITESPACE@5046..5053 "\n "
3162 WHITESPACE@5046..5053 "\n "3162 TRUE_EXPR@5053..5086
3163 EXPR_BINARY@5053..50863163 EXPR_BINARY@5053..5086
3164 LHS_EXPR@5053..50593164 LHS_EXPR@5053..5059
3165 EXPR_STRING@5053..50593165 EXPR_STRING@5053..5059
3166 STRING_SINGLE@5053..5059 "'{%s}'"3166 STRING_SINGLE@5053..5059 "'{%s}'"
3167 WHITESPACE@5059..5060 " "3167 WHITESPACE@5059..5060 " "
3168 MODULO@5060..5061 "%"3168 MODULO@5060..5061 "%"
3169 WHITESPACE@5061..5062 " "3169 WHITESPACE@5061..5062 " "
3170 EXPR_ARRAY@5062..50863170 EXPR_ARRAY@5062..5086
3171 L_BRACK@5062..5063 "["3171 L_BRACK@5062..5063 "["
3172 EXPR_APPLY@5063..50853172 EXPR_APPLY@5063..5085
3173 EXPR_INDEX@5063..50713173 EXPR_INDEX@5063..5071
3174 EXPR_VAR@5063..50663174 EXPR_VAR@5063..5066
3175 NAME@5063..50663175 NAME@5063..5066
3176 IDENT@5063..5066 "std"3176 IDENT@5063..5066 "std"
3177 DOT@5066..5067 "."3177 DOT@5066..5067 "."
3178 NAME@5067..50713178 NAME@5067..5071
3179 IDENT@5067..5071 "join"3179 IDENT@5067..5071 "join"
3180 ARGS_DESC@5071..50853180 ARGS_DESC@5071..5085
3181 L_PAREN@5071..5072 "("3181 L_PAREN@5071..5072 "("
3182 ARG@5072..50763182 ARG@5072..5076
3183 EXPR_STRING@5072..50763183 EXPR_STRING@5072..5076
3184 STRING_SINGLE@5072..5076 "', '"3184 STRING_SINGLE@5072..5076 "', '"
3185 COMMA@5076..5077 ","3185 COMMA@5076..5077 ","
3186 WHITESPACE@5077..5078 " "3186 WHITESPACE@5077..5078 " "
3187 ARG@5078..50843187 ARG@5078..5084
3188 EXPR_VAR@5078..50843188 EXPR_VAR@5078..5084
3189 NAME@5078..50843189 NAME@5078..5084
3190 IDENT@5078..5084 "fields"3190 IDENT@5078..5084 "fields"
3191 R_PAREN@5084..5085 ")"3191 R_PAREN@5084..5085 ")"
3192 R_BRACK@5085..5086 "]"3192 R_BRACK@5085..5086 "]"
3193 WHITESPACE@5086..5091 "\n "3193 WHITESPACE@5086..5091 "\n "
3194 ELSE_KW@5091..5095 "else"3194 ELSE_KW@5091..5095 "else"
3195 WHITESPACE@5095..5096 " "3195 WHITESPACE@5095..5096 " "
3480 R_PAREN@5541..5542 ")"3480 R_PAREN@5541..5542 ")"
3481 COLONCOLON@5542..5544 "::"3481 COLONCOLON@5542..5544 "::"
3482 WHITESPACE@5544..5549 "\n "3482 WHITESPACE@5544..5549 "\n "
3483 EXPR_LOCAL@5549..56733483 STMT_LOCAL@5549..5641
3484 LOCAL_KW@5549..5554 "local"3484 LOCAL_KW@5549..5554 "local"
3485 WHITESPACE@5554..5555 " "3485 WHITESPACE@5554..5555 " "
3486 BIND_DESTRUCT@5555..56403486 BIND_DESTRUCT@5555..5640
3555 R_PAREN@5638..5639 ")"3555 R_PAREN@5638..5639 ")"
3556 R_BRACK@5639..5640 "]"3556 R_BRACK@5639..5640 "]"
3557 SEMI@5640..5641 ";"3557 SEMI@5640..5641 ";"
3558 WHITESPACE@5641..5646 "\n "3558 WHITESPACE@5641..5646 "\n "
3559 EXPR_APPLY@5646..56733559 EXPR_APPLY@5646..5673
3560 EXPR_INDEX@5646..56543560 EXPR_INDEX@5646..5654
3561 EXPR_VAR@5646..56493561 EXPR_VAR@5646..5649
3562 NAME@5646..56493562 NAME@5646..5649
3563 IDENT@5646..5649 "std"3563 IDENT@5646..5649 "std"
3564 DOT@5649..5650 "."3564 DOT@5649..5650 "."
3565 NAME@5650..56543565 NAME@5650..5654
3566 IDENT@5650..5654 "join"3566 IDENT@5650..5654 "join"
3567 ARGS_DESC@5654..56733567 ARGS_DESC@5654..5673
3568 L_PAREN@5654..5655 "("3568 L_PAREN@5654..5655 "("
3569 ARG@5655..56593569 ARG@5655..5659
3570 EXPR_STRING@5655..56593570 EXPR_STRING@5655..5659
3571 STRING_SINGLE@5655..5659 "'\\n'"3571 STRING_SINGLE@5655..5659 "'\\n'"
3572 COMMA@5659..5660 ","3572 COMMA@5659..5660 ","
3573 WHITESPACE@5660..5661 " "3573 WHITESPACE@5660..5661 " "
3574 ARG@5661..56723574 ARG@5661..5672
3575 EXPR_BINARY@5661..56723575 EXPR_BINARY@5661..5672
3576 LHS_EXPR@5661..56653576 LHS_EXPR@5661..5665
3577 EXPR_VAR@5661..56653577 EXPR_VAR@5661..5665
3578 NAME@5661..56653578 NAME@5661..5665
3579 IDENT@5661..5665 "vars"3579 IDENT@5661..5665 "vars"
3580 WHITESPACE@5665..5666 " "3580 WHITESPACE@5665..5666 " "
3581 PLUS@5666..5667 "+"3581 PLUS@5666..5667 "+"
3582 WHITESPACE@5667..5668 " "3582 WHITESPACE@5667..5668 " "
3583 EXPR_ARRAY@5668..56723583 EXPR_ARRAY@5668..5672
3584 L_BRACK@5668..5669 "["3584 L_BRACK@5668..5669 "["
3585 EXPR_STRING@5669..56713585 EXPR_STRING@5669..5671
3586 STRING_SINGLE@5669..5671 "''"3586 STRING_SINGLE@5669..5671 "''"
3587 R_BRACK@5671..5672 "]"3587 R_BRACK@5671..5672 "]"
3588 R_PAREN@5672..5673 ")"3588 R_PAREN@5672..5673 ")"
3589 COMMA@5673..5674 ","3589 COMMA@5673..5674 ","
3590 WHITESPACE@5674..5678 "\n\n "3590 WHITESPACE@5674..5678 "\n\n "
3591 MEMBER_FIELD_METHOD@5678..63453591 MEMBER_FIELD_METHOD@5678..6345
3653 WHITESPACE@5811..5816 "\n "3653 WHITESPACE@5811..5816 "\n "
3654 ELSE_KW@5816..5820 "else"3654 ELSE_KW@5816..5820 "else"
3655 WHITESPACE@5820..5827 "\n "3655 WHITESPACE@5820..5827 "\n "
3656 FALSE_EXPR@5827..63453656 STMT_LOCAL@5827..6327
3657 EXPR_LOCAL@5827..63453657 LOCAL_KW@5827..5832 "local"
3658 LOCAL_KW@5827..5832 "local"3658 WHITESPACE@5832..5833 " "
3659 WHITESPACE@5832..5833 " "3659 BIND_FUNCTION@5833..6326
3660 BIND_FUNCTION@5833..63263660 NAME@5833..5836
3661 NAME@5833..58363661 IDENT@5833..5836 "aux"
3662 IDENT@5833..5836 "aux"3662 PARAMS_DESC@5836..5839
3663 PARAMS_DESC@5836..58393663 L_PAREN@5836..5837 "("
3664 L_PAREN@5836..5837 "("3664 PARAM@5837..5838
3665 PARAM@5837..58383665 DESTRUCT_FULL@5837..5838
3666 DESTRUCT_FULL@5837..58383666 NAME@5837..5838
3667 NAME@5837..58383667 IDENT@5837..5838 "v"
3668 IDENT@5837..5838 "v"3668 R_PAREN@5838..5839 ")"
3669 R_PAREN@5838..5839 ")"3669 WHITESPACE@5839..5840 " "
3670 WHITESPACE@5839..5840 " "3670 ASSIGN@5840..5841 "="
3671 ASSIGN@5840..5841 "="3671 WHITESPACE@5841..5850 "\n "
3672 WHITESPACE@5841..5850 "\n "3672 EXPR_IF_THEN_ELSE@5850..6326
3673 EXPR_IF_THEN_ELSE@5850..63263673 IF_KW@5850..5852 "if"
3674 IF_KW@5850..5852 "if"3674 WHITESPACE@5852..5853 " "
3675 WHITESPACE@5852..5853 " "3675 EXPR_APPLY@5853..5868
3676 EXPR_APPLY@5853..58683676 EXPR_INDEX@5853..5865
3677 EXPR_INDEX@5853..58653677 EXPR_VAR@5853..5856
3678 EXPR_VAR@5853..58563678 NAME@5853..5856
3679 NAME@5853..58563679 IDENT@5853..5856 "std"
3680 IDENT@5853..5856 "std"3680 DOT@5856..5857 "."
3681 DOT@5856..5857 "."3681 NAME@5857..5865
3682 NAME@5857..58653682 IDENT@5857..5865 "isString"
3683 IDENT@5857..5865 "isString"3683 ARGS_DESC@5865..5868
3684 ARGS_DESC@5865..58683684 L_PAREN@5865..5866 "("
3685 L_PAREN@5865..5866 "("3685 ARG@5866..5867
3686 ARG@5866..58673686 EXPR_VAR@5866..5867
3687 EXPR_VAR@5866..58673687 NAME@5866..5867
3688 NAME@5866..58673688 IDENT@5866..5867 "v"
3689 IDENT@5866..5867 "v"3689 R_PAREN@5867..5868 ")"
3690 R_PAREN@5867..5868 ")"3690 WHITESPACE@5868..5869 " "
3691 WHITESPACE@5868..5869 " "3691 THEN_KW@5869..5873 "then"
3692 THEN_KW@5869..5873 "then"3692 WHITESPACE@5873..5884 "\n "
3693 WHITESPACE@5873..5884 "\n "3693 TRUE_EXPR@5884..5885
3694 TRUE_EXPR@5884..58853694 EXPR_VAR@5884..5885
3695 EXPR_VAR@5884..58853695 NAME@5884..5885
3696 NAME@5884..58853696 IDENT@5884..5885 "v"
3697 IDENT@5884..5885 "v"3697 WHITESPACE@5885..5894 "\n "
3698 WHITESPACE@5885..5894 "\n "3698 ELSE_KW@5894..5898 "else"
3699 ELSE_KW@5894..5898 "else"3699 WHITESPACE@5898..5909 "\n "
3700 WHITESPACE@5898..5909 "\n "3700 STMT_LOCAL@5909..5926
3701 FALSE_EXPR@5909..63263701 LOCAL_KW@5909..5914 "local"
3702 EXPR_LOCAL@5909..63263702 WHITESPACE@5914..5915 " "
3703 LOCAL_KW@5909..5914 "local"3703 BIND_DESTRUCT@5915..5925
3704 WHITESPACE@5914..5915 " "3704 DESTRUCT_FULL@5915..5918
3705 BIND_DESTRUCT@5915..59253705 NAME@5915..5918
3706 DESTRUCT_FULL@5915..59183706 IDENT@5915..5918 "tag"
3707 NAME@5915..59183707 WHITESPACE@5918..5919 " "
3708 IDENT@5915..5918 "tag"3708 ASSIGN@5919..5920 "="
3709 WHITESPACE@5918..5919 " "3709 WHITESPACE@5920..5921 " "
3710 ASSIGN@5919..5920 "="3710 EXPR_INDEX_EXPR@5921..5925
3711 WHITESPACE@5920..5921 " "3711 LHS_EXPR@5921..5922
3712 EXPR_INDEX_EXPR@5921..59253712 EXPR_VAR@5921..5922
3713 LHS_EXPR@5921..59223713 NAME@5921..5922
3714 EXPR_VAR@5921..59223714 IDENT@5921..5922 "v"
3715 NAME@5921..59223715 L_BRACK@5922..5923 "["
3716 IDENT@5921..5922 "v"3716 EXPR_NUMBER@5923..5924
3717 L_BRACK@5922..5923 "["3717 FLOAT@5923..5924 "0"
3718 EXPR_NUMBER@5923..59243718 R_BRACK@5924..5925 "]"
3719 FLOAT@5923..5924 "0"3719 SEMI@5925..5926 ";"
3720 R_BRACK@5924..5925 "]"3720 WHITESPACE@5926..5937 "\n "
3721 SEMI@5925..5926 ";"3721 STMT_LOCAL@5937..5995
3722 WHITESPACE@5926..5937 "\n "3722 LOCAL_KW@5937..5942 "local"
3723 EXPR_LOCAL@5937..63263723 WHITESPACE@5942..5943 " "
3724 LOCAL_KW@5937..5942 "local"3724 BIND_DESTRUCT@5943..5994
3725 WHITESPACE@5942..5943 " "3725 DESTRUCT_FULL@5943..5952
3726 BIND_DESTRUCT@5943..59943726 NAME@5943..5952
3727 DESTRUCT_FULL@5943..59523727 IDENT@5943..5952 "has_attrs"
3728 NAME@5943..59523728 WHITESPACE@5952..5953 " "
3729 IDENT@5943..5952 "has_attrs"3729 ASSIGN@5953..5954 "="
3730 WHITESPACE@5952..5953 " "3730 WHITESPACE@5954..5955 " "
3731 ASSIGN@5953..5954 "="3731 EXPR_BINARY@5955..5994
3732 WHITESPACE@5954..5955 " "3732 LHS_EXPR@5955..5972
3733 EXPR_BINARY@5955..59943733 EXPR_BINARY@5955..5972
3734 LHS_EXPR@5955..59723734 LHS_EXPR@5955..5968
3735 EXPR_BINARY@5955..59723735 EXPR_APPLY@5955..5968
3736 LHS_EXPR@5955..59683736 EXPR_INDEX@5955..5965
3737 EXPR_APPLY@5955..59683737 EXPR_VAR@5955..5958
3738 EXPR_INDEX@5955..59653738 NAME@5955..5958
3739 EXPR_VAR@5955..59583739 IDENT@5955..5958 "std"
3740 NAME@5955..59583740 DOT@5958..5959 "."
3741 IDENT@5955..5958 "std"3741 NAME@5959..5965
3742 DOT@5958..5959 "."3742 IDENT@5959..5965 "length"
3743 NAME@5959..59653743 ARGS_DESC@5965..5968
3744 IDENT@5959..5965 "length"3744 L_PAREN@5965..5966 "("
3745 ARGS_DESC@5965..59683745 ARG@5966..5967
3746 L_PAREN@5965..5966 "("3746 EXPR_VAR@5966..5967
3747 ARG@5966..59673747 NAME@5966..5967
3748 EXPR_VAR@5966..59673748 IDENT@5966..5967 "v"
3749 NAME@5966..59673749 R_PAREN@5967..5968 ")"
3750 IDENT@5966..5967 "v"3750 WHITESPACE@5968..5969 " "
3751 R_PAREN@5967..5968 ")"3751 GT@5969..5970 ">"
3752 WHITESPACE@5968..5969 " "3752 WHITESPACE@5970..5971 " "
3753 GT@5969..5970 ">"3753 EXPR_NUMBER@5971..5972
3754 WHITESPACE@5970..5971 " "3754 FLOAT@5971..5972 "1"
3755 EXPR_NUMBER@5971..59723755 WHITESPACE@5972..5973 " "
3756 FLOAT@5971..5972 "1"3756 AND@5973..5975 "&&"
3757 WHITESPACE@5972..5973 " "3757 WHITESPACE@5975..5976 " "
3758 AND@5973..5975 "&&"3758 EXPR_APPLY@5976..5994
3759 WHITESPACE@5975..5976 " "3759 EXPR_INDEX@5976..5988
3760 EXPR_APPLY@5976..59943760 EXPR_VAR@5976..5979
3761 EXPR_INDEX@5976..59883761 NAME@5976..5979
3762 EXPR_VAR@5976..59793762 IDENT@5976..5979 "std"
3763 NAME@5976..59793763 DOT@5979..5980 "."
3764 IDENT@5976..5979 "std"3764 NAME@5980..5988
3765 DOT@5979..5980 "."3765 IDENT@5980..5988 "isObject"
3766 NAME@5980..59883766 ARGS_DESC@5988..5994
3767 IDENT@5980..5988 "isObject"3767 L_PAREN@5988..5989 "("
3768 ARGS_DESC@5988..59943768 ARG@5989..5993
3769 L_PAREN@5988..5989 "("3769 EXPR_INDEX_EXPR@5989..5993
3770 ARG@5989..59933770 LHS_EXPR@5989..5990
3771 EXPR_INDEX_EXPR@5989..59933771 EXPR_VAR@5989..5990
3772 LHS_EXPR@5989..59903772 NAME@5989..5990
3773 EXPR_VAR@5989..59903773 IDENT@5989..5990 "v"
3774 NAME@5989..59903774 L_BRACK@5990..5991 "["
3775 IDENT@5989..5990 "v"3775 EXPR_NUMBER@5991..5992
3776 L_BRACK@5990..5991 "["3776 FLOAT@5991..5992 "1"
3777 EXPR_NUMBER@5991..59923777 R_BRACK@5992..5993 "]"
3778 FLOAT@5991..5992 "1"3778 R_PAREN@5993..5994 ")"
3779 R_BRACK@5992..5993 "]"3779 SEMI@5994..5995 ";"
3780 R_PAREN@5993..5994 ")"3780 WHITESPACE@5995..6006 "\n "
3781 SEMI@5994..5995 ";"3781 STMT_LOCAL@6006..6051
3782 WHITESPACE@5995..6006 "\n "3782 LOCAL_KW@6006..6011 "local"
3783 EXPR_LOCAL@6006..63263783 WHITESPACE@6011..6012 " "
3784 LOCAL_KW@6006..6011 "local"3784 BIND_DESTRUCT@6012..6050
3785 WHITESPACE@6011..6012 " "3785 DESTRUCT_FULL@6012..6017
3786 BIND_DESTRUCT@6012..60503786 NAME@6012..6017
3787 DESTRUCT_FULL@6012..60173787 IDENT@6012..6017 "attrs"
3788 NAME@6012..60173788 WHITESPACE@6017..6018 " "
3789 IDENT@6012..6017 "attrs"3789 ASSIGN@6018..6019 "="
3790 WHITESPACE@6017..6018 " "3790 WHITESPACE@6019..6020 " "
3791 ASSIGN@6018..6019 "="3791 EXPR_IF_THEN_ELSE@6020..6050
3792 WHITESPACE@6019..6020 " "3792 IF_KW@6020..6022 "if"
3793 EXPR_IF_THEN_ELSE@6020..60503793 WHITESPACE@6022..6023 " "
3794 IF_KW@6020..6022 "if"3794 EXPR_VAR@6023..6032
3795 WHITESPACE@6022..6023 " "3795 NAME@6023..6032
3796 EXPR_VAR@6023..60323796 IDENT@6023..6032 "has_attrs"
3797 NAME@6023..60323797 WHITESPACE@6032..6033 " "
3798 IDENT@6023..6032 "has_attrs"3798 THEN_KW@6033..6037 "then"
3799 WHITESPACE@6032..6033 " "3799 WHITESPACE@6037..6038 " "
3800 THEN_KW@6033..6037 "then"3800 TRUE_EXPR@6038..6042
3801 WHITESPACE@6037..6038 " "3801 EXPR_INDEX_EXPR@6038..6042
3802 TRUE_EXPR@6038..60423802 LHS_EXPR@6038..6039
3803 EXPR_INDEX_EXPR@6038..60423803 EXPR_VAR@6038..6039
3804 LHS_EXPR@6038..60393804 NAME@6038..6039
3805 EXPR_VAR@6038..60393805 IDENT@6038..6039 "v"
3806 NAME@6038..60393806 L_BRACK@6039..6040 "["
3807 IDENT@6038..6039 "v"3807 EXPR_NUMBER@6040..6041
3808 L_BRACK@6039..6040 "["3808 FLOAT@6040..6041 "1"
3809 EXPR_NUMBER@6040..60413809 R_BRACK@6041..6042 "]"
3810 FLOAT@6040..6041 "1"3810 WHITESPACE@6042..6043 " "
3811 R_BRACK@6041..6042 "]"3811 ELSE_KW@6043..6047 "else"
3812 WHITESPACE@6042..6043 " "3812 WHITESPACE@6047..6048 " "
3813 ELSE_KW@6043..6047 "else"3813 FALSE_EXPR@6048..6050
3814 WHITESPACE@6047..6048 " "3814 EXPR_OBJECT@6048..6050
3815 FALSE_EXPR@6048..60503815 OBJ_BODY_MEMBER_LIST@6048..6050
3816 EXPR_OBJECT@6048..60503816 L_BRACE@6048..6049 "{"
3817 OBJ_BODY_MEMBER_LIST@6048..60503817 R_BRACE@6049..6050 "}"
3818 L_BRACE@6048..6049 "{"3818 SEMI@6050..6051 ";"
3819 R_BRACE@6049..6050 "}"3819 WHITESPACE@6051..6062 "\n "
3820 SEMI@6050..6051 ";"3820 STMT_LOCAL@6062..6114
3821 WHITESPACE@6051..6062 "\n "3821 LOCAL_KW@6062..6067 "local"
3822 EXPR_LOCAL@6062..63263822 WHITESPACE@6067..6068 " "
3823 LOCAL_KW@6062..6067 "local"3823 BIND_DESTRUCT@6068..6113
3824 WHITESPACE@6067..6068 " "3824 DESTRUCT_FULL@6068..6076
3825 BIND_DESTRUCT@6068..61133825 NAME@6068..6076
3826 DESTRUCT_FULL@6068..60763826 IDENT@6068..6076 "children"
3827 NAME@6068..60763827 WHITESPACE@6076..6077 " "
3828 IDENT@6068..6076 "children"3828 ASSIGN@6077..6078 "="
3829 WHITESPACE@6076..6077 " "3829 WHITESPACE@6078..6079 " "
3830 ASSIGN@6077..6078 "="3830 EXPR_IF_THEN_ELSE@6079..6113
3831 WHITESPACE@6078..6079 " "3831 IF_KW@6079..6081 "if"
3832 EXPR_IF_THEN_ELSE@6079..61133832 WHITESPACE@6081..6082 " "
3833 IF_KW@6079..6081 "if"3833 EXPR_VAR@6082..6091
3834 WHITESPACE@6081..6082 " "3834 NAME@6082..6091
3835 EXPR_VAR@6082..60913835 IDENT@6082..6091 "has_attrs"
3836 NAME@6082..60913836 WHITESPACE@6091..6092 " "
3837 IDENT@6082..6091 "has_attrs"3837 THEN_KW@6092..6096 "then"
3838 WHITESPACE@6091..6092 " "3838 WHITESPACE@6096..6097 " "
3839 THEN_KW@6092..6096 "then"3839 TRUE_EXPR@6097..6102
3840 WHITESPACE@6096..6097 " "3840 EXPR_SLICE@6097..6102
3841 TRUE_EXPR@6097..61023841 EXPR_VAR@6097..6098
3842 EXPR_SLICE@6097..61023842 NAME@6097..6098
3843 EXPR_VAR@6097..60983843 IDENT@6097..6098 "v"
3844 NAME@6097..60983844 SLICE_DESC@6098..6102
3845 IDENT@6097..6098 "v"3845 L_BRACK@6098..6099 "["
3846 SLICE_DESC@6098..61023846 EXPR_NUMBER@6099..6100
3847 L_BRACK@6098..6099 "["3847 FLOAT@6099..6100 "2"
3848 EXPR_NUMBER@6099..61003848 COLON@6100..6101 ":"
3849 FLOAT@6099..6100 "2"3849 R_BRACK@6101..6102 "]"
3850 COLON@6100..6101 ":"3850 WHITESPACE@6102..6103 " "
3851 R_BRACK@6101..6102 "]"3851 ELSE_KW@6103..6107 "else"
3852 WHITESPACE@6102..6103 " "3852 WHITESPACE@6107..6108 " "
3853 ELSE_KW@6103..6107 "else"3853 FALSE_EXPR@6108..6113
3854 WHITESPACE@6107..6108 " "3854 EXPR_SLICE@6108..6113
3855 FALSE_EXPR@6108..61133855 EXPR_VAR@6108..6109
3856 EXPR_SLICE@6108..61133856 NAME@6108..6109
3857 EXPR_VAR@6108..61093857 IDENT@6108..6109 "v"
3858 NAME@6108..61093858 SLICE_DESC@6109..6113
3859 IDENT@6108..6109 "v"3859 L_BRACK@6109..6110 "["
3860 SLICE_DESC@6109..61133860 EXPR_NUMBER@6110..6111
3861 L_BRACK@6109..6110 "["3861 FLOAT@6110..6111 "1"
3862 EXPR_NUMBER@6110..61113862 COLON@6111..6112 ":"
3863 FLOAT@6110..6111 "1"3863 R_BRACK@6112..6113 "]"
3864 COLON@6111..6112 ":"3864 SEMI@6113..6114 ";"
3865 R_BRACK@6112..6113 "]"3865 WHITESPACE@6114..6125 "\n "
3866 SEMI@6113..6114 ";"3866 STMT_LOCAL@6125..6231
3867 WHITESPACE@6114..6125 "\n "3867 LOCAL_KW@6125..6130 "local"
3868 EXPR_LOCAL@6125..63263868 WHITESPACE@6130..6131 " "
3869 LOCAL_KW@6125..6130 "local"3869 BIND_DESTRUCT@6131..6230
3870 WHITESPACE@6130..6131 " "3870 DESTRUCT_FULL@6131..6140
3871 BIND_DESTRUCT@6131..62303871 NAME@6131..6140
3872 DESTRUCT_FULL@6131..61403872 IDENT@6131..6140 "attrs_str"
3873 NAME@6131..61403873 WHITESPACE@6140..6141 " "
3874 IDENT@6131..6140 "attrs_str"3874 ASSIGN@6141..6142 "="
3875 WHITESPACE@6140..6141 " "3875 WHITESPACE@6142..6155 "\n "
3876 ASSIGN@6141..6142 "="3876 EXPR_APPLY@6155..6230
3877 WHITESPACE@6142..6155 "\n "3877 EXPR_INDEX@6155..6163
3878 EXPR_APPLY@6155..62303878 EXPR_VAR@6155..6158
3879 EXPR_INDEX@6155..61633879 NAME@6155..6158
3880 EXPR_VAR@6155..61583880 IDENT@6155..6158 "std"
3881 NAME@6155..61583881 DOT@6158..6159 "."
3882 IDENT@6155..6158 "std"3882 NAME@6159..6163
3883 DOT@6158..6159 "."3883 IDENT@6159..6163 "join"
3884 NAME@6159..61633884 ARGS_DESC@6163..6230
3885 IDENT@6159..6163 "join"3885 L_PAREN@6163..6164 "("
3886 ARGS_DESC@6163..62303886 ARG@6164..6166
3887 L_PAREN@6163..6164 "("3887 EXPR_STRING@6164..6166
3888 ARG@6164..61663888 STRING_SINGLE@6164..6166 "''"
3889 EXPR_STRING@6164..61663889 COMMA@6166..6167 ","
3890 STRING_SINGLE@6164..6166 "''"3890 WHITESPACE@6167..6168 " "
3891 COMMA@6166..6167 ","3891 ARG@6168..6229
3892 WHITESPACE@6167..6168 " "3892 EXPR_ARRAY_COMP@6168..6229
3893 ARG@6168..62293893 L_BRACK@6168..6169 "["
3894 EXPR_ARRAY_COMP@6168..62293894 EXPR_BINARY@6169..6195
3895 L_BRACK@6168..6169 "["3895 LHS_EXPR@6169..6179
3896 EXPR_BINARY@6169..61953896 EXPR_STRING@6169..6179
3897 LHS_EXPR@6169..61793897 STRING_SINGLE@6169..6179 "' %s=\"%s\"'"
3898 EXPR_STRING@6169..61793898 WHITESPACE@6179..6180 " "
3899 STRING_SINGLE@6169..6179 "' %s=\"%s\"'"3899 MODULO@6180..6181 "%"
3900 WHITESPACE@6179..6180 " "3900 WHITESPACE@6181..6182 " "
3901 MODULO@6180..6181 "%"3901 EXPR_ARRAY@6182..6195
3902 WHITESPACE@6181..6182 " "3902 L_BRACK@6182..6183 "["
3903 EXPR_ARRAY@6182..61953903 EXPR_VAR@6183..6184
3904 L_BRACK@6182..6183 "["3904 NAME@6183..6184
3905 EXPR_VAR@6183..61843905 IDENT@6183..6184 "k"
3906 NAME@6183..61843906 COMMA@6184..6185 ","
3907 IDENT@6183..6184 "k"3907 WHITESPACE@6185..6186 " "
3908 COMMA@6184..6185 ","3908 EXPR_INDEX_EXPR@6186..6194
3909 WHITESPACE@6185..6186 " "3909 LHS_EXPR@6186..6191
3910 EXPR_INDEX_EXPR@6186..61943910 EXPR_VAR@6186..6191
3911 LHS_EXPR@6186..61913911 NAME@6186..6191
3912 EXPR_VAR@6186..61913912 IDENT@6186..6191 "attrs"
3913 NAME@6186..61913913 L_BRACK@6191..6192 "["
3914 IDENT@6186..6191 "attrs"3914 EXPR_VAR@6192..6193
3915 L_BRACK@6191..6192 "["3915 NAME@6192..6193
3916 EXPR_VAR@6192..61933916 IDENT@6192..6193 "k"
3917 NAME@6192..61933917 R_BRACK@6193..6194 "]"
3918 IDENT@6192..6193 "k"3918 R_BRACK@6194..6195 "]"
3919 R_BRACK@6193..6194 "]"3919 WHITESPACE@6195..6196 " "
3920 R_BRACK@6194..6195 "]"3920 FOR_SPEC@6196..6228
3921 WHITESPACE@6195..6196 " "3921 FOR_KW@6196..6199 "for"
3922 FOR_SPEC@6196..62283922 WHITESPACE@6199..6200 " "
3923 FOR_KW@6196..6199 "for"3923 NAME@6200..6201
3924 WHITESPACE@6199..6200 " "3924 IDENT@6200..6201 "k"
3925 NAME@6200..62013925 WHITESPACE@6201..6202 " "
3926 IDENT@6200..6201 "k"3926 IN_KW@6202..6204 "in"
3927 WHITESPACE@6201..6202 " "3927 WHITESPACE@6204..6205 " "
3928 IN_KW@6202..6204 "in"3928 EXPR_APPLY@6205..6228
3929 WHITESPACE@6204..6205 " "3929 EXPR_INDEX@6205..6221
3930 EXPR_APPLY@6205..62283930 EXPR_VAR@6205..6208
3931 EXPR_INDEX@6205..62213931 NAME@6205..6208
3932 EXPR_VAR@6205..62083932 IDENT@6205..6208 "std"
3933 NAME@6205..62083933 DOT@6208..6209 "."
3934 IDENT@6205..6208 "std"3934 NAME@6209..6221
3935 DOT@6208..6209 "."3935 IDENT@6209..6221 "objectFields"
3936 NAME@6209..62213936 ARGS_DESC@6221..6228
3937 IDENT@6209..6221 "objectFields"3937 L_PAREN@6221..6222 "("
3938 ARGS_DESC@6221..62283938 ARG@6222..6227
3939 L_PAREN@6221..6222 "("3939 EXPR_VAR@6222..6227
3940 ARG@6222..62273940 NAME@6222..6227
3941 EXPR_VAR@6222..62273941 IDENT@6222..6227 "attrs"
3942 NAME@6222..62273942 R_PAREN@6227..6228 ")"
3943 IDENT@6222..6227 "attrs"3943 R_BRACK@6228..6229 "]"
3944 R_PAREN@6227..6228 ")"3944 R_PAREN@6229..6230 ")"
3945 R_BRACK@6228..6229 "]"3945 SEMI@6230..6231 ";"
3946 R_PAREN@6229..6230 ")"3946 WHITESPACE@6231..6242 "\n "
3947 SEMI@6230..6231 ";"3947 FALSE_EXPR@6242..6326
3948 WHITESPACE@6231..6242 "\n "3948 EXPR_APPLY@6242..6326
3949 EXPR_APPLY@6242..63263949 EXPR_INDEX@6242..6254
3950 EXPR_INDEX@6242..62543950 EXPR_VAR@6242..6245
3951 EXPR_VAR@6242..62453951 NAME@6242..6245
3952 NAME@6242..62453952 IDENT@6242..6245 "std"
3953 IDENT@6242..6245 "std"3953 DOT@6245..6246 "."
3954 DOT@6245..6246 "."3954 NAME@6246..6254
3955 NAME@6246..62543955 IDENT@6246..6254 "deepJoin"
3956 IDENT@6246..6254 "deepJoin"3956 ARGS_DESC@6254..6326
3957 ARGS_DESC@6254..63263957 L_PAREN@6254..6255 "("
3958 L_PAREN@6254..6255 "("3958 ARG@6255..6325
3959 ARG@6255..63253959 EXPR_ARRAY@6255..6325
3960 EXPR_ARRAY@6255..63253960 L_BRACK@6255..6256 "["
3961 L_BRACK@6255..6256 "["3961 EXPR_STRING@6256..6259
3962 EXPR_STRING@6256..62593962 STRING_SINGLE@6256..6259 "'<'"
3963 STRING_SINGLE@6256..6259 "'<'"3963 COMMA@6259..6260 ","
3964 COMMA@6259..6260 ","3964 WHITESPACE@6260..6261 " "
3965 WHITESPACE@6260..6261 " "3965 EXPR_VAR@6261..6264
3966 EXPR_VAR@6261..62643966 NAME@6261..6264
3967 NAME@6261..62643967 IDENT@6261..6264 "tag"
3968 IDENT@6261..6264 "tag"3968 COMMA@6264..6265 ","
3969 COMMA@6264..6265 ","3969 WHITESPACE@6265..6266 " "
3970 WHITESPACE@6265..6266 " "3970 EXPR_VAR@6266..6275
3971 EXPR_VAR@6266..62753971 NAME@6266..6275
3972 NAME@6266..62753972 IDENT@6266..6275 "attrs_str"
3973 IDENT@6266..6275 "attrs_str"3973 COMMA@6275..6276 ","
3974 COMMA@6275..6276 ","3974 WHITESPACE@6276..6277 " "
3975 WHITESPACE@6276..6277 " "3975 EXPR_STRING@6277..6280
3976 EXPR_STRING@6277..62803976 STRING_SINGLE@6277..6280 "'>'"
3977 STRING_SINGLE@6277..6280 "'>'"3977 COMMA@6280..6281 ","
3978 COMMA@6280..6281 ","3978 WHITESPACE@6281..6282 " "
3979 WHITESPACE@6281..6282 " "3979 EXPR_ARRAY_COMP@6282..6308
3980 EXPR_ARRAY_COMP@6282..63083980 L_BRACK@6282..6283 "["
3981 L_BRACK@6282..6283 "["3981 EXPR_APPLY@6283..6289
3982 EXPR_APPLY@6283..62893982 EXPR_VAR@6283..6286
3983 EXPR_VAR@6283..62863983 NAME@6283..6286
3984 NAME@6283..62863984 IDENT@6283..6286 "aux"
3985 IDENT@6283..6286 "aux"3985 ARGS_DESC@6286..6289
3986 ARGS_DESC@6286..62893986 L_PAREN@6286..6287 "("
3987 L_PAREN@6286..6287 "("3987 ARG@6287..6288
3988 ARG@6287..62883988 EXPR_VAR@6287..6288
3989 EXPR_VAR@6287..62883989 NAME@6287..6288
3990 NAME@6287..62883990 IDENT@6287..6288 "x"
3991 IDENT@6287..6288 "x"3991 R_PAREN@6288..6289 ")"
3992 R_PAREN@6288..6289 ")"3992 WHITESPACE@6289..6290 " "
3993 WHITESPACE@6289..6290 " "3993 FOR_SPEC@6290..6307
3994 FOR_SPEC@6290..63073994 FOR_KW@6290..6293 "for"
3995 FOR_KW@6290..6293 "for"3995 WHITESPACE@6293..6294 " "
3996 WHITESPACE@6293..6294 " "3996 NAME@6294..6295
3997 NAME@6294..62953997 IDENT@6294..6295 "x"
3998 IDENT@6294..6295 "x"3998 WHITESPACE@6295..6296 " "
3999 WHITESPACE@6295..6296 " "3999 IN_KW@6296..6298 "in"
4000 IN_KW@6296..6298 "in"4000 WHITESPACE@6298..6299 " "
4001 WHITESPACE@6298..6299 " "4001 EXPR_VAR@6299..6307
4002 EXPR_VAR@6299..63074002 NAME@6299..6307
4003 NAME@6299..63074003 IDENT@6299..6307 "children"
4004 IDENT@6299..6307 "children"4004 R_BRACK@6307..6308 "]"
4005 R_BRACK@6307..6308 "]"4005 COMMA@6308..6309 ","
4006 COMMA@6308..6309 ","4006 WHITESPACE@6309..6310 " "
4007 WHITESPACE@6309..6310 " "4007 EXPR_STRING@6310..6314
4008 EXPR_STRING@6310..63144008 STRING_SINGLE@6310..6314 "'</'"
4009 STRING_SINGLE@6310..6314 "'</'"4009 COMMA@6314..6315 ","
4010 COMMA@6314..6315 ","4010 WHITESPACE@6315..6316 " "
4011 WHITESPACE@6315..6316 " "4011 EXPR_VAR@6316..6319
4012 EXPR_VAR@6316..63194012 NAME@6316..6319
4013 NAME@6316..63194013 IDENT@6316..6319 "tag"
4014 IDENT@6316..6319 "tag"4014 COMMA@6319..6320 ","
4015 COMMA@6319..6320 ","4015 WHITESPACE@6320..6321 " "
4016 WHITESPACE@6320..6321 " "4016 EXPR_STRING@6321..6324
4017 EXPR_STRING@6321..63244017 STRING_SINGLE@6321..6324 "'>'"
4018 STRING_SINGLE@6321..6324 "'>'"4018 R_BRACK@6324..6325 "]"
4019 R_BRACK@6324..6325 "]"4019 R_PAREN@6325..6326 ")"
4020 R_PAREN@6325..6326 ")"4020 SEMI@6326..6327 ";"
4021 SEMI@6326..6327 ";"4021 WHITESPACE@6327..6335 "\n\n "
4022 WHITESPACE@6327..6335 "\n\n "4022 FALSE_EXPR@6335..6345
4023 EXPR_APPLY@6335..63454023 EXPR_APPLY@6335..6345
4024 EXPR_VAR@6335..63384024 EXPR_VAR@6335..6338
4025 NAME@6335..63384025 NAME@6335..6338
4026 IDENT@6335..6338 "aux"4026 IDENT@6335..6338 "aux"
4027 ARGS_DESC@6338..63454027 ARGS_DESC@6338..6345
4028 L_PAREN@6338..6339 "("4028 L_PAREN@6338..6339 "("
4029 ARG@6339..63444029 ARG@6339..6344
4030 EXPR_VAR@6339..63444030 EXPR_VAR@6339..6344
4031 NAME@6339..63444031 NAME@6339..6344
4032 IDENT@6339..6344 "value"4032 IDENT@6339..6344 "value"
4033 R_PAREN@6344..6345 ")"4033 R_PAREN@6344..6345 ")"
4034 COMMA@6345..6346 ","4034 COMMA@6345..6346 ","
4035 WHITESPACE@6346..6350 "\n\n "4035 WHITESPACE@6346..6350 "\n\n "
4036 MEMBER_FIELD_METHOD@6350..65564036 MEMBER_FIELD_METHOD@6350..6899
4037 FIELD_NAME_FIXED@6350..63544037 FIELD_NAME_FIXED@6350..6358
4038 NAME@6350..63544038 NAME@6350..6358
4039 IDENT@6350..6354 "uniq"4039 IDENT@6350..6358 "setUnion"
4040 PARAMS_DESC@6354..63684040 PARAMS_DESC@6358..6373
4041 L_PAREN@6354..6355 "("4041 L_PAREN@6358..6359 "("
4042 PARAM@6355..63584042 PARAM@6359..6360
4043 DESTRUCT_FULL@6355..63584043 DESTRUCT_FULL@6359..6360
4044 NAME@6355..63584044 NAME@6359..6360
4045 IDENT@6355..6358 "arr"4045 IDENT@6359..6360 "a"
4046 COMMA@6358..6359 ","4046 COMMA@6360..6361 ","
4047 WHITESPACE@6359..6360 " "4047 WHITESPACE@6361..6362 " "
4048 PARAM@6360..63674048 PARAM@6362..6363
4049 DESTRUCT_FULL@6360..63644049 DESTRUCT_FULL@6362..6363
4050 NAME@6360..63644050 NAME@6362..6363
4051 IDENT@6360..6364 "keyF"4051 IDENT@6362..6363 "b"
4052 ASSIGN@6364..6365 "="4052 COMMA@6363..6364 ","
4053 EXPR_VAR@6365..63674053 WHITESPACE@6364..6365 " "
4054 NAME@6365..63674054 PARAM@6365..6372
4055 IDENT@6365..6367 "id"4055 DESTRUCT_FULL@6365..6369
4056 R_PAREN@6367..6368 ")"4056 NAME@6365..6369
4057 COLONCOLON@6368..6370 "::"4057 IDENT@6365..6369 "keyF"
4058 WHITESPACE@6370..6375 "\n "4058 ASSIGN@6369..6370 "="
4059 EXPR_LOCAL@6375..65564059 EXPR_VAR@6370..6372
4060 LOCAL_KW@6375..6380 "local"4060 NAME@6370..6372
4061 WHITESPACE@6380..6381 " "4061 IDENT@6370..6372 "id"
4062 BIND_FUNCTION@6381..65294062 R_PAREN@6372..6373 ")"
4063 NAME@6381..63824063 COLONCOLON@6373..6375 "::"
4064 IDENT@6381..6382 "f"4064 WHITESPACE@6375..6380 "\n "
4065 PARAMS_DESC@6382..63884065 SINGLE_LINE_SLASH_COMMENT@6380..6422 "// NOTE: order matter ..."
4066 L_PAREN@6382..6383 "("4066 WHITESPACE@6422..6426 " "
4067 PARAM@6383..63844067 STMT_LOCAL@6426..6875
4068 DESTRUCT_FULL@6383..63844068 LOCAL_KW@6426..6431 "local"
4069 NAME@6383..63844069 WHITESPACE@6431..6432 " "
4070 IDENT@6383..6384 "a"4070 BIND_FUNCTION@6432..6874
4071 COMMA@6384..6385 ","4071 NAME@6432..6435
4072 WHITESPACE@6385..6386 " "4072 IDENT@6432..6435 "aux"
4073 PARAM@6386..63874073 PARAMS_DESC@6435..6452
4074 DESTRUCT_FULL@6386..63874074 L_PAREN@6435..6436 "("
4075 NAME@6386..63874075 PARAM@6436..6437
4076 IDENT@6386..6387 "b"4076 DESTRUCT_FULL@6436..6437
4077 R_PAREN@6387..6388 ")"4077 NAME@6436..6437
4078 WHITESPACE@6388..6389 " "4078 IDENT@6436..6437 "a"
4079 ASSIGN@6389..6390 "="4079 COMMA@6437..6438 ","
4080 WHITESPACE@6390..6397 "\n "4080 WHITESPACE@6438..6439 " "
4081 EXPR_IF_THEN_ELSE@6397..65294081 PARAM@6439..6440
4082 IF_KW@6397..6399 "if"4082 DESTRUCT_FULL@6439..6440
4083 WHITESPACE@6399..6400 " "4083 NAME@6439..6440
4084 EXPR_BINARY@6400..64184084 IDENT@6439..6440 "b"
4085 LHS_EXPR@6400..64134085 COMMA@6440..6441 ","
4086 EXPR_APPLY@6400..64134086 WHITESPACE@6441..6442 " "
4087 EXPR_INDEX@6400..64104087 PARAM@6442..6443
4088 EXPR_VAR@6400..64034088 DESTRUCT_FULL@6442..6443
4089 NAME@6400..64034089 NAME@6442..6443
4090 IDENT@6400..6403 "std"4090 IDENT@6442..6443 "i"
4091 DOT@6403..6404 "."4091 COMMA@6443..6444 ","
4092 NAME@6404..64104092 WHITESPACE@6444..6445 " "
4093 IDENT@6404..6410 "length"4093 PARAM@6445..6446
4094 ARGS_DESC@6410..64134094 DESTRUCT_FULL@6445..6446
4095 L_PAREN@6410..6411 "("4095 NAME@6445..6446
4096 ARG@6411..64124096 IDENT@6445..6446 "j"
4097 EXPR_VAR@6411..64124097 COMMA@6446..6447 ","
4098 NAME@6411..64124098 WHITESPACE@6447..6448 " "
4099 IDENT@6411..6412 "a"4099 PARAM@6448..6451
4100 R_PAREN@6412..6413 ")"4100 DESTRUCT_FULL@6448..6451
4101 WHITESPACE@6413..6414 " "4101 NAME@6448..6451
4102 EQ@6414..6416 "=="4102 IDENT@6448..6451 "acc"
4103 WHITESPACE@6416..6417 " "4103 R_PAREN@6451..6452 ")"
4104 EXPR_NUMBER@6417..64184104 WHITESPACE@6452..6453 " "
4105 FLOAT@6417..6418 "0"4105 ASSIGN@6453..6454 "="
4106 WHITESPACE@6418..6419 " "4106 WHITESPACE@6454..6461 "\n "
4107 THEN_KW@6419..6423 "then"4107 EXPR_IF_THEN_ELSE@6461..6874
4108 WHITESPACE@6423..6432 "\n "4108 IF_KW@6461..6463 "if"
4109 TRUE_EXPR@6432..64354109 WHITESPACE@6463..6464 " "
4110 EXPR_ARRAY@6432..64354110 EXPR_BINARY@6464..6482
4111 L_BRACK@6432..6433 "["4111 LHS_EXPR@6464..6465
4112 EXPR_VAR@6433..64344112 EXPR_VAR@6464..6465
4113 NAME@6433..64344113 NAME@6464..6465
4114 IDENT@6433..6434 "b"4114 IDENT@6464..6465 "i"
4115 R_BRACK@6434..6435 "]"4115 WHITESPACE@6465..6466 " "
4116 WHITESPACE@6435..6442 "\n "4116 GE@6466..6468 ">="
4117 ELSE_KW@6442..6446 "else"4117 WHITESPACE@6468..6469 " "
4118 WHITESPACE@6446..6447 " "4118 EXPR_APPLY@6469..6482
4119 FALSE_EXPR@6447..65294119 EXPR_INDEX@6469..6479
4120 EXPR_IF_THEN_ELSE@6447..65294120 EXPR_VAR@6469..6472
4121 IF_KW@6447..6449 "if"4121 NAME@6469..6472
4122 WHITESPACE@6449..6450 " "4122 IDENT@6469..6472 "std"
4123 EXPR_BINARY@6450..64874123 DOT@6472..6473 "."
4124 LHS_EXPR@6450..64764124 NAME@6473..6479
4125 EXPR_APPLY@6450..64764125 IDENT@6473..6479 "length"
4126 EXPR_VAR@6450..64544126 ARGS_DESC@6479..6482
4127 NAME@6450..64544127 L_PAREN@6479..6480 "("
4128 IDENT@6450..6454 "keyF"4128 ARG@6480..6481
4129 ARGS_DESC@6454..64764129 EXPR_VAR@6480..6481
4130 L_PAREN@6454..6455 "("4130 NAME@6480..6481
4131 ARG@6455..64754131 IDENT@6480..6481 "a"
4132 EXPR_INDEX_EXPR@6455..64754132 R_PAREN@6481..6482 ")"
4133 LHS_EXPR@6455..64564133 WHITESPACE@6482..6483 " "
4134 EXPR_VAR@6455..64564134 THEN_KW@6483..6487 "then"
4135 NAME@6455..64564135 WHITESPACE@6487..6496 "\n "
4136 IDENT@6455..6456 "a"4136 TRUE_EXPR@6496..6507
4137 L_BRACK@6456..6457 "["4137 EXPR_BINARY@6496..6507
4138 EXPR_BINARY@6457..64744138 LHS_EXPR@6496..6499
4139 LHS_EXPR@6457..64704139 EXPR_VAR@6496..6499
4140 EXPR_APPLY@6457..64704140 NAME@6496..6499
4141 EXPR_INDEX@6457..64674141 IDENT@6496..6499 "acc"
4142 EXPR_VAR@6457..64604142 WHITESPACE@6499..6500 " "
4143 NAME@6457..64604143 PLUS@6500..6501 "+"
4144 IDENT@6457..6460 "std"4144 WHITESPACE@6501..6502 " "
4145 DOT@6460..6461 "."4145 EXPR_SLICE@6502..6507
4146 NAME@6461..64674146 EXPR_VAR@6502..6503
4147 IDENT@6461..6467 "length"4147 NAME@6502..6503
4148 ARGS_DESC@6467..64704148 IDENT@6502..6503 "b"
4149 L_PAREN@6467..6468 "("4149 SLICE_DESC@6503..6507
4150 ARG@6468..64694150 L_BRACK@6503..6504 "["
4151 EXPR_VAR@6468..64694151 EXPR_VAR@6504..6505
4152 NAME@6468..64694152 NAME@6504..6505
4153 IDENT@6468..6469 "a"4153 IDENT@6504..6505 "j"
4154 R_PAREN@6469..6470 ")"4154 COLON@6505..6506 ":"
4155 WHITESPACE@6470..6471 " "4155 R_BRACK@6506..6507 "]"
4156 MINUS@6471..6472 "-"4156 WHITESPACE@6507..6514 "\n "
4157 WHITESPACE@6472..6473 " "4157 ELSE_KW@6514..6518 "else"
4158 EXPR_NUMBER@6473..64744158 WHITESPACE@6518..6519 " "
4159 FLOAT@6473..6474 "1"4159 FALSE_EXPR@6519..6874
4160 R_BRACK@6474..6475 "]"4160 EXPR_IF_THEN_ELSE@6519..6874
4161 R_PAREN@6475..6476 ")"4161 IF_KW@6519..6521 "if"
4162 WHITESPACE@6476..6477 " "4162 WHITESPACE@6521..6522 " "
4163 EQ@6477..6479 "=="4163 EXPR_BINARY@6522..6540
4164 WHITESPACE@6479..6480 " "4164 LHS_EXPR@6522..6523
4165 EXPR_APPLY@6480..64874165 EXPR_VAR@6522..6523
4166 EXPR_VAR@6480..64844166 NAME@6522..6523
4167 NAME@6480..64844167 IDENT@6522..6523 "j"
4168 IDENT@6480..6484 "keyF"4168 WHITESPACE@6523..6524 " "
4169 ARGS_DESC@6484..64874169 GE@6524..6526 ">="
4170 L_PAREN@6484..6485 "("4170 WHITESPACE@6526..6527 " "
4171 ARG@6485..64864171 EXPR_APPLY@6527..6540
4172 EXPR_VAR@6485..64864172 EXPR_INDEX@6527..6537
4173 NAME@6485..64864173 EXPR_VAR@6527..6530
4174 IDENT@6485..6486 "b"4174 NAME@6527..6530
4175 R_PAREN@6486..6487 ")"4175 IDENT@6527..6530 "std"
4176 WHITESPACE@6487..6488 " "4176 DOT@6530..6531 "."
4177 THEN_KW@6488..6492 "then"4177 NAME@6531..6537
4178 WHITESPACE@6492..6501 "\n "4178 IDENT@6531..6537 "length"
4179 TRUE_EXPR@6501..65024179 ARGS_DESC@6537..6540
4180 EXPR_VAR@6501..65024180 L_PAREN@6537..6538 "("
4181 NAME@6501..65024181 ARG@6538..6539
4182 IDENT@6501..6502 "a"4182 EXPR_VAR@6538..6539
4183 WHITESPACE@6502..6509 "\n "4183 NAME@6538..6539
4184 ELSE_KW@6509..6513 "else"4184 IDENT@6538..6539 "b"
4185 WHITESPACE@6513..6522 "\n "4185 R_PAREN@6539..6540 ")"
4186 FALSE_EXPR@6522..65294186 WHITESPACE@6540..6541 " "
4187 EXPR_BINARY@6522..65294187 THEN_KW@6541..6545 "then"
4188 LHS_EXPR@6522..65234188 WHITESPACE@6545..6554 "\n "
4189 EXPR_VAR@6522..65234189 TRUE_EXPR@6554..6565
4190 NAME@6522..65234190 EXPR_BINARY@6554..6565
4191 IDENT@6522..6523 "a"4191 LHS_EXPR@6554..6557
4192 WHITESPACE@6523..6524 " "4192 EXPR_VAR@6554..6557
4193 PLUS@6524..6525 "+"4193 NAME@6554..6557
4194 WHITESPACE@6525..6526 " "4194 IDENT@6554..6557 "acc"
4195 EXPR_ARRAY@6526..65294195 WHITESPACE@6557..6558 " "
4196 L_BRACK@6526..6527 "["4196 PLUS@6558..6559 "+"
4197 EXPR_VAR@6527..65284197 WHITESPACE@6559..6560 " "
4198 NAME@6527..65284198 EXPR_SLICE@6560..6565
4199 IDENT@6527..6528 "b"4199 EXPR_VAR@6560..6561
4200 R_BRACK@6528..6529 "]"4200 NAME@6560..6561
4201 SEMI@6529..6530 ";"4201 IDENT@6560..6561 "a"
4202 WHITESPACE@6530..6535 "\n "4202 SLICE_DESC@6561..6565
4203 EXPR_APPLY@6535..65564203 L_BRACK@6561..6562 "["
4204 EXPR_INDEX@6535..65444204 EXPR_VAR@6562..6563
4205 EXPR_VAR@6535..65384205 NAME@6562..6563
4206 NAME@6535..65384206 IDENT@6562..6563 "i"
4207 IDENT@6535..6538 "std"4207 COLON@6563..6564 ":"
4208 DOT@6538..6539 "."4208 R_BRACK@6564..6565 "]"
4209 NAME@6539..65444209 WHITESPACE@6565..6572 "\n "
4210 IDENT@6539..6544 "foldl"4210 ELSE_KW@6572..6576 "else"
4211 ARGS_DESC@6544..65564211 WHITESPACE@6576..6585 "\n "
4212 L_PAREN@6544..6545 "("4212 STMT_LOCAL@6585..6607
4213 ARG@6545..65464213 LOCAL_KW@6585..6590 "local"
4214 EXPR_VAR@6545..65464214 WHITESPACE@6590..6591 " "
4215 NAME@6545..65464215 BIND_DESTRUCT@6591..6606
4216 IDENT@6545..6546 "f"4216 DESTRUCT_FULL@6591..6593
4217 COMMA@6546..6547 ","4217 NAME@6591..6593
4218 WHITESPACE@6547..6548 " "4218 IDENT@6591..6593 "ak"
4219 ARG@6548..65514219 WHITESPACE@6593..6594 " "
4220 EXPR_VAR@6548..65514220 ASSIGN@6594..6595 "="
4221 NAME@6548..65514221 WHITESPACE@6595..6596 " "
4222 IDENT@6548..6551 "arr"4222 EXPR_APPLY@6596..6606
4223 COMMA@6551..6552 ","4223 EXPR_VAR@6596..6600
4224 WHITESPACE@6552..6553 " "4224 NAME@6596..6600
4225 ARG@6553..65554225 IDENT@6596..6600 "keyF"
4226 EXPR_ARRAY@6553..65554226 ARGS_DESC@6600..6606
4227 L_BRACK@6553..6554 "["4227 L_PAREN@6600..6601 "("
4228 R_BRACK@6554..6555 "]"4228 ARG@6601..6605
4229 R_PAREN@6555..6556 ")"4229 EXPR_INDEX_EXPR@6601..6605
4230 COMMA@6556..6557 ","4230 LHS_EXPR@6601..6602
4231 WHITESPACE@6557..6561 "\n\n "4231 EXPR_VAR@6601..6602
4232 MEMBER_FIELD_METHOD@6561..66204232 NAME@6601..6602
4233 FIELD_NAME_FIXED@6561..65644233 IDENT@6601..6602 "a"
4234 NAME@6561..65644234 L_BRACK@6602..6603 "["
4235 IDENT@6561..6564 "set"4235 EXPR_VAR@6603..6604
4236 PARAMS_DESC@6564..65784236 NAME@6603..6604
4237 L_PAREN@6564..6565 "("4237 IDENT@6603..6604 "i"
4238 PARAM@6565..65684238 R_BRACK@6604..6605 "]"
4239 DESTRUCT_FULL@6565..65684239 R_PAREN@6605..6606 ")"
4240 NAME@6565..65684240 SEMI@6606..6607 ";"
4241 IDENT@6565..6568 "arr"4241 WHITESPACE@6607..6616 "\n "
4242 COMMA@6568..6569 ","4242 STMT_LOCAL@6616..6638
4243 WHITESPACE@6569..6570 " "4243 LOCAL_KW@6616..6621 "local"
4244 PARAM@6570..65774244 WHITESPACE@6621..6622 " "
4245 DESTRUCT_FULL@6570..65744245 BIND_DESTRUCT@6622..6637
4246 NAME@6570..65744246 DESTRUCT_FULL@6622..6624
4247 IDENT@6570..6574 "keyF"4247 NAME@6622..6624
4248 ASSIGN@6574..6575 "="4248 IDENT@6622..6624 "bk"
4249 EXPR_VAR@6575..65774249 WHITESPACE@6624..6625 " "
4250 NAME@6575..65774250 ASSIGN@6625..6626 "="
4251 IDENT@6575..6577 "id"4251 WHITESPACE@6626..6627 " "
4252 R_PAREN@6577..6578 ")"4252 EXPR_APPLY@6627..6637
4253 COLONCOLON@6578..6580 "::"4253 EXPR_VAR@6627..6631
4254 WHITESPACE@6580..6585 "\n "4254 NAME@6627..6631
4255 EXPR_APPLY@6585..66204255 IDENT@6627..6631 "keyF"
4256 EXPR_INDEX@6585..65934256 ARGS_DESC@6631..6637
4257 EXPR_VAR@6585..65884257 L_PAREN@6631..6632 "("
4258 NAME@6585..65884258 ARG@6632..6636
4259 IDENT@6585..6588 "std"4259 EXPR_INDEX_EXPR@6632..6636
4260 DOT@6588..6589 "."4260 LHS_EXPR@6632..6633
4261 NAME@6589..65934261 EXPR_VAR@6632..6633
4262 IDENT@6589..6593 "uniq"4262 NAME@6632..6633
4263 ARGS_DESC@6593..66204263 IDENT@6632..6633 "b"
4264 L_PAREN@6593..6594 "("4264 L_BRACK@6633..6634 "["
4265 ARG@6594..66134265 EXPR_VAR@6634..6635
4266 EXPR_APPLY@6594..66134266 NAME@6634..6635
4267 EXPR_INDEX@6594..66024267 IDENT@6634..6635 "j"
4268 EXPR_VAR@6594..65974268 R_BRACK@6635..6636 "]"
4269 NAME@6594..65974269 R_PAREN@6636..6637 ")"
4270 IDENT@6594..6597 "std"4270 SEMI@6637..6638 ";"
4271 DOT@6597..6598 "."4271 WHITESPACE@6638..6647 "\n "
4272 NAME@6598..66024272 FALSE_EXPR@6647..6874
4273 IDENT@6598..6602 "sort"4273 EXPR_IF_THEN_ELSE@6647..6874
4274 ARGS_DESC@6602..66134274 IF_KW@6647..6649 "if"
4275 L_PAREN@6602..6603 "("4275 WHITESPACE@6649..6650 " "
4276 ARG@6603..66064276 EXPR_BINARY@6650..6658
4277 EXPR_VAR@6603..66064277 LHS_EXPR@6650..6652
4278 NAME@6603..66064278 EXPR_VAR@6650..6652
4279 IDENT@6603..6606 "arr"4279 NAME@6650..6652
4280 COMMA@6606..6607 ","4280 IDENT@6650..6652 "ak"
4281 WHITESPACE@6607..6608 " "4281 WHITESPACE@6652..6653 " "
4282 ARG@6608..66124282 EQ@6653..6655 "=="
4283 EXPR_VAR@6608..66124283 WHITESPACE@6655..6656 " "
4284 NAME@6608..66124284 EXPR_VAR@6656..6658
4285 IDENT@6608..6612 "keyF"4285 NAME@6656..6658
4286 R_PAREN@6612..6613 ")"4286 IDENT@6656..6658 "bk"
4287 COMMA@6613..6614 ","4287 WHITESPACE@6658..6659 " "
4288 WHITESPACE@6614..6615 " "4288 THEN_KW@6659..6663 "then"
4289 ARG@6615..66194289 WHITESPACE@6663..6674 "\n "
4290 EXPR_VAR@6615..66194290 TRUE_EXPR@6674..6722
4291 NAME@6615..66194291 EXPR_APPLY@6674..6722
4292 IDENT@6615..6619 "keyF"4292 EXPR_VAR@6674..6677
4293 R_PAREN@6619..6620 ")"4293 NAME@6674..6677
4294 COMMA@6620..6621 ","4294 IDENT@6674..6677 "aux"
4295 WHITESPACE@6621..6625 "\n\n "4295 ARGS_DESC@6677..6722
4296 MEMBER_FIELD_METHOD@6625..67604296 L_PAREN@6677..6678 "("
4297 FIELD_NAME_FIXED@6625..66344297 ARG@6678..6679
4298 NAME@6625..66344298 EXPR_VAR@6678..6679
4299 IDENT@6625..6634 "setMember"4299 NAME@6678..6679
4300 PARAMS_DESC@6634..66514300 IDENT@6678..6679 "a"
4301 L_PAREN@6634..6635 "("4301 COMMA@6679..6680 ","
4302 PARAM@6635..66364302 WHITESPACE@6680..6681 " "
4303 DESTRUCT_FULL@6635..66364303 ARG@6681..6682
4304 NAME@6635..66364304 EXPR_VAR@6681..6682
4305 IDENT@6635..6636 "x"4305 NAME@6681..6682
4306 COMMA@6636..6637 ","4306 IDENT@6681..6682 "b"
4307 WHITESPACE@6637..6638 " "4307 COMMA@6682..6683 ","
4308 PARAM@6638..66414308 WHITESPACE@6683..6684 " "
4309 DESTRUCT_FULL@6638..66414309 ARG@6684..6689
4310 NAME@6638..66414310 EXPR_BINARY@6684..6689
4311 IDENT@6638..6641 "arr"4311 LHS_EXPR@6684..6685
4312 COMMA@6641..6642 ","4312 EXPR_VAR@6684..6685
4313 WHITESPACE@6642..6643 " "4313 NAME@6684..6685
4314 PARAM@6643..66504314 IDENT@6684..6685 "i"
4315 DESTRUCT_FULL@6643..66474315 WHITESPACE@6685..6686 " "
4316 NAME@6643..66474316 PLUS@6686..6687 "+"
4317 IDENT@6643..6647 "keyF"4317 WHITESPACE@6687..6688 " "
4318 ASSIGN@6647..6648 "="4318 EXPR_NUMBER@6688..6689
4319 EXPR_VAR@6648..66504319 FLOAT@6688..6689 "1"
4320 NAME@6648..66504320 COMMA@6689..6690 ","
4321 IDENT@6648..6650 "id"4321 WHITESPACE@6690..6691 " "
4322 R_PAREN@6650..6651 ")"4322 ARG@6691..6696
4323 COLONCOLON@6651..6653 "::"4323 EXPR_BINARY@6691..6696
4324 WHITESPACE@6653..6658 "\n "4324 LHS_EXPR@6691..6692
4325 SINGLE_LINE_SLASH_COMMENT@6658..6712 "// TODO(dcunnin): Bin ..."4325 EXPR_VAR@6691..6692
4326 WHITESPACE@6712..6716 " "4326 NAME@6691..6692
4327 EXPR_BINARY@6716..67604327 IDENT@6691..6692 "j"
4328 LHS_EXPR@6716..67564328 WHITESPACE@6692..6693 " "
4329 EXPR_APPLY@6716..67564329 PLUS@6693..6694 "+"
4330 EXPR_INDEX@6716..67264330 WHITESPACE@6694..6695 " "
4331 EXPR_VAR@6716..67194331 EXPR_NUMBER@6695..6696
4332 NAME@6716..67194332 FLOAT@6695..6696 "1"
4333 IDENT@6716..6719 "std"4333 COMMA@6696..6697 ","
4334 DOT@6719..6720 "."4334 WHITESPACE@6697..6698 " "
4335 NAME@6720..67264335 ARG@6698..6710
4336 IDENT@6720..6726 "length"4336 EXPR_BINARY@6698..6710
4337 ARGS_DESC@6726..67564337 LHS_EXPR@6698..6701
4338 L_PAREN@6726..6727 "("4338 EXPR_VAR@6698..6701
4339 ARG@6727..67554339 NAME@6698..6701
4340 EXPR_APPLY@6727..67554340 IDENT@6698..6701 "acc"
4341 EXPR_INDEX@6727..67394341 WHITESPACE@6701..6702 " "
4342 EXPR_VAR@6727..67304342 PLUS@6702..6703 "+"
4343 NAME@6727..67304343 WHITESPACE@6703..6704 " "
4344 IDENT@6727..6730 "std"4344 EXPR_ARRAY@6704..6710
4345 DOT@6730..6731 "."4345 L_BRACK@6704..6705 "["
4346 NAME@6731..67394346 EXPR_INDEX_EXPR@6705..6709
4347 IDENT@6731..6739 "setInter"4347 LHS_EXPR@6705..6706
4348 ARGS_DESC@6739..67554348 EXPR_VAR@6705..6706
4349 L_PAREN@6739..6740 "("4349 NAME@6705..6706
4350 ARG@6740..67434350 IDENT@6705..6706 "a"
4351 EXPR_ARRAY@6740..67434351 L_BRACK@6706..6707 "["
4352 L_BRACK@6740..6741 "["4352 EXPR_VAR@6707..6708
4353 EXPR_VAR@6741..67424353 NAME@6707..6708
4354 NAME@6741..67424354 IDENT@6707..6708 "i"
4355 IDENT@6741..6742 "x"4355 R_BRACK@6708..6709 "]"
4356 R_BRACK@6742..6743 "]"4356 R_BRACK@6709..6710 "]"
4357 COMMA@6743..6744 ","4357 R_PAREN@6710..6711 ")"
4358 WHITESPACE@6744..6745 " "4358 WHITESPACE@6711..6712 " "
4359 ARG@6745..67484359 TAILSTRICT_KW@6712..6722 "tailstrict"
4360 EXPR_VAR@6745..67484360 WHITESPACE@6722..6731 "\n "
4361 NAME@6745..67484361 ELSE_KW@6731..6735 "else"
4362 IDENT@6745..6748 "arr"4362 WHITESPACE@6735..6736 " "
4363 COMMA@6748..6749 ","4363 FALSE_EXPR@6736..6874
4364 WHITESPACE@6749..6750 " "4364 EXPR_IF_THEN_ELSE@6736..6874
4365 ARG@6750..67544365 IF_KW@6736..6738 "if"
4366 EXPR_VAR@6750..67544366 WHITESPACE@6738..6739 " "
4367 NAME@6750..67544367 EXPR_BINARY@6739..6746
4368 IDENT@6750..6754 "keyF"4368 LHS_EXPR@6739..6741
4369 R_PAREN@6754..6755 ")"4369 EXPR_VAR@6739..6741
4370 R_PAREN@6755..6756 ")"4370 NAME@6739..6741
4371 WHITESPACE@6756..6757 " "4371 IDENT@6739..6741 "ak"
4372 GT@6757..6758 ">"4372 WHITESPACE@6741..6742 " "
4373 WHITESPACE@6758..6759 " "4373 LT@6742..6743 "<"
4374 EXPR_NUMBER@6759..67604374 WHITESPACE@6743..6744 " "
4375 FLOAT@6759..6760 "0"4375 EXPR_VAR@6744..6746
4376 COMMA@6760..6761 ","4376 NAME@6744..6746
4377 WHITESPACE@6761..6765 "\n\n "4377 IDENT@6744..6746 "bk"
4378 MEMBER_FIELD_METHOD@6765..73144378 WHITESPACE@6746..6747 " "
4379 FIELD_NAME_FIXED@6765..67734379 THEN_KW@6747..6751 "then"
4380 NAME@6765..67734380 WHITESPACE@6751..6762 "\n "
4381 IDENT@6765..6773 "setUnion"4381 TRUE_EXPR@6762..6806
4382 PARAMS_DESC@6773..67884382 EXPR_APPLY@6762..6806
4383 L_PAREN@6773..6774 "("4383 EXPR_VAR@6762..6765
4384 PARAM@6774..67754384 NAME@6762..6765
4385 DESTRUCT_FULL@6774..67754385 IDENT@6762..6765 "aux"
4386 NAME@6774..67754386 ARGS_DESC@6765..6806
4387 IDENT@6774..6775 "a"4387 L_PAREN@6765..6766 "("
4388 COMMA@6775..6776 ","4388 ARG@6766..6767
4389 WHITESPACE@6776..6777 " "4389 EXPR_VAR@6766..6767
4390 PARAM@6777..67784390 NAME@6766..6767
4391 DESTRUCT_FULL@6777..67784391 IDENT@6766..6767 "a"
4392 NAME@6777..67784392 COMMA@6767..6768 ","
4393 IDENT@6777..6778 "b"4393 WHITESPACE@6768..6769 " "
4394 COMMA@6778..6779 ","4394 ARG@6769..6770
4395 WHITESPACE@6779..6780 " "4395 EXPR_VAR@6769..6770
4396 PARAM@6780..67874396 NAME@6769..6770
4397 DESTRUCT_FULL@6780..67844397 IDENT@6769..6770 "b"
4398 NAME@6780..67844398 COMMA@6770..6771 ","
4399 IDENT@6780..6784 "keyF"4399 WHITESPACE@6771..6772 " "
4400 ASSIGN@6784..6785 "="4400 ARG@6772..6777
4401 EXPR_VAR@6785..67874401 EXPR_BINARY@6772..6777
4402 NAME@6785..67874402 LHS_EXPR@6772..6773
4403 IDENT@6785..6787 "id"4403 EXPR_VAR@6772..6773
4404 R_PAREN@6787..6788 ")"4404 NAME@6772..6773
4405 COLONCOLON@6788..6790 "::"4405 IDENT@6772..6773 "i"
4406 WHITESPACE@6790..6795 "\n "4406 WHITESPACE@6773..6774 " "
4407 SINGLE_LINE_SLASH_COMMENT@6795..6837 "// NOTE: order matter ..."4407 PLUS@6774..6775 "+"
4408 WHITESPACE@6837..6841 " "4408 WHITESPACE@6775..6776 " "
4409 EXPR_LOCAL@6841..73144409 EXPR_NUMBER@6776..6777
4410 LOCAL_KW@6841..6846 "local"4410 FLOAT@6776..6777 "1"
4411 WHITESPACE@6846..6847 " "4411 COMMA@6777..6778 ","
4412 BIND_FUNCTION@6847..72894412 WHITESPACE@6778..6779 " "
4413 NAME@6847..68504413 ARG@6779..6780
4414 IDENT@6847..6850 "aux"4414 EXPR_VAR@6779..6780
4415 PARAMS_DESC@6850..68674415 NAME@6779..6780
4416 L_PAREN@6850..6851 "("4416 IDENT@6779..6780 "j"
4417 PARAM@6851..68524417 COMMA@6780..6781 ","
4418 DESTRUCT_FULL@6851..68524418 WHITESPACE@6781..6782 " "
4419 NAME@6851..68524419 ARG@6782..6794
4420 IDENT@6851..6852 "a"4420 EXPR_BINARY@6782..6794
4421 COMMA@6852..6853 ","4421 LHS_EXPR@6782..6785
4422 WHITESPACE@6853..6854 " "4422 EXPR_VAR@6782..6785
4423 PARAM@6854..68554423 NAME@6782..6785
4424 DESTRUCT_FULL@6854..68554424 IDENT@6782..6785 "acc"
4425 NAME@6854..68554425 WHITESPACE@6785..6786 " "
4426 IDENT@6854..6855 "b"4426 PLUS@6786..6787 "+"
4427 COMMA@6855..6856 ","4427 WHITESPACE@6787..6788 " "
4428 WHITESPACE@6856..6857 " "4428 EXPR_ARRAY@6788..6794
4429 PARAM@6857..68584429 L_BRACK@6788..6789 "["
4430 DESTRUCT_FULL@6857..68584430 EXPR_INDEX_EXPR@6789..6793
4431 NAME@6857..68584431 LHS_EXPR@6789..6790
4432 IDENT@6857..6858 "i"4432 EXPR_VAR@6789..6790
4433 COMMA@6858..6859 ","4433 NAME@6789..6790
4434 WHITESPACE@6859..6860 " "4434 IDENT@6789..6790 "a"
4435 PARAM@6860..68614435 L_BRACK@6790..6791 "["
4436 DESTRUCT_FULL@6860..68614436 EXPR_VAR@6791..6792
4437 NAME@6860..68614437 NAME@6791..6792
4438 IDENT@6860..6861 "j"4438 IDENT@6791..6792 "i"
4439 COMMA@6861..6862 ","4439 R_BRACK@6792..6793 "]"
4440 WHITESPACE@6862..6863 " "4440 R_BRACK@6793..6794 "]"
4441 PARAM@6863..68664441 R_PAREN@6794..6795 ")"
4442 DESTRUCT_FULL@6863..68664442 WHITESPACE@6795..6796 " "
4443 NAME@6863..68664443 TAILSTRICT_KW@6796..6806 "tailstrict"
4444 IDENT@6863..6866 "acc"4444 WHITESPACE@6806..6815 "\n "
4445 R_PAREN@6866..6867 ")"4445 ELSE_KW@6815..6819 "else"
4446 WHITESPACE@6867..6868 " "4446 WHITESPACE@6819..6830 "\n "
4447 ASSIGN@6868..6869 "="4447 FALSE_EXPR@6830..6874
4448 WHITESPACE@6869..6876 "\n "4448 EXPR_APPLY@6830..6874
4449 EXPR_IF_THEN_ELSE@6876..72894449 EXPR_VAR@6830..6833
4450 IF_KW@6876..6878 "if"4450 NAME@6830..6833
4451 WHITESPACE@6878..6879 " "4451 IDENT@6830..6833 "aux"
4452 EXPR_BINARY@6879..68974452 ARGS_DESC@6833..6874
4453 LHS_EXPR@6879..68804453 L_PAREN@6833..6834 "("
4454 EXPR_VAR@6879..68804454 ARG@6834..6835
4455 NAME@6879..68804455 EXPR_VAR@6834..6835
4456 IDENT@6879..6880 "i"4456 NAME@6834..6835
4457 WHITESPACE@6880..6881 " "4457 IDENT@6834..6835 "a"
4458 GE@6881..6883 ">="4458 COMMA@6835..6836 ","
4459 WHITESPACE@6883..6884 " "4459 WHITESPACE@6836..6837 " "
4460 EXPR_APPLY@6884..68974460 ARG@6837..6838
4461 EXPR_INDEX@6884..68944461 EXPR_VAR@6837..6838
4462 EXPR_VAR@6884..68874462 NAME@6837..6838
4463 NAME@6884..68874463 IDENT@6837..6838 "b"
4464 IDENT@6884..6887 "std"4464 COMMA@6838..6839 ","
4465 DOT@6887..6888 "."4465 WHITESPACE@6839..6840 " "
4466 NAME@6888..68944466 ARG@6840..6841
4467 IDENT@6888..6894 "length"4467 EXPR_VAR@6840..6841
4468 ARGS_DESC@6894..68974468 NAME@6840..6841
4469 L_PAREN@6894..6895 "("4469 IDENT@6840..6841 "i"
4470 ARG@6895..68964470 COMMA@6841..6842 ","
4471 EXPR_VAR@6895..68964471 WHITESPACE@6842..6843 " "
4472 NAME@6895..68964472 ARG@6843..6848
4473 IDENT@6895..6896 "a"4473 EXPR_BINARY@6843..6848
4474 R_PAREN@6896..6897 ")"4474 LHS_EXPR@6843..6844
4475 WHITESPACE@6897..6898 " "4475 EXPR_VAR@6843..6844
4476 THEN_KW@6898..6902 "then"4476 NAME@6843..6844
4477 WHITESPACE@6902..6911 "\n "4477 IDENT@6843..6844 "j"
4478 TRUE_EXPR@6911..69224478 WHITESPACE@6844..6845 " "
4479 EXPR_BINARY@6911..69224479 PLUS@6845..6846 "+"
4480 LHS_EXPR@6911..69144480 WHITESPACE@6846..6847 " "
4481 EXPR_VAR@6911..69144481 EXPR_NUMBER@6847..6848
4482 NAME@6911..69144482 FLOAT@6847..6848 "1"
4483 IDENT@6911..6914 "acc"4483 COMMA@6848..6849 ","
4484 WHITESPACE@6914..6915 " "4484 WHITESPACE@6849..6850 " "
4485 PLUS@6915..6916 "+"4485 ARG@6850..6862
4486 WHITESPACE@6916..6917 " "4486 EXPR_BINARY@6850..6862
4487 EXPR_SLICE@6917..69224487 LHS_EXPR@6850..6853
4488 EXPR_VAR@6917..69184488 EXPR_VAR@6850..6853
4489 NAME@6917..69184489 NAME@6850..6853
4490 IDENT@6917..6918 "b"4490 IDENT@6850..6853 "acc"
4491 SLICE_DESC@6918..69224491 WHITESPACE@6853..6854 " "
4492 L_BRACK@6918..6919 "["4492 PLUS@6854..6855 "+"
4493 EXPR_VAR@6919..69204493 WHITESPACE@6855..6856 " "
4494 NAME@6919..69204494 EXPR_ARRAY@6856..6862
4495 IDENT@6919..6920 "j"4495 L_BRACK@6856..6857 "["
4496 COLON@6920..6921 ":"4496 EXPR_INDEX_EXPR@6857..6861
4497 R_BRACK@6921..6922 "]"4497 LHS_EXPR@6857..6858
4498 WHITESPACE@6922..6929 "\n "4498 EXPR_VAR@6857..6858
4499 ELSE_KW@6929..6933 "else"4499 NAME@6857..6858
4500 WHITESPACE@6933..6934 " "4500 IDENT@6857..6858 "b"
4501 FALSE_EXPR@6934..72894501 L_BRACK@6858..6859 "["
4502 EXPR_IF_THEN_ELSE@6934..72894502 EXPR_VAR@6859..6860
4503 IF_KW@6934..6936 "if"4503 NAME@6859..6860
4504 WHITESPACE@6936..6937 " "4504 IDENT@6859..6860 "j"
4505 EXPR_BINARY@6937..69554505 R_BRACK@6860..6861 "]"
4506 LHS_EXPR@6937..69384506 R_BRACK@6861..6862 "]"
4507 EXPR_VAR@6937..69384507 R_PAREN@6862..6863 ")"
4508 NAME@6937..69384508 WHITESPACE@6863..6864 " "
4509 IDENT@6937..6938 "j"4509 TAILSTRICT_KW@6864..6874 "tailstrict"
4510 WHITESPACE@6938..6939 " "4510 SEMI@6874..6875 ";"
4511 GE@6939..6941 ">="4511 WHITESPACE@6875..6880 "\n "
4512 WHITESPACE@6941..6942 " "4512 EXPR_APPLY@6880..6899
4513 EXPR_APPLY@6942..69554513 EXPR_VAR@6880..6883
4514 EXPR_INDEX@6942..69524514 NAME@6880..6883
4515 EXPR_VAR@6942..69454515 IDENT@6880..6883 "aux"
4516 NAME@6942..69454516 ARGS_DESC@6883..6899
4517 IDENT@6942..6945 "std"4517 L_PAREN@6883..6884 "("
4518 DOT@6945..6946 "."4518 ARG@6884..6885
4519 NAME@6946..69524519 EXPR_VAR@6884..6885
4520 IDENT@6946..6952 "length"4520 NAME@6884..6885
4521 ARGS_DESC@6952..69554521 IDENT@6884..6885 "a"
4522 L_PAREN@6952..6953 "("4522 COMMA@6885..6886 ","
4523 ARG@6953..69544523 WHITESPACE@6886..6887 " "
4524 EXPR_VAR@6953..69544524 ARG@6887..6888
4525 NAME@6953..69544525 EXPR_VAR@6887..6888
4526 IDENT@6953..6954 "b"4526 NAME@6887..6888
4527 R_PAREN@6954..6955 ")"4527 IDENT@6887..6888 "b"
4528 WHITESPACE@6955..6956 " "4528 COMMA@6888..6889 ","
4529 THEN_KW@6956..6960 "then"4529 WHITESPACE@6889..6890 " "
4530 WHITESPACE@6960..6969 "\n "4530 ARG@6890..6891
4531 TRUE_EXPR@6969..69804531 EXPR_NUMBER@6890..6891
4532 EXPR_BINARY@6969..69804532 FLOAT@6890..6891 "0"
4533 LHS_EXPR@6969..69724533 COMMA@6891..6892 ","
4534 EXPR_VAR@6969..69724534 WHITESPACE@6892..6893 " "
4535 NAME@6969..69724535 ARG@6893..6894
4536 IDENT@6969..6972 "acc"4536 EXPR_NUMBER@6893..6894
4537 WHITESPACE@6972..6973 " "4537 FLOAT@6893..6894 "0"
4538 PLUS@6973..6974 "+"4538 COMMA@6894..6895 ","
4539 WHITESPACE@6974..6975 " "4539 WHITESPACE@6895..6896 " "
4540 EXPR_SLICE@6975..69804540 ARG@6896..6898
4541 EXPR_VAR@6975..69764541 EXPR_ARRAY@6896..6898
4542 NAME@6975..69764542 L_BRACK@6896..6897 "["
4543 IDENT@6975..6976 "a"4543 R_BRACK@6897..6898 "]"
4544 SLICE_DESC@6976..69804544 R_PAREN@6898..6899 ")"
4545 L_BRACK@6976..6977 "["4545 COMMA@6899..6900 ","
4546 EXPR_VAR@6977..69784546 WHITESPACE@6900..6904 "\n\n "
4547 NAME@6977..69784547 MEMBER_FIELD_METHOD@6904..7361
4548 IDENT@6977..6978 "i"4548 FIELD_NAME_FIXED@6904..6911
4549 COLON@6978..6979 ":"4549 NAME@6904..6911
4550 R_BRACK@6979..6980 "]"4550 IDENT@6904..6911 "setDiff"
4551 WHITESPACE@6980..6987 "\n "4551 PARAMS_DESC@6911..6926
4552 ELSE_KW@6987..6991 "else"4552 L_PAREN@6911..6912 "("
4553 WHITESPACE@6991..7000 "\n "4553 PARAM@6912..6913
4554 FALSE_EXPR@7000..72894554 DESTRUCT_FULL@6912..6913
4555 EXPR_LOCAL@7000..72894555 NAME@6912..6913
4556 LOCAL_KW@7000..7005 "local"4556 IDENT@6912..6913 "a"
4557 WHITESPACE@7005..7006 " "4557 COMMA@6913..6914 ","
4558 BIND_DESTRUCT@7006..70214558 WHITESPACE@6914..6915 " "
4559 DESTRUCT_FULL@7006..70084559 PARAM@6915..6916
4560 NAME@7006..70084560 DESTRUCT_FULL@6915..6916
4561 IDENT@7006..7008 "ak"4561 NAME@6915..6916
4562 WHITESPACE@7008..7009 " "4562 IDENT@6915..6916 "b"
4563 ASSIGN@7009..7010 "="4563 COMMA@6916..6917 ","
4564 WHITESPACE@7010..7011 " "4564 WHITESPACE@6917..6918 " "
4565 EXPR_APPLY@7011..70214565 PARAM@6918..6925
4566 EXPR_VAR@7011..70154566 DESTRUCT_FULL@6918..6922
4567 NAME@7011..70154567 NAME@6918..6922
4568 IDENT@7011..7015 "keyF"4568 IDENT@6918..6922 "keyF"
4569 ARGS_DESC@7015..70214569 ASSIGN@6922..6923 "="
4570 L_PAREN@7015..7016 "("4570 EXPR_VAR@6923..6925
4571 ARG@7016..70204571 NAME@6923..6925
4572 EXPR_INDEX_EXPR@7016..70204572 IDENT@6923..6925 "id"
4573 LHS_EXPR@7016..70174573 R_PAREN@6925..6926 ")"
4574 EXPR_VAR@7016..70174574 COLONCOLON@6926..6928 "::"
4575 NAME@7016..70174575 WHITESPACE@6928..6933 "\n "
4576 IDENT@7016..7017 "a"4576 STMT_LOCAL@6933..7326
4577 L_BRACK@7017..7018 "["4577 LOCAL_KW@6933..6938 "local"
4578 EXPR_VAR@7018..70194578 WHITESPACE@6938..6939 " "
4579 NAME@7018..70194579 BIND_FUNCTION@6939..7325
4580 IDENT@7018..7019 "i"4580 NAME@6939..6942
4581 R_BRACK@7019..7020 "]"4581 IDENT@6939..6942 "aux"
4582 R_PAREN@7020..7021 ")"4582 PARAMS_DESC@6942..6959
4583 SEMI@7021..7022 ";"4583 L_PAREN@6942..6943 "("
4584 WHITESPACE@7022..7031 "\n "4584 PARAM@6943..6944
4585 EXPR_LOCAL@7031..72894585 DESTRUCT_FULL@6943..6944
4586 LOCAL_KW@7031..7036 "local"4586 NAME@6943..6944
4587 WHITESPACE@7036..7037 " "4587 IDENT@6943..6944 "a"
4588 BIND_DESTRUCT@7037..70524588 COMMA@6944..6945 ","
4589 DESTRUCT_FULL@7037..70394589 WHITESPACE@6945..6946 " "
4590 NAME@7037..70394590 PARAM@6946..6947
4591 IDENT@7037..7039 "bk"4591 DESTRUCT_FULL@6946..6947
4592 WHITESPACE@7039..7040 " "4592 NAME@6946..6947
4593 ASSIGN@7040..7041 "="4593 IDENT@6946..6947 "b"
4594 WHITESPACE@7041..7042 " "4594 COMMA@6947..6948 ","
4595 EXPR_APPLY@7042..70524595 WHITESPACE@6948..6949 " "
4596 EXPR_VAR@7042..70464596 PARAM@6949..6950
4597 NAME@7042..70464597 DESTRUCT_FULL@6949..6950
4598 IDENT@7042..7046 "keyF"4598 NAME@6949..6950
4599 ARGS_DESC@7046..70524599 IDENT@6949..6950 "i"
4600 L_PAREN@7046..7047 "("4600 COMMA@6950..6951 ","
4601 ARG@7047..70514601 WHITESPACE@6951..6952 " "
4602 EXPR_INDEX_EXPR@7047..70514602 PARAM@6952..6953
4603 LHS_EXPR@7047..70484603 DESTRUCT_FULL@6952..6953
4604 EXPR_VAR@7047..70484604 NAME@6952..6953
4605 NAME@7047..70484605 IDENT@6952..6953 "j"
4606 IDENT@7047..7048 "b"4606 COMMA@6953..6954 ","
4607 L_BRACK@7048..7049 "["4607 WHITESPACE@6954..6955 " "
4608 EXPR_VAR@7049..70504608 PARAM@6955..6958
4609 NAME@7049..70504609 DESTRUCT_FULL@6955..6958
4610 IDENT@7049..7050 "j"4610 NAME@6955..6958
4611 R_BRACK@7050..7051 "]"4611 IDENT@6955..6958 "acc"
4612 R_PAREN@7051..7052 ")"4612 R_PAREN@6958..6959 ")"
4613 SEMI@7052..7053 ";"4613 WHITESPACE@6959..6960 " "
4614 WHITESPACE@7053..7062 "\n "4614 ASSIGN@6960..6961 "="
4615 EXPR_IF_THEN_ELSE@7062..72894615 WHITESPACE@6961..6968 "\n "
4616 IF_KW@7062..7064 "if"4616 EXPR_IF_THEN_ELSE@6968..7325
4617 WHITESPACE@7064..7065 " "4617 IF_KW@6968..6970 "if"
4618 EXPR_BINARY@7065..70734618 WHITESPACE@6970..6971 " "
4619 LHS_EXPR@7065..70674619 EXPR_BINARY@6971..6989
4620 EXPR_VAR@7065..70674620 LHS_EXPR@6971..6972
4621 NAME@7065..70674621 EXPR_VAR@6971..6972
4622 IDENT@7065..7067 "ak"4622 NAME@6971..6972
4623 WHITESPACE@7067..7068 " "4623 IDENT@6971..6972 "i"
4624 EQ@7068..7070 "=="4624 WHITESPACE@6972..6973 " "
4625 WHITESPACE@7070..7071 " "4625 GE@6973..6975 ">="
4626 EXPR_VAR@7071..70734626 WHITESPACE@6975..6976 " "
4627 NAME@7071..70734627 EXPR_APPLY@6976..6989
4628 IDENT@7071..7073 "bk"4628 EXPR_INDEX@6976..6986
4629 WHITESPACE@7073..7074 " "4629 EXPR_VAR@6976..6979
4630 THEN_KW@7074..7078 "then"4630 NAME@6976..6979
4631 WHITESPACE@7078..7089 "\n "4631 IDENT@6976..6979 "std"
4632 TRUE_EXPR@7089..71374632 DOT@6979..6980 "."
4633 EXPR_APPLY@7089..71374633 NAME@6980..6986
4634 EXPR_VAR@7089..70924634 IDENT@6980..6986 "length"
4635 NAME@7089..70924635 ARGS_DESC@6986..6989
4636 IDENT@7089..7092 "aux"4636 L_PAREN@6986..6987 "("
4637 ARGS_DESC@7092..71374637 ARG@6987..6988
4638 L_PAREN@7092..7093 "("4638 EXPR_VAR@6987..6988
4639 ARG@7093..70944639 NAME@6987..6988
4640 EXPR_VAR@7093..70944640 IDENT@6987..6988 "a"
4641 NAME@7093..70944641 R_PAREN@6988..6989 ")"
4642 IDENT@7093..7094 "a"4642 WHITESPACE@6989..6990 " "
4643 COMMA@7094..7095 ","4643 THEN_KW@6990..6994 "then"
4644 WHITESPACE@7095..7096 " "4644 WHITESPACE@6994..7003 "\n "
4645 ARG@7096..70974645 TRUE_EXPR@7003..7006
4646 EXPR_VAR@7096..70974646 EXPR_VAR@7003..7006
4647 NAME@7096..70974647 NAME@7003..7006
4648 IDENT@7096..7097 "b"4648 IDENT@7003..7006 "acc"
4649 COMMA@7097..7098 ","4649 WHITESPACE@7006..7013 "\n "
4650 WHITESPACE@7098..7099 " "4650 ELSE_KW@7013..7017 "else"
4651 ARG@7099..71044651 WHITESPACE@7017..7018 " "
4652 EXPR_BINARY@7099..71044652 FALSE_EXPR@7018..7325
4653 LHS_EXPR@7099..71004653 EXPR_IF_THEN_ELSE@7018..7325
4654 EXPR_VAR@7099..71004654 IF_KW@7018..7020 "if"
4655 NAME@7099..71004655 WHITESPACE@7020..7021 " "
4656 IDENT@7099..7100 "i"4656 EXPR_BINARY@7021..7039
4657 WHITESPACE@7100..7101 " "4657 LHS_EXPR@7021..7022
4658 PLUS@7101..7102 "+"4658 EXPR_VAR@7021..7022
4659 WHITESPACE@7102..7103 " "4659 NAME@7021..7022
4660 EXPR_NUMBER@7103..71044660 IDENT@7021..7022 "j"
4661 FLOAT@7103..7104 "1"4661 WHITESPACE@7022..7023 " "
4662 COMMA@7104..7105 ","4662 GE@7023..7025 ">="
4663 WHITESPACE@7105..7106 " "4663 WHITESPACE@7025..7026 " "
4664 ARG@7106..71114664 EXPR_APPLY@7026..7039
4665 EXPR_BINARY@7106..71114665 EXPR_INDEX@7026..7036
4666 LHS_EXPR@7106..71074666 EXPR_VAR@7026..7029
4667 EXPR_VAR@7106..71074667 NAME@7026..7029
4668 NAME@7106..71074668 IDENT@7026..7029 "std"
4669 IDENT@7106..7107 "j"4669 DOT@7029..7030 "."
4670 WHITESPACE@7107..7108 " "4670 NAME@7030..7036
4671 PLUS@7108..7109 "+"4671 IDENT@7030..7036 "length"
4672 WHITESPACE@7109..7110 " "4672 ARGS_DESC@7036..7039
4673 EXPR_NUMBER@7110..71114673 L_PAREN@7036..7037 "("
4674 FLOAT@7110..7111 "1"4674 ARG@7037..7038
4675 COMMA@7111..7112 ","4675 EXPR_VAR@7037..7038
4676 WHITESPACE@7112..7113 " "4676 NAME@7037..7038
4677 ARG@7113..71254677 IDENT@7037..7038 "b"
4678 EXPR_BINARY@7113..71254678 R_PAREN@7038..7039 ")"
4679 LHS_EXPR@7113..71164679 WHITESPACE@7039..7040 " "
4680 EXPR_VAR@7113..71164680 THEN_KW@7040..7044 "then"
4681 NAME@7113..71164681 WHITESPACE@7044..7053 "\n "
4682 IDENT@7113..7116 "acc"4682 TRUE_EXPR@7053..7064
4683 WHITESPACE@7116..7117 " "4683 EXPR_BINARY@7053..7064
4684 PLUS@7117..7118 "+"4684 LHS_EXPR@7053..7056
4685 WHITESPACE@7118..7119 " "4685 EXPR_VAR@7053..7056
4686 EXPR_ARRAY@7119..71254686 NAME@7053..7056
4687 L_BRACK@7119..7120 "["4687 IDENT@7053..7056 "acc"
4688 EXPR_INDEX_EXPR@7120..71244688 WHITESPACE@7056..7057 " "
4689 LHS_EXPR@7120..71214689 PLUS@7057..7058 "+"
4690 EXPR_VAR@7120..71214690 WHITESPACE@7058..7059 " "
4691 NAME@7120..71214691 EXPR_SLICE@7059..7064
4692 IDENT@7120..7121 "a"4692 EXPR_VAR@7059..7060
4693 L_BRACK@7121..7122 "["4693 NAME@7059..7060
4694 EXPR_VAR@7122..71234694 IDENT@7059..7060 "a"
4695 NAME@7122..71234695 SLICE_DESC@7060..7064
4696 IDENT@7122..7123 "i"4696 L_BRACK@7060..7061 "["
4697 R_BRACK@7123..7124 "]"4697 EXPR_VAR@7061..7062
4698 R_BRACK@7124..7125 "]"4698 NAME@7061..7062
4699 R_PAREN@7125..7126 ")"4699 IDENT@7061..7062 "i"
4700 WHITESPACE@7126..7127 " "4700 COLON@7062..7063 ":"
4701 TAILSTRICT_KW@7127..7137 "tailstrict"4701 R_BRACK@7063..7064 "]"
4702 WHITESPACE@7137..7146 "\n "4702 WHITESPACE@7064..7071 "\n "
4703 ELSE_KW@7146..7150 "else"4703 ELSE_KW@7071..7075 "else"
4704 WHITESPACE@7150..7151 " "4704 WHITESPACE@7075..7084 "\n "
4705 FALSE_EXPR@7151..72894705 FALSE_EXPR@7084..7325
4706 EXPR_IF_THEN_ELSE@7151..72894706 EXPR_IF_THEN_ELSE@7084..7325
4707 IF_KW@7151..7153 "if"4707 IF_KW@7084..7086 "if"
4708 WHITESPACE@7153..7154 " "4708 WHITESPACE@7086..7087 " "
4709 EXPR_BINARY@7154..71614709 EXPR_BINARY@7087..7111
4710 LHS_EXPR@7154..71564710 LHS_EXPR@7087..7097
4711 EXPR_VAR@7154..71564711 EXPR_APPLY@7087..7097
4712 NAME@7154..71564712 EXPR_VAR@7087..7091
4713 IDENT@7154..7156 "ak"4713 NAME@7087..7091
4714 WHITESPACE@7156..7157 " "4714 IDENT@7087..7091 "keyF"
4715 LT@7157..7158 "<"4715 ARGS_DESC@7091..7097
4716 WHITESPACE@7158..7159 " "4716 L_PAREN@7091..7092 "("
4717 EXPR_VAR@7159..71614717 ARG@7092..7096
4718 NAME@7159..71614718 EXPR_INDEX_EXPR@7092..7096
4719 IDENT@7159..7161 "bk"4719 LHS_EXPR@7092..7093
4720 WHITESPACE@7161..7162 " "4720 EXPR_VAR@7092..7093
4721 THEN_KW@7162..7166 "then"4721 NAME@7092..7093
4722 WHITESPACE@7166..7177 "\n "4722 IDENT@7092..7093 "a"
4723 TRUE_EXPR@7177..72214723 L_BRACK@7093..7094 "["
4724 EXPR_APPLY@7177..72214724 EXPR_VAR@7094..7095
4725 EXPR_VAR@7177..71804725 NAME@7094..7095
4726 NAME@7177..71804726 IDENT@7094..7095 "i"
4727 IDENT@7177..7180 "aux"4727 R_BRACK@7095..7096 "]"
4728 ARGS_DESC@7180..72214728 R_PAREN@7096..7097 ")"
4729 L_PAREN@7180..7181 "("4729 WHITESPACE@7097..7098 " "
4730 ARG@7181..71824730 EQ@7098..7100 "=="
4731 EXPR_VAR@7181..71824731 WHITESPACE@7100..7101 " "
4732 NAME@7181..71824732 EXPR_APPLY@7101..7111
4733 IDENT@7181..7182 "a"4733 EXPR_VAR@7101..7105
4734 COMMA@7182..7183 ","4734 NAME@7101..7105
4735 WHITESPACE@7183..7184 " "4735 IDENT@7101..7105 "keyF"
4736 ARG@7184..71854736 ARGS_DESC@7105..7111
4737 EXPR_VAR@7184..71854737 L_PAREN@7105..7106 "("
4738 NAME@7184..71854738 ARG@7106..7110
4739 IDENT@7184..7185 "b"4739 EXPR_INDEX_EXPR@7106..7110
4740 COMMA@7185..7186 ","4740 LHS_EXPR@7106..7107
4741 WHITESPACE@7186..7187 " "4741 EXPR_VAR@7106..7107
4742 ARG@7187..71924742 NAME@7106..7107
4743 EXPR_BINARY@7187..71924743 IDENT@7106..7107 "b"
4744 LHS_EXPR@7187..71884744 L_BRACK@7107..7108 "["
4745 EXPR_VAR@7187..71884745 EXPR_VAR@7108..7109
4746 NAME@7187..71884746 NAME@7108..7109
4747 IDENT@7187..7188 "i"4747 IDENT@7108..7109 "j"
4748 WHITESPACE@7188..7189 " "4748 R_BRACK@7109..7110 "]"
4749 PLUS@7189..7190 "+"4749 R_PAREN@7110..7111 ")"
4750 WHITESPACE@7190..7191 " "4750 WHITESPACE@7111..7112 " "
4751 EXPR_NUMBER@7191..71924751 THEN_KW@7112..7116 "then"
4752 FLOAT@7191..7192 "1"4752 WHITESPACE@7116..7127 "\n "
4753 COMMA@7192..7193 ","4753 TRUE_EXPR@7127..7166
4754 WHITESPACE@7193..7194 " "4754 EXPR_APPLY@7127..7166
4755 ARG@7194..71954755 EXPR_VAR@7127..7130
4756 EXPR_VAR@7194..71954756 NAME@7127..7130
4757 NAME@7194..71954757 IDENT@7127..7130 "aux"
4758 IDENT@7194..7195 "j"4758 ARGS_DESC@7130..7166
4759 COMMA@7195..7196 ","4759 L_PAREN@7130..7131 "("
4760 WHITESPACE@7196..7197 " "4760 ARG@7131..7132
4761 ARG@7197..72094761 EXPR_VAR@7131..7132
4762 EXPR_BINARY@7197..72094762 NAME@7131..7132
4763 LHS_EXPR@7197..72004763 IDENT@7131..7132 "a"
4764 EXPR_VAR@7197..72004764 COMMA@7132..7133 ","
4765 NAME@7197..72004765 WHITESPACE@7133..7134 " "
4766 IDENT@7197..7200 "acc"4766 ARG@7134..7135
4767 WHITESPACE@7200..7201 " "4767 EXPR_VAR@7134..7135
4768 PLUS@7201..7202 "+"4768 NAME@7134..7135
4769 WHITESPACE@7202..7203 " "4769 IDENT@7134..7135 "b"
4770 EXPR_ARRAY@7203..72094770 COMMA@7135..7136 ","
4771 L_BRACK@7203..7204 "["4771 WHITESPACE@7136..7137 " "
4772 EXPR_INDEX_EXPR@7204..72084772 ARG@7137..7142
4773 LHS_EXPR@7204..72054773 EXPR_BINARY@7137..7142
4774 EXPR_VAR@7204..72054774 LHS_EXPR@7137..7138
4775 NAME@7204..72054775 EXPR_VAR@7137..7138
4776 IDENT@7204..7205 "a"4776 NAME@7137..7138
4777 L_BRACK@7205..7206 "["4777 IDENT@7137..7138 "i"
4778 EXPR_VAR@7206..72074778 WHITESPACE@7138..7139 " "
4779 NAME@7206..72074779 PLUS@7139..7140 "+"
4780 IDENT@7206..7207 "i"4780 WHITESPACE@7140..7141 " "
4781 R_BRACK@7207..7208 "]"4781 EXPR_NUMBER@7141..7142
4782 R_BRACK@7208..7209 "]"4782 FLOAT@7141..7142 "1"
4783 R_PAREN@7209..7210 ")"4783 COMMA@7142..7143 ","
4784 WHITESPACE@7210..7211 " "4784 WHITESPACE@7143..7144 " "
4785 TAILSTRICT_KW@7211..7221 "tailstrict"4785 ARG@7144..7149
4786 WHITESPACE@7221..7230 "\n "4786 EXPR_BINARY@7144..7149
4787 ELSE_KW@7230..7234 "else"4787 LHS_EXPR@7144..7145
4788 WHITESPACE@7234..7245 "\n "4788 EXPR_VAR@7144..7145
4789 FALSE_EXPR@7245..72894789 NAME@7144..7145
4790 EXPR_APPLY@7245..72894790 IDENT@7144..7145 "j"
4791 EXPR_VAR@7245..72484791 WHITESPACE@7145..7146 " "
4792 NAME@7245..72484792 PLUS@7146..7147 "+"
4793 IDENT@7245..7248 "aux"4793 WHITESPACE@7147..7148 " "
4794 ARGS_DESC@7248..72894794 EXPR_NUMBER@7148..7149
4795 L_PAREN@7248..7249 "("4795 FLOAT@7148..7149 "1"
4796 ARG@7249..72504796 COMMA@7149..7150 ","
4797 EXPR_VAR@7249..72504797 WHITESPACE@7150..7151 " "
4798 NAME@7249..72504798 ARG@7151..7154
4799 IDENT@7249..7250 "a"4799 EXPR_VAR@7151..7154
4800 COMMA@7250..7251 ","4800 NAME@7151..7154
4801 WHITESPACE@7251..7252 " "4801 IDENT@7151..7154 "acc"
4802 ARG@7252..72534802 R_PAREN@7154..7155 ")"
4803 EXPR_VAR@7252..72534803 WHITESPACE@7155..7156 " "
4804 NAME@7252..72534804 TAILSTRICT_KW@7156..7166 "tailstrict"
4805 IDENT@7252..7253 "b"4805 WHITESPACE@7166..7175 "\n "
4806 COMMA@7253..7254 ","4806 ELSE_KW@7175..7179 "else"
4807 WHITESPACE@7254..7255 " "4807 WHITESPACE@7179..7180 " "
4808 ARG@7255..72564808 FALSE_EXPR@7180..7325
4809 EXPR_VAR@7255..72564809 EXPR_IF_THEN_ELSE@7180..7325
4810 NAME@7255..72564810 IF_KW@7180..7182 "if"
4811 IDENT@7255..7256 "i"4811 WHITESPACE@7182..7183 " "
4812 COMMA@7256..7257 ","4812 EXPR_BINARY@7183..7206
4813 WHITESPACE@7257..7258 " "4813 LHS_EXPR@7183..7193
4814 ARG@7258..72634814 EXPR_APPLY@7183..7193
4815 EXPR_BINARY@7258..72634815 EXPR_VAR@7183..7187
4816 LHS_EXPR@7258..72594816 NAME@7183..7187
4817 EXPR_VAR@7258..72594817 IDENT@7183..7187 "keyF"
4818 NAME@7258..72594818 ARGS_DESC@7187..7193
4819 IDENT@7258..7259 "j"4819 L_PAREN@7187..7188 "("
4820 WHITESPACE@7259..7260 " "4820 ARG@7188..7192
4821 PLUS@7260..7261 "+"4821 EXPR_INDEX_EXPR@7188..7192
4822 WHITESPACE@7261..7262 " "4822 LHS_EXPR@7188..7189
4823 EXPR_NUMBER@7262..72634823 EXPR_VAR@7188..7189
4824 FLOAT@7262..7263 "1"4824 NAME@7188..7189
4825 COMMA@7263..7264 ","4825 IDENT@7188..7189 "a"
4826 WHITESPACE@7264..7265 " "4826 L_BRACK@7189..7190 "["
4827 ARG@7265..72774827 EXPR_VAR@7190..7191
4828 EXPR_BINARY@7265..72774828 NAME@7190..7191
4829 LHS_EXPR@7265..72684829 IDENT@7190..7191 "i"
4830 EXPR_VAR@7265..72684830 R_BRACK@7191..7192 "]"
4831 NAME@7265..72684831 R_PAREN@7192..7193 ")"
4832 IDENT@7265..7268 "acc"4832 WHITESPACE@7193..7194 " "
4833 WHITESPACE@7268..7269 " "4833 LT@7194..7195 "<"
4834 PLUS@7269..7270 "+"4834 WHITESPACE@7195..7196 " "
4835 WHITESPACE@7270..7271 " "4835 EXPR_APPLY@7196..7206
4836 EXPR_ARRAY@7271..72774836 EXPR_VAR@7196..7200
4837 L_BRACK@7271..7272 "["4837 NAME@7196..7200
4838 EXPR_INDEX_EXPR@7272..72764838 IDENT@7196..7200 "keyF"
4839 LHS_EXPR@7272..72734839 ARGS_DESC@7200..7206
4840 EXPR_VAR@7272..72734840 L_PAREN@7200..7201 "("
4841 NAME@7272..72734841 ARG@7201..7205
4842 IDENT@7272..7273 "b"4842 EXPR_INDEX_EXPR@7201..7205
4843 L_BRACK@7273..7274 "["4843 LHS_EXPR@7201..7202
4844 EXPR_VAR@7274..72754844 EXPR_VAR@7201..7202
4845 NAME@7274..72754845 NAME@7201..7202
4846 IDENT@7274..7275 "j"4846 IDENT@7201..7202 "b"
4847 R_BRACK@7275..7276 "]"4847 L_BRACK@7202..7203 "["
4848 R_BRACK@7276..7277 "]"4848 EXPR_VAR@7203..7204
4849 R_PAREN@7277..7278 ")"4849 NAME@7203..7204
4850 WHITESPACE@7278..7279 " "4850 IDENT@7203..7204 "j"
4851 TAILSTRICT_KW@7279..7289 "tailstrict"4851 R_BRACK@7204..7205 "]"
4852 SEMI@7289..7290 ";"4852 R_PAREN@7205..7206 ")"
4853 WHITESPACE@7290..7295 "\n "4853 WHITESPACE@7206..7207 " "
4854 EXPR_APPLY@7295..73144854 THEN_KW@7207..7211 "then"
4855 EXPR_VAR@7295..72984855 WHITESPACE@7211..7222 "\n "
4856 NAME@7295..72984856 TRUE_EXPR@7222..7266
4857 IDENT@7295..7298 "aux"4857 EXPR_APPLY@7222..7266
4858 ARGS_DESC@7298..73144858 EXPR_VAR@7222..7225
4859 L_PAREN@7298..7299 "("4859 NAME@7222..7225
4860 ARG@7299..73004860 IDENT@7222..7225 "aux"
4861 EXPR_VAR@7299..73004861 ARGS_DESC@7225..7266
4862 NAME@7299..73004862 L_PAREN@7225..7226 "("
4863 IDENT@7299..7300 "a"4863 ARG@7226..7227
4864 COMMA@7300..7301 ","4864 EXPR_VAR@7226..7227
4865 WHITESPACE@7301..7302 " "4865 NAME@7226..7227
4866 ARG@7302..73034866 IDENT@7226..7227 "a"
4867 EXPR_VAR@7302..73034867 COMMA@7227..7228 ","
4868 NAME@7302..73034868 WHITESPACE@7228..7229 " "
4869 IDENT@7302..7303 "b"4869 ARG@7229..7230
4870 COMMA@7303..7304 ","4870 EXPR_VAR@7229..7230
4871 WHITESPACE@7304..7305 " "4871 NAME@7229..7230
4872 ARG@7305..73064872 IDENT@7229..7230 "b"
4873 EXPR_NUMBER@7305..73064873 COMMA@7230..7231 ","
4874 FLOAT@7305..7306 "0"4874 WHITESPACE@7231..7232 " "
4875 COMMA@7306..7307 ","4875 ARG@7232..7237
4876 WHITESPACE@7307..7308 " "4876 EXPR_BINARY@7232..7237
4877 ARG@7308..73094877 LHS_EXPR@7232..7233
4878 EXPR_NUMBER@7308..73094878 EXPR_VAR@7232..7233
4879 FLOAT@7308..7309 "0"4879 NAME@7232..7233
4880 COMMA@7309..7310 ","4880 IDENT@7232..7233 "i"
4881 WHITESPACE@7310..7311 " "4881 WHITESPACE@7233..7234 " "
4882 ARG@7311..73134882 PLUS@7234..7235 "+"
4883 EXPR_ARRAY@7311..73134883 WHITESPACE@7235..7236 " "
4884 L_BRACK@7311..7312 "["4884 EXPR_NUMBER@7236..7237
4885 R_BRACK@7312..7313 "]"4885 FLOAT@7236..7237 "1"
4886 R_PAREN@7313..7314 ")"4886 COMMA@7237..7238 ","
4887 COMMA@7314..7315 ","4887 WHITESPACE@7238..7239 " "
4888 WHITESPACE@7315..7319 "\n\n "4888 ARG@7239..7240
4889 MEMBER_FIELD_METHOD@7319..77414889 EXPR_VAR@7239..7240
4890 FIELD_NAME_FIXED@7319..73274890 NAME@7239..7240
4891 NAME@7319..73274891 IDENT@7239..7240 "j"
4892 IDENT@7319..7327 "setInter"4892 COMMA@7240..7241 ","
4893 PARAMS_DESC@7327..73424893 WHITESPACE@7241..7242 " "
4894 L_PAREN@7327..7328 "("4894 ARG@7242..7254
4895 PARAM@7328..73294895 EXPR_BINARY@7242..7254
4896 DESTRUCT_FULL@7328..73294896 LHS_EXPR@7242..7245
4897 NAME@7328..73294897 EXPR_VAR@7242..7245
4898 IDENT@7328..7329 "a"4898 NAME@7242..7245
4899 COMMA@7329..7330 ","4899 IDENT@7242..7245 "acc"
4900 WHITESPACE@7330..7331 " "4900 WHITESPACE@7245..7246 " "
4901 PARAM@7331..73324901 PLUS@7246..7247 "+"
4902 DESTRUCT_FULL@7331..73324902 WHITESPACE@7247..7248 " "
4903 NAME@7331..73324903 EXPR_ARRAY@7248..7254
4904 IDENT@7331..7332 "b"4904 L_BRACK@7248..7249 "["
4905 COMMA@7332..7333 ","4905 EXPR_INDEX_EXPR@7249..7253
4906 WHITESPACE@7333..7334 " "4906 LHS_EXPR@7249..7250
4907 PARAM@7334..73414907 EXPR_VAR@7249..7250
4908 DESTRUCT_FULL@7334..73384908 NAME@7249..7250
4909 NAME@7334..73384909 IDENT@7249..7250 "a"
4910 IDENT@7334..7338 "keyF"4910 L_BRACK@7250..7251 "["
4911 ASSIGN@7338..7339 "="4911 EXPR_VAR@7251..7252
4912 EXPR_VAR@7339..73414912 NAME@7251..7252
4913 NAME@7339..73414913 IDENT@7251..7252 "i"
4914 IDENT@7339..7341 "id"4914 R_BRACK@7252..7253 "]"
4915 R_PAREN@7341..7342 ")"4915 R_BRACK@7253..7254 "]"
4916 COLONCOLON@7342..7344 "::"4916 R_PAREN@7254..7255 ")"
4917 WHITESPACE@7344..7349 "\n "4917 WHITESPACE@7255..7256 " "
4918 EXPR_LOCAL@7349..77414918 TAILSTRICT_KW@7256..7266 "tailstrict"
4919 LOCAL_KW@7349..7354 "local"4919 WHITESPACE@7266..7275 "\n "
4920 WHITESPACE@7354..7355 " "4920 ELSE_KW@7275..7279 "else"
4921 BIND_FUNCTION@7355..77054921 WHITESPACE@7279..7290 "\n "
4922 NAME@7355..73584922 FALSE_EXPR@7290..7325
4923 IDENT@7355..7358 "aux"4923 EXPR_APPLY@7290..7325
4924 PARAMS_DESC@7358..73754924 EXPR_VAR@7290..7293
4925 L_PAREN@7358..7359 "("4925 NAME@7290..7293
4926 PARAM@7359..73604926 IDENT@7290..7293 "aux"
4927 DESTRUCT_FULL@7359..73604927 ARGS_DESC@7293..7325
4928 NAME@7359..73604928 L_PAREN@7293..7294 "("
4929 IDENT@7359..7360 "a"4929 ARG@7294..7295
4930 COMMA@7360..7361 ","4930 EXPR_VAR@7294..7295
4931 WHITESPACE@7361..7362 " "4931 NAME@7294..7295
4932 PARAM@7362..73634932 IDENT@7294..7295 "a"
4933 DESTRUCT_FULL@7362..73634933 COMMA@7295..7296 ","
4934 NAME@7362..73634934 WHITESPACE@7296..7297 " "
4935 IDENT@7362..7363 "b"4935 ARG@7297..7298
4936 COMMA@7363..7364 ","4936 EXPR_VAR@7297..7298
4937 WHITESPACE@7364..7365 " "4937 NAME@7297..7298
4938 PARAM@7365..73664938 IDENT@7297..7298 "b"
4939 DESTRUCT_FULL@7365..73664939 COMMA@7298..7299 ","
4940 NAME@7365..73664940 WHITESPACE@7299..7300 " "
4941 IDENT@7365..7366 "i"4941 ARG@7300..7301
4942 COMMA@7366..7367 ","4942 EXPR_VAR@7300..7301
4943 WHITESPACE@7367..7368 " "4943 NAME@7300..7301
4944 PARAM@7368..73694944 IDENT@7300..7301 "i"
4945 DESTRUCT_FULL@7368..73694945 COMMA@7301..7302 ","
4946 NAME@7368..73694946 WHITESPACE@7302..7303 " "
4947 IDENT@7368..7369 "j"4947 ARG@7303..7308
4948 COMMA@7369..7370 ","4948 EXPR_BINARY@7303..7308
4949 WHITESPACE@7370..7371 " "4949 LHS_EXPR@7303..7304
4950 PARAM@7371..73744950 EXPR_VAR@7303..7304
4951 DESTRUCT_FULL@7371..73744951 NAME@7303..7304
4952 NAME@7371..73744952 IDENT@7303..7304 "j"
4953 IDENT@7371..7374 "acc"4953 WHITESPACE@7304..7305 " "
4954 R_PAREN@7374..7375 ")"4954 PLUS@7305..7306 "+"
4955 WHITESPACE@7375..7376 " "4955 WHITESPACE@7306..7307 " "
4956 ASSIGN@7376..7377 "="4956 EXPR_NUMBER@7307..7308
4957 WHITESPACE@7377..7384 "\n "4957 FLOAT@7307..7308 "1"
4958 EXPR_IF_THEN_ELSE@7384..77054958 COMMA@7308..7309 ","
4959 IF_KW@7384..7386 "if"4959 WHITESPACE@7309..7310 " "
4960 WHITESPACE@7386..7387 " "4960 ARG@7310..7313
4961 EXPR_BINARY@7387..74274961 EXPR_VAR@7310..7313
4962 LHS_EXPR@7387..74054962 NAME@7310..7313
4963 EXPR_BINARY@7387..74054963 IDENT@7310..7313 "acc"
4964 LHS_EXPR@7387..73884964 R_PAREN@7313..7314 ")"
4965 EXPR_VAR@7387..73884965 WHITESPACE@7314..7315 " "
4966 NAME@7387..73884966 TAILSTRICT_KW@7315..7325 "tailstrict"
4967 IDENT@7387..7388 "i"4967 SEMI@7325..7326 ";"
4968 WHITESPACE@7388..7389 " "4968 WHITESPACE@7326..7331 "\n "
4969 GE@7389..7391 ">="4969 EXPR_APPLY@7331..7361
4970 WHITESPACE@7391..7392 " "4970 EXPR_VAR@7331..7334
4971 EXPR_APPLY@7392..74054971 NAME@7331..7334
4972 EXPR_INDEX@7392..74024972 IDENT@7331..7334 "aux"
4973 EXPR_VAR@7392..73954973 ARGS_DESC@7334..7361
4974 NAME@7392..73954974 L_PAREN@7334..7335 "("
4975 IDENT@7392..7395 "std"4975 ARG@7335..7336
4976 DOT@7395..7396 "."4976 EXPR_VAR@7335..7336
4977 NAME@7396..74024977 NAME@7335..7336
4978 IDENT@7396..7402 "length"4978 IDENT@7335..7336 "a"
4979 ARGS_DESC@7402..74054979 COMMA@7336..7337 ","
4980 L_PAREN@7402..7403 "("4980 WHITESPACE@7337..7338 " "
4981 ARG@7403..74044981 ARG@7338..7339
4982 EXPR_VAR@7403..74044982 EXPR_VAR@7338..7339
4983 NAME@7403..74044983 NAME@7338..7339
4984 IDENT@7403..7404 "a"4984 IDENT@7338..7339 "b"
4985 R_PAREN@7404..7405 ")"4985 COMMA@7339..7340 ","
4986 WHITESPACE@7405..7406 " "4986 WHITESPACE@7340..7341 " "
4987 OR@7406..7408 "||"4987 ARG@7341..7342
4988 WHITESPACE@7408..7409 " "4988 EXPR_NUMBER@7341..7342
4989 EXPR_BINARY@7409..74274989 FLOAT@7341..7342 "0"
4990 LHS_EXPR@7409..74104990 COMMA@7342..7343 ","
4991 EXPR_VAR@7409..74104991 WHITESPACE@7343..7344 " "
4992 NAME@7409..74104992 ARG@7344..7345
4993 IDENT@7409..7410 "j"4993 EXPR_NUMBER@7344..7345
4994 WHITESPACE@7410..7411 " "4994 FLOAT@7344..7345 "0"
4995 GE@7411..7413 ">="4995 COMMA@7345..7346 ","
4996 WHITESPACE@7413..7414 " "4996 WHITESPACE@7346..7347 " "
4997 EXPR_APPLY@7414..74274997 ARG@7347..7349
4998 EXPR_INDEX@7414..74244998 EXPR_ARRAY@7347..7349
4999 EXPR_VAR@7414..74174999 L_BRACK@7347..7348 "["
5000 NAME@7414..74175000 R_BRACK@7348..7349 "]"
5001 IDENT@7414..7417 "std"5001 R_PAREN@7349..7350 ")"
5002 DOT@7417..7418 "."5002 WHITESPACE@7350..7351 " "
5003 NAME@7418..74245003 TAILSTRICT_KW@7351..7361 "tailstrict"
5004 IDENT@7418..7424 "length"5004 COMMA@7361..7362 ","
5005 ARGS_DESC@7424..74275005 WHITESPACE@7362..7366 "\n\n "
5006 L_PAREN@7424..7425 "("5006 MEMBER_FIELD_METHOD@7366..8154
5007 ARG@7425..74265007 FIELD_NAME_FIXED@7366..7376
5008 EXPR_VAR@7425..74265008 NAME@7366..7376
5009 NAME@7425..74265009 IDENT@7366..7376 "mergePatch"
5010 IDENT@7425..7426 "b"5010 PARAMS_DESC@7376..7391
5011 R_PAREN@7426..7427 ")"5011 L_PAREN@7376..7377 "("
5012 WHITESPACE@7427..7428 " "5012 PARAM@7377..7383
5013 THEN_KW@7428..7432 "then"5013 DESTRUCT_FULL@7377..7383
5014 WHITESPACE@7432..7441 "\n "5014 NAME@7377..7383
5015 TRUE_EXPR@7441..74445015 IDENT@7377..7383 "target"
5016 EXPR_VAR@7441..74445016 COMMA@7383..7384 ","
5017 NAME@7441..74445017 WHITESPACE@7384..7385 " "
5018 IDENT@7441..7444 "acc"5018 PARAM@7385..7390
5019 WHITESPACE@7444..7451 "\n "5019 DESTRUCT_FULL@7385..7390
5020 ELSE_KW@7451..7455 "else"5020 NAME@7385..7390
5021 WHITESPACE@7455..7464 "\n "5021 IDENT@7385..7390 "patch"
5022 FALSE_EXPR@7464..77055022 R_PAREN@7390..7391 ")"
5023 EXPR_IF_THEN_ELSE@7464..77055023 COLONCOLON@7391..7393 "::"
5024 IF_KW@7464..7466 "if"5024 WHITESPACE@7393..7398 "\n "
5025 WHITESPACE@7466..7467 " "5025 EXPR_IF_THEN_ELSE@7398..8154
5026 EXPR_BINARY@7467..74915026 IF_KW@7398..7400 "if"
5027 LHS_EXPR@7467..74775027 WHITESPACE@7400..7401 " "
5028 EXPR_APPLY@7467..74775028 EXPR_APPLY@7401..7420
5029 EXPR_VAR@7467..74715029 EXPR_INDEX@7401..7413
5030 NAME@7467..74715030 EXPR_VAR@7401..7404
5031 IDENT@7467..7471 "keyF"5031 NAME@7401..7404
5032 ARGS_DESC@7471..74775032 IDENT@7401..7404 "std"
5033 L_PAREN@7471..7472 "("5033 DOT@7404..7405 "."
5034 ARG@7472..74765034 NAME@7405..7413
5035 EXPR_INDEX_EXPR@7472..74765035 IDENT@7405..7413 "isObject"
5036 LHS_EXPR@7472..74735036 ARGS_DESC@7413..7420
5037 EXPR_VAR@7472..74735037 L_PAREN@7413..7414 "("
5038 NAME@7472..74735038 ARG@7414..7419
5039 IDENT@7472..7473 "a"5039 EXPR_VAR@7414..7419
5040 L_BRACK@7473..7474 "["5040 NAME@7414..7419
5041 EXPR_VAR@7474..74755041 IDENT@7414..7419 "patch"
5042 NAME@7474..74755042 R_PAREN@7419..7420 ")"
5043 IDENT@7474..7475 "i"5043 WHITESPACE@7420..7421 " "
5044 R_BRACK@7475..7476 "]"5044 THEN_KW@7421..7425 "then"
5045 R_PAREN@7476..7477 ")"5045 WHITESPACE@7425..7432 "\n "
5046 WHITESPACE@7477..7478 " "5046 STMT_LOCAL@7432..7506
5047 EQ@7478..7480 "=="5047 LOCAL_KW@7432..7437 "local"
5048 WHITESPACE@7480..7481 " "5048 WHITESPACE@7437..7438 " "
5049 EXPR_APPLY@7481..74915049 BIND_DESTRUCT@7438..7505
5050 EXPR_VAR@7481..74855050 DESTRUCT_FULL@7438..7451
5051 NAME@7481..74855051 NAME@7438..7451
5052 IDENT@7481..7485 "keyF"5052 IDENT@7438..7451 "target_object"
5053 ARGS_DESC@7485..74915053 WHITESPACE@7451..7452 " "
5054 L_PAREN@7485..7486 "("5054 ASSIGN@7452..7453 "="
5055 ARG@7486..74905055 WHITESPACE@7453..7462 "\n "
5056 EXPR_INDEX_EXPR@7486..74905056 EXPR_IF_THEN_ELSE@7462..7505
5057 LHS_EXPR@7486..74875057 IF_KW@7462..7464 "if"
5058 EXPR_VAR@7486..74875058 WHITESPACE@7464..7465 " "
5059 NAME@7486..74875059 EXPR_APPLY@7465..7485
5060 IDENT@7486..7487 "b"5060 EXPR_INDEX@7465..7477
5061 L_BRACK@7487..7488 "["5061 EXPR_VAR@7465..7468
5062 EXPR_VAR@7488..74895062 NAME@7465..7468
5063 NAME@7488..74895063 IDENT@7465..7468 "std"
5064 IDENT@7488..7489 "j"5064 DOT@7468..7469 "."
5065 R_BRACK@7489..7490 "]"5065 NAME@7469..7477
5066 R_PAREN@7490..7491 ")"5066 IDENT@7469..7477 "isObject"
5067 WHITESPACE@7491..7492 " "5067 ARGS_DESC@7477..7485
5068 THEN_KW@7492..7496 "then"5068 L_PAREN@7477..7478 "("
5069 WHITESPACE@7496..7507 "\n "5069 ARG@7478..7484
5070 TRUE_EXPR@7507..75555070 EXPR_VAR@7478..7484
5071 EXPR_APPLY@7507..75555071 NAME@7478..7484
5072 EXPR_VAR@7507..75105072 IDENT@7478..7484 "target"
5073 NAME@7507..75105073 R_PAREN@7484..7485 ")"
5074 IDENT@7507..7510 "aux"5074 WHITESPACE@7485..7486 " "
5075 ARGS_DESC@7510..75555075 THEN_KW@7486..7490 "then"
5076 L_PAREN@7510..7511 "("5076 WHITESPACE@7490..7491 " "
5077 ARG@7511..75125077 TRUE_EXPR@7491..7497
5078 EXPR_VAR@7511..75125078 EXPR_VAR@7491..7497
5079 NAME@7511..75125079 NAME@7491..7497
5080 IDENT@7511..7512 "a"5080 IDENT@7491..7497 "target"
5081 COMMA@7512..7513 ","5081 WHITESPACE@7497..7498 " "
5082 WHITESPACE@7513..7514 " "5082 ELSE_KW@7498..7502 "else"
5083 ARG@7514..75155083 WHITESPACE@7502..7503 " "
5084 EXPR_VAR@7514..75155084 FALSE_EXPR@7503..7505
5085 NAME@7514..75155085 EXPR_OBJECT@7503..7505
5086 IDENT@7514..7515 "b"5086 OBJ_BODY_MEMBER_LIST@7503..7505
5087 COMMA@7515..7516 ","5087 L_BRACE@7503..7504 "{"
5088 WHITESPACE@7516..7517 " "5088 R_BRACE@7504..7505 "}"
5089 ARG@7517..75225089 SEMI@7505..7506 ";"
5090 EXPR_BINARY@7517..75225090 WHITESPACE@7506..7514 "\n\n "
5091 LHS_EXPR@7517..75185091 STMT_LOCAL@7514..7620
5092 EXPR_VAR@7517..75185092 LOCAL_KW@7514..7519 "local"
5093 NAME@7517..75185093 WHITESPACE@7519..7520 " "
5094 IDENT@7517..7518 "i"5094 BIND_DESTRUCT@7520..7619
5095 WHITESPACE@7518..7519 " "5095 DESTRUCT_FULL@7520..7533
5096 PLUS@7519..7520 "+"5096 NAME@7520..7533
5097 WHITESPACE@7520..7521 " "5097 IDENT@7520..7533 "target_fields"
5098 EXPR_NUMBER@7521..75225098 WHITESPACE@7533..7534 " "
5099 FLOAT@7521..7522 "1"5099 ASSIGN@7534..7535 "="
5100 COMMA@7522..7523 ","5100 WHITESPACE@7535..7544 "\n "
5101 WHITESPACE@7523..7524 " "5101 EXPR_IF_THEN_ELSE@7544..7619
5102 ARG@7524..75295102 IF_KW@7544..7546 "if"
5103 EXPR_BINARY@7524..75295103 WHITESPACE@7546..7547 " "
5104 LHS_EXPR@7524..75255104 EXPR_APPLY@7547..7574
5105 EXPR_VAR@7524..75255105 EXPR_INDEX@7547..7559
5106 NAME@7524..75255106 EXPR_VAR@7547..7550
5107 IDENT@7524..7525 "j"5107 NAME@7547..7550
5108 WHITESPACE@7525..7526 " "5108 IDENT@7547..7550 "std"
5109 PLUS@7526..7527 "+"5109 DOT@7550..7551 "."
5110 WHITESPACE@7527..7528 " "5110 NAME@7551..7559
5111 EXPR_NUMBER@7528..75295111 IDENT@7551..7559 "isObject"
5112 FLOAT@7528..7529 "1"5112 ARGS_DESC@7559..7574
5113 COMMA@7529..7530 ","5113 L_PAREN@7559..7560 "("
5114 WHITESPACE@7530..7531 " "5114 ARG@7560..7573
5115 ARG@7531..75435115 EXPR_VAR@7560..7573
5116 EXPR_BINARY@7531..75435116 NAME@7560..7573
5117 LHS_EXPR@7531..75345117 IDENT@7560..7573 "target_object"
5118 EXPR_VAR@7531..75345118 R_PAREN@7573..7574 ")"
5119 NAME@7531..75345119 WHITESPACE@7574..7575 " "
5120 IDENT@7531..7534 "acc"5120 THEN_KW@7575..7579 "then"
5121 WHITESPACE@7534..7535 " "5121 WHITESPACE@7579..7580 " "
5122 PLUS@7535..7536 "+"5122 TRUE_EXPR@7580..7611
5123 WHITESPACE@7536..7537 " "5123 EXPR_APPLY@7580..7611
5124 EXPR_ARRAY@7537..75435124 EXPR_INDEX@7580..7596
5125 L_BRACK@7537..7538 "["5125 EXPR_VAR@7580..7583
5126 EXPR_INDEX_EXPR@7538..75425126 NAME@7580..7583
5127 LHS_EXPR@7538..75395127 IDENT@7580..7583 "std"
5128 EXPR_VAR@7538..75395128 DOT@7583..7584 "."
5129 NAME@7538..75395129 NAME@7584..7596
5130 IDENT@7538..7539 "a"5130 IDENT@7584..7596 "objectFields"
5131 L_BRACK@7539..7540 "["5131 ARGS_DESC@7596..7611
5132 EXPR_VAR@7540..75415132 L_PAREN@7596..7597 "("
5133 NAME@7540..75415133 ARG@7597..7610
5134 IDENT@7540..7541 "i"5134 EXPR_VAR@7597..7610
5135 R_BRACK@7541..7542 "]"5135 NAME@7597..7610
5136 R_BRACK@7542..7543 "]"5136 IDENT@7597..7610 "target_object"
5137 R_PAREN@7543..7544 ")"5137 R_PAREN@7610..7611 ")"
5138 WHITESPACE@7544..7545 " "5138 WHITESPACE@7611..7612 " "
5139 TAILSTRICT_KW@7545..7555 "tailstrict"5139 ELSE_KW@7612..7616 "else"
5140 WHITESPACE@7555..7564 "\n "5140 WHITESPACE@7616..7617 " "
5141 ELSE_KW@7564..7568 "else"5141 FALSE_EXPR@7617..7619
5142 WHITESPACE@7568..7569 " "5142 EXPR_ARRAY@7617..7619
5143 FALSE_EXPR@7569..77055143 L_BRACK@7617..7618 "["
5144 EXPR_IF_THEN_ELSE@7569..77055144 R_BRACK@7618..7619 "]"
5145 IF_KW@7569..7571 "if"5145 SEMI@7619..7620 ";"
5146 WHITESPACE@7571..7572 " "5146 WHITESPACE@7620..7628 "\n\n "
5147 EXPR_BINARY@7572..75955147 STMT_LOCAL@7628..7705
5148 LHS_EXPR@7572..75825148 LOCAL_KW@7628..7633 "local"
5149 EXPR_APPLY@7572..75825149 WHITESPACE@7633..7634 " "
5150 EXPR_VAR@7572..75765150 BIND_DESTRUCT@7634..7704
5151 NAME@7572..75765151 DESTRUCT_FULL@7634..7645
5152 IDENT@7572..7576 "keyF"5152 NAME@7634..7645
5153 ARGS_DESC@7576..75825153 IDENT@7634..7645 "null_fields"
5154 L_PAREN@7576..7577 "("5154 WHITESPACE@7645..7646 " "
5155 ARG@7577..75815155 ASSIGN@7646..7647 "="
5156 EXPR_INDEX_EXPR@7577..75815156 WHITESPACE@7647..7648 " "
5157 LHS_EXPR@7577..75785157 EXPR_ARRAY_COMP@7648..7704
5158 EXPR_VAR@7577..75785158 L_BRACK@7648..7649 "["
5159 NAME@7577..75785159 EXPR_VAR@7649..7650
5160 IDENT@7577..7578 "a"5160 NAME@7649..7650
5161 L_BRACK@7578..7579 "["5161 IDENT@7649..7650 "k"
5162 EXPR_VAR@7579..75805162 WHITESPACE@7650..7651 " "
5163 NAME@7579..75805163 FOR_SPEC@7651..7683
5164 IDENT@7579..7580 "i"5164 FOR_KW@7651..7654 "for"
5165 R_BRACK@7580..7581 "]"5165 WHITESPACE@7654..7655 " "
5166 R_PAREN@7581..7582 ")"5166 NAME@7655..7656
5167 WHITESPACE@7582..7583 " "5167 IDENT@7655..7656 "k"
5168 LT@7583..7584 "<"5168 WHITESPACE@7656..7657 " "
5169 WHITESPACE@7584..7585 " "5169 IN_KW@7657..7659 "in"
5170 EXPR_APPLY@7585..75955170 WHITESPACE@7659..7660 " "
5171 EXPR_VAR@7585..75895171 EXPR_APPLY@7660..7683
5172 NAME@7585..75895172 EXPR_INDEX@7660..7676
5173 IDENT@7585..7589 "keyF"5173 EXPR_VAR@7660..7663
5174 ARGS_DESC@7589..75955174 NAME@7660..7663
5175 L_PAREN@7589..7590 "("5175 IDENT@7660..7663 "std"
5176 ARG@7590..75945176 DOT@7663..7664 "."
5177 EXPR_INDEX_EXPR@7590..75945177 NAME@7664..7676
5178 LHS_EXPR@7590..75915178 IDENT@7664..7676 "objectFields"
5179 EXPR_VAR@7590..75915179 ARGS_DESC@7676..7683
5180 NAME@7590..75915180 L_PAREN@7676..7677 "("
5181 IDENT@7590..7591 "b"5181 ARG@7677..7682
5182 L_BRACK@7591..7592 "["5182 EXPR_VAR@7677..7682
5183 EXPR_VAR@7592..75935183 NAME@7677..7682
5184 NAME@7592..75935184 IDENT@7677..7682 "patch"
5185 IDENT@7592..7593 "j"5185 R_PAREN@7682..7683 ")"
5186 R_BRACK@7593..7594 "]"5186 WHITESPACE@7683..7684 " "
5187 R_PAREN@7594..7595 ")"5187 IF_SPEC@7684..7703
5188 WHITESPACE@7595..7596 " "5188 IF_KW@7684..7686 "if"
5189 THEN_KW@7596..7600 "then"5189 WHITESPACE@7686..7687 " "
5190 WHITESPACE@7600..7611 "\n "5190 EXPR_BINARY@7687..7703
5191 TRUE_EXPR@7611..76465191 LHS_EXPR@7687..7695
5192 EXPR_APPLY@7611..76465192 EXPR_INDEX_EXPR@7687..7695
5193 EXPR_VAR@7611..76145193 LHS_EXPR@7687..7692
5194 NAME@7611..76145194 EXPR_VAR@7687..7692
5195 IDENT@7611..7614 "aux"5195 NAME@7687..7692
5196 ARGS_DESC@7614..76465196 IDENT@7687..7692 "patch"
5197 L_PAREN@7614..7615 "("5197 L_BRACK@7692..7693 "["
5198 ARG@7615..76165198 EXPR_VAR@7693..7694
5199 EXPR_VAR@7615..76165199 NAME@7693..7694
5200 NAME@7615..76165200 IDENT@7693..7694 "k"
5201 IDENT@7615..7616 "a"5201 R_BRACK@7694..7695 "]"
5202 COMMA@7616..7617 ","5202 WHITESPACE@7695..7696 " "
5203 WHITESPACE@7617..7618 " "5203 EQ@7696..7698 "=="
5204 ARG@7618..76195204 WHITESPACE@7698..7699 " "
5205 EXPR_VAR@7618..76195205 EXPR_LITERAL@7699..7703
5206 NAME@7618..76195206 NULL_KW@7699..7703 "null"
5207 IDENT@7618..7619 "b"5207 R_BRACK@7703..7704 "]"
5208 COMMA@7619..7620 ","5208 SEMI@7704..7705 ";"
5209 WHITESPACE@7620..7621 " "5209 WHITESPACE@7705..7712 "\n "
5210 ARG@7621..76265210 STMT_LOCAL@7712..7785
5211 EXPR_BINARY@7621..76265211 LOCAL_KW@7712..7717 "local"
5212 LHS_EXPR@7621..76225212 WHITESPACE@7717..7718 " "
5213 EXPR_VAR@7621..76225213 BIND_DESTRUCT@7718..7784
5214 NAME@7621..76225214 DESTRUCT_FULL@7718..7729
5215 IDENT@7621..7622 "i"5215 NAME@7718..7729
5216 WHITESPACE@7622..7623 " "5216 IDENT@7718..7729 "both_fields"
5217 PLUS@7623..7624 "+"5217 WHITESPACE@7729..7730 " "
5218 WHITESPACE@7624..7625 " "5218 ASSIGN@7730..7731 "="
5219 EXPR_NUMBER@7625..76265219 WHITESPACE@7731..7732 " "
5220 FLOAT@7625..7626 "1"5220 EXPR_APPLY@7732..7784
5221 COMMA@7626..7627 ","5221 EXPR_INDEX@7732..7744
5222 WHITESPACE@7627..7628 " "5222 EXPR_VAR@7732..7735
5223 ARG@7628..76295223 NAME@7732..7735
5224 EXPR_VAR@7628..76295224 IDENT@7732..7735 "std"
5225 NAME@7628..76295225 DOT@7735..7736 "."
5226 IDENT@7628..7629 "j"5226 NAME@7736..7744
5227 COMMA@7629..7630 ","5227 IDENT@7736..7744 "setUnion"
5228 WHITESPACE@7630..7631 " "5228 ARGS_DESC@7744..7784
5229 ARG@7631..76345229 L_PAREN@7744..7745 "("
5230 EXPR_VAR@7631..76345230 ARG@7745..7758
5231 NAME@7631..76345231 EXPR_VAR@7745..7758
5232 IDENT@7631..7634 "acc"5232 NAME@7745..7758
5233 R_PAREN@7634..7635 ")"5233 IDENT@7745..7758 "target_fields"
5234 WHITESPACE@7635..7636 " "5234 COMMA@7758..7759 ","
5235 TAILSTRICT_KW@7636..7646 "tailstrict"5235 WHITESPACE@7759..7760 " "
5236 WHITESPACE@7646..7655 "\n "5236 ARG@7760..7783
5237 ELSE_KW@7655..7659 "else"5237 EXPR_APPLY@7760..7783
5238 WHITESPACE@7659..7670 "\n "5238 EXPR_INDEX@7760..7776
5239 FALSE_EXPR@7670..77055239 EXPR_VAR@7760..7763
5240 EXPR_APPLY@7670..77055240 NAME@7760..7763
5241 EXPR_VAR@7670..76735241 IDENT@7760..7763 "std"
5242 NAME@7670..76735242 DOT@7763..7764 "."
5243 IDENT@7670..7673 "aux"5243 NAME@7764..7776
5244 ARGS_DESC@7673..77055244 IDENT@7764..7776 "objectFields"
5245 L_PAREN@7673..7674 "("5245 ARGS_DESC@7776..7783
5246 ARG@7674..76755246 L_PAREN@7776..7777 "("
5247 EXPR_VAR@7674..76755247 ARG@7777..7782
5248 NAME@7674..76755248 EXPR_VAR@7777..7782
5249 IDENT@7674..7675 "a"5249 NAME@7777..7782
5250 COMMA@7675..7676 ","5250 IDENT@7777..7782 "patch"
5251 WHITESPACE@7676..7677 " "5251 R_PAREN@7782..7783 ")"
5252 ARG@7677..76785252 R_PAREN@7783..7784 ")"
5253 EXPR_VAR@7677..76785253 SEMI@7784..7785 ";"
5254 NAME@7677..76785254 WHITESPACE@7785..7793 "\n\n "
5255 IDENT@7677..7678 "b"5255 TRUE_EXPR@7793..8133
5256 COMMA@7678..7679 ","5256 EXPR_OBJECT@7793..8133
5257 WHITESPACE@7679..7680 " "5257 OBJ_BODY_COMP@7793..8133
5258 ARG@7680..76815258 L_BRACE@7793..7794 "{"
5259 EXPR_VAR@7680..76815259 WHITESPACE@7794..7803 "\n "
5260 NAME@7680..76815260 MEMBER_FIELD_NORMAL@7803..8070
5261 IDENT@7680..7681 "i"5261 FIELD_NAME_DYNAMIC@7803..7806
5262 COMMA@7681..7682 ","5262 L_BRACK@7803..7804 "["
5263 WHITESPACE@7682..7683 " "5263 EXPR_VAR@7804..7805
5264 ARG@7683..76885264 NAME@7804..7805
5265 EXPR_BINARY@7683..76885265 IDENT@7804..7805 "k"
5266 LHS_EXPR@7683..76845266 R_BRACK@7805..7806 "]"
5267 EXPR_VAR@7683..76845267 COLON@7806..7807 ":"
5268 NAME@7683..76845268 WHITESPACE@7807..7818 "\n "
5269 IDENT@7683..7684 "j"5269 EXPR_IF_THEN_ELSE@7818..8070
5270 WHITESPACE@7684..7685 " "5270 IF_KW@7818..7820 "if"
5271 PLUS@7685..7686 "+"5271 WHITESPACE@7820..7821 " "
5272 WHITESPACE@7686..7687 " "5272 EXPR_UNARY@7821..7845
5273 EXPR_NUMBER@7687..76885273 NOT@7821..7822 "!"
5274 FLOAT@7687..7688 "1"5274 EXPR_APPLY@7822..7845
5275 COMMA@7688..7689 ","5275 EXPR_INDEX@7822..7835
5276 WHITESPACE@7689..7690 " "5276 EXPR_VAR@7822..7825
5277 ARG@7690..76935277 NAME@7822..7825
5278 EXPR_VAR@7690..76935278 IDENT@7822..7825 "std"
5279 NAME@7690..76935279 DOT@7825..7826 "."
5280 IDENT@7690..7693 "acc"5280 NAME@7826..7835
5281 R_PAREN@7693..7694 ")"5281 IDENT@7826..7835 "objectHas"
5282 WHITESPACE@7694..7695 " "5282 ARGS_DESC@7835..7845
5283 TAILSTRICT_KW@7695..7705 "tailstrict"5283 L_PAREN@7835..7836 "("
5284 SEMI@7705..7706 ";"5284 ARG@7836..7841
5285 WHITESPACE@7706..7711 "\n "5285 EXPR_VAR@7836..7841
5286 EXPR_APPLY@7711..77415286 NAME@7836..7841
5287 EXPR_VAR@7711..77145287 IDENT@7836..7841 "patch"
5288 NAME@7711..77145288 COMMA@7841..7842 ","
5289 IDENT@7711..7714 "aux"5289 WHITESPACE@7842..7843 " "
5290 ARGS_DESC@7714..77415290 ARG@7843..7844
5291 L_PAREN@7714..7715 "("5291 EXPR_VAR@7843..7844
5292 ARG@7715..77165292 NAME@7843..7844
5293 EXPR_VAR@7715..77165293 IDENT@7843..7844 "k"
5294 NAME@7715..77165294 R_PAREN@7844..7845 ")"
5295 IDENT@7715..7716 "a"5295 WHITESPACE@7845..7846 " "
5296 COMMA@7716..7717 ","5296 THEN_KW@7846..7850 "then"
5297 WHITESPACE@7717..7718 " "5297 WHITESPACE@7850..7863 "\n "
5298 ARG@7718..77195298 TRUE_EXPR@7863..7879
5299 EXPR_VAR@7718..77195299 EXPR_INDEX_EXPR@7863..7879
5300 NAME@7718..77195300 LHS_EXPR@7863..7876
5301 IDENT@7718..7719 "b"5301 EXPR_VAR@7863..7876
5302 COMMA@7719..7720 ","5302 NAME@7863..7876
5303 WHITESPACE@7720..7721 " "5303 IDENT@7863..7876 "target_object"
5304 ARG@7721..77225304 L_BRACK@7876..7877 "["
5305 EXPR_NUMBER@7721..77225305 EXPR_VAR@7877..7878
5306 FLOAT@7721..7722 "0"5306 NAME@7877..7878
5307 COMMA@7722..7723 ","5307 IDENT@7877..7878 "k"
5308 WHITESPACE@7723..7724 " "5308 R_BRACK@7878..7879 "]"
5309 ARG@7724..77255309 WHITESPACE@7879..7890 "\n "
5310 EXPR_NUMBER@7724..77255310 ELSE_KW@7890..7894 "else"
5311 FLOAT@7724..7725 "0"5311 WHITESPACE@7894..7895 " "
5312 COMMA@7725..7726 ","5312 FALSE_EXPR@7895..8070
5313 WHITESPACE@7726..7727 " "5313 EXPR_IF_THEN_ELSE@7895..8070
5314 ARG@7727..77295314 IF_KW@7895..7897 "if"
5315 EXPR_ARRAY@7727..77295315 WHITESPACE@7897..7898 " "
5316 L_BRACK@7727..7728 "["5316 EXPR_UNARY@7898..7930
5317 R_BRACK@7728..7729 "]"5317 NOT@7898..7899 "!"
5318 R_PAREN@7729..7730 ")"5318 EXPR_APPLY@7899..7930
5319 WHITESPACE@7730..7731 " "5319 EXPR_INDEX@7899..7912
5320 TAILSTRICT_KW@7731..7741 "tailstrict"5320 EXPR_VAR@7899..7902
5321 COMMA@7741..7742 ","5321 NAME@7899..7902
5322 WHITESPACE@7742..7746 "\n\n "5322 IDENT@7899..7902 "std"
5323 MEMBER_FIELD_METHOD@7746..82035323 DOT@7902..7903 "."
5324 FIELD_NAME_FIXED@7746..77535324 NAME@7903..7912
5325 NAME@7746..77535325 IDENT@7903..7912 "objectHas"
5326 IDENT@7746..7753 "setDiff"5326 ARGS_DESC@7912..7930
5327 PARAMS_DESC@7753..77685327 L_PAREN@7912..7913 "("
5328 L_PAREN@7753..7754 "("5328 ARG@7913..7926
5329 PARAM@7754..77555329 EXPR_VAR@7913..7926
5330 DESTRUCT_FULL@7754..77555330 NAME@7913..7926
5331 NAME@7754..77555331 IDENT@7913..7926 "target_object"
5332 IDENT@7754..7755 "a"5332 COMMA@7926..7927 ","
5333 COMMA@7755..7756 ","5333 WHITESPACE@7927..7928 " "
5334 WHITESPACE@7756..7757 " "5334 ARG@7928..7929
5335 PARAM@7757..77585335 EXPR_VAR@7928..7929
5336 DESTRUCT_FULL@7757..77585336 NAME@7928..7929
5337 NAME@7757..77585337 IDENT@7928..7929 "k"
5338 IDENT@7757..7758 "b"5338 R_PAREN@7929..7930 ")"
5339 COMMA@7758..7759 ","5339 WHITESPACE@7930..7931 " "
5340 WHITESPACE@7759..7760 " "5340 THEN_KW@7931..7935 "then"
5341 PARAM@7760..77675341 WHITESPACE@7935..7948 "\n "
5342 DESTRUCT_FULL@7760..77645342 TRUE_EXPR@7948..7989
5343 NAME@7760..77645343 EXPR_APPLY@7948..7989
5344 IDENT@7760..7764 "keyF"5344 EXPR_INDEX@7948..7962
5345 ASSIGN@7764..7765 "="5345 EXPR_VAR@7948..7951
5346 EXPR_VAR@7765..77675346 NAME@7948..7951
5347 NAME@7765..77675347 IDENT@7948..7951 "std"
5348 IDENT@7765..7767 "id"5348 DOT@7951..7952 "."
5349 R_PAREN@7767..7768 ")"5349 NAME@7952..7962
5350 COLONCOLON@7768..7770 "::"5350 IDENT@7952..7962 "mergePatch"
5351 WHITESPACE@7770..7775 "\n "5351 ARGS_DESC@7962..7989
5352 EXPR_LOCAL@7775..82035352 L_PAREN@7962..7963 "("
5353 LOCAL_KW@7775..7780 "local"5353 ARG@7963..7967
5354 WHITESPACE@7780..7781 " "5354 EXPR_LITERAL@7963..7967
5355 BIND_FUNCTION@7781..81675355 NULL_KW@7963..7967 "null"
5356 NAME@7781..77845356 COMMA@7967..7968 ","
5357 IDENT@7781..7784 "aux"5357 WHITESPACE@7968..7969 " "
5358 PARAMS_DESC@7784..78015358 ARG@7969..7977
5359 L_PAREN@7784..7785 "("5359 EXPR_INDEX_EXPR@7969..7977
5360 PARAM@7785..77865360 LHS_EXPR@7969..7974
5361 DESTRUCT_FULL@7785..77865361 EXPR_VAR@7969..7974
5362 NAME@7785..77865362 NAME@7969..7974
5363 IDENT@7785..7786 "a"5363 IDENT@7969..7974 "patch"
5364 COMMA@7786..7787 ","5364 L_BRACK@7974..7975 "["
5365 WHITESPACE@7787..7788 " "5365 EXPR_VAR@7975..7976
5366 PARAM@7788..77895366 NAME@7975..7976
5367 DESTRUCT_FULL@7788..77895367 IDENT@7975..7976 "k"
5368 NAME@7788..77895368 R_BRACK@7976..7977 "]"
5369 IDENT@7788..7789 "b"5369 R_PAREN@7977..7978 ")"
5370 COMMA@7789..7790 ","5370 WHITESPACE@7978..7979 " "
5371 WHITESPACE@7790..7791 " "5371 TAILSTRICT_KW@7979..7989 "tailstrict"
5372 PARAM@7791..77925372 WHITESPACE@7989..8000 "\n "
5373 DESTRUCT_FULL@7791..77925373 ELSE_KW@8000..8004 "else"
5374 NAME@7791..77925374 WHITESPACE@8004..8017 "\n "
5375 IDENT@7791..7792 "i"5375 FALSE_EXPR@8017..8070
5376 COMMA@7792..7793 ","5376 EXPR_APPLY@8017..8070
5377 WHITESPACE@7793..7794 " "5377 EXPR_INDEX@8017..8031
5378 PARAM@7794..77955378 EXPR_VAR@8017..8020
5379 DESTRUCT_FULL@7794..77955379 NAME@8017..8020
5380 NAME@7794..77955380 IDENT@8017..8020 "std"
5381 IDENT@7794..7795 "j"5381 DOT@8020..8021 "."
5382 COMMA@7795..7796 ","5382 NAME@8021..8031
5383 WHITESPACE@7796..7797 " "5383 IDENT@8021..8031 "mergePatch"
5384 PARAM@7797..78005384 ARGS_DESC@8031..8070
5385 DESTRUCT_FULL@7797..78005385 L_PAREN@8031..8032 "("
5386 NAME@7797..78005386 ARG@8032..8048
5387 IDENT@7797..7800 "acc"5387 EXPR_INDEX_EXPR@8032..8048
5388 R_PAREN@7800..7801 ")"5388 LHS_EXPR@8032..8045
5389 WHITESPACE@7801..7802 " "5389 EXPR_VAR@8032..8045
5390 ASSIGN@7802..7803 "="5390 NAME@8032..8045
5391 WHITESPACE@7803..7810 "\n "5391 IDENT@8032..8045 "target_object"
5392 EXPR_IF_THEN_ELSE@7810..81675392 L_BRACK@8045..8046 "["
5393 IF_KW@7810..7812 "if"5393 EXPR_VAR@8046..8047
5394 WHITESPACE@7812..7813 " "5394 NAME@8046..8047
5395 EXPR_BINARY@7813..78315395 IDENT@8046..8047 "k"
5396 LHS_EXPR@7813..78145396 R_BRACK@8047..8048 "]"
5397 EXPR_VAR@7813..78145397 COMMA@8048..8049 ","
5398 NAME@7813..78145398 WHITESPACE@8049..8050 " "
5399 IDENT@7813..7814 "i"5399 ARG@8050..8058
5400 WHITESPACE@7814..7815 " "5400 EXPR_INDEX_EXPR@8050..8058
5401 GE@7815..7817 ">="5401 LHS_EXPR@8050..8055
5402 WHITESPACE@7817..7818 " "5402 EXPR_VAR@8050..8055
5403 EXPR_APPLY@7818..78315403 NAME@8050..8055
5404 EXPR_INDEX@7818..78285404 IDENT@8050..8055 "patch"
5405 EXPR_VAR@7818..78215405 L_BRACK@8055..8056 "["
5406 NAME@7818..78215406 EXPR_VAR@8056..8057
5407 IDENT@7818..7821 "std"5407 NAME@8056..8057
5408 DOT@7821..7822 "."5408 IDENT@8056..8057 "k"
5409 NAME@7822..78285409 R_BRACK@8057..8058 "]"
5410 IDENT@7822..7828 "length"5410 R_PAREN@8058..8059 ")"
5411 ARGS_DESC@7828..78315411 WHITESPACE@8059..8060 " "
5412 L_PAREN@7828..7829 "("5412 TAILSTRICT_KW@8060..8070 "tailstrict"
5413 ARG@7829..78305413 WHITESPACE@8070..8079 "\n "
5414 EXPR_VAR@7829..78305414 FOR_SPEC@8079..8125
5415 NAME@7829..78305415 FOR_KW@8079..8082 "for"
5416 IDENT@7829..7830 "a"5416 WHITESPACE@8082..8083 " "
5417 R_PAREN@7830..7831 ")"5417 NAME@8083..8084
5418 WHITESPACE@7831..7832 " "5418 IDENT@8083..8084 "k"
5419 THEN_KW@7832..7836 "then"5419 WHITESPACE@8084..8085 " "
5420 WHITESPACE@7836..7845 "\n "5420 IN_KW@8085..8087 "in"
5421 TRUE_EXPR@7845..78485421 WHITESPACE@8087..8088 " "
5422 EXPR_VAR@7845..78485422 EXPR_APPLY@8088..8125
5423 NAME@7845..78485423 EXPR_INDEX@8088..8099
5424 IDENT@7845..7848 "acc"5424 EXPR_VAR@8088..8091
5425 WHITESPACE@7848..7855 "\n "5425 NAME@8088..8091
5426 ELSE_KW@7855..7859 "else"5426 IDENT@8088..8091 "std"
5427 WHITESPACE@7859..7860 " "5427 DOT@8091..8092 "."
5428 FALSE_EXPR@7860..81675428 NAME@8092..8099
5429 EXPR_IF_THEN_ELSE@7860..81675429 IDENT@8092..8099 "setDiff"
5430 IF_KW@7860..7862 "if"5430 ARGS_DESC@8099..8125
5431 WHITESPACE@7862..7863 " "5431 L_PAREN@8099..8100 "("
5432 EXPR_BINARY@7863..78815432 ARG@8100..8111
5433 LHS_EXPR@7863..78645433 EXPR_VAR@8100..8111
5434 EXPR_VAR@7863..78645434 NAME@8100..8111
5435 NAME@7863..78645435 IDENT@8100..8111 "both_fields"
5436 IDENT@7863..7864 "j"5436 COMMA@8111..8112 ","
5437 WHITESPACE@7864..7865 " "5437 WHITESPACE@8112..8113 " "
5438 GE@7865..7867 ">="5438 ARG@8113..8124
5439 WHITESPACE@7867..7868 " "5439 EXPR_VAR@8113..8124
5440 EXPR_APPLY@7868..78815440 NAME@8113..8124
5441 EXPR_INDEX@7868..78785441 IDENT@8113..8124 "null_fields"
5442 EXPR_VAR@7868..78715442 R_PAREN@8124..8125 ")"
5443 NAME@7868..78715443 WHITESPACE@8125..8132 "\n "
5444 IDENT@7868..7871 "std"5444 R_BRACE@8132..8133 "}"
5445 DOT@7871..7872 "."5445 WHITESPACE@8133..8138 "\n "
5446 NAME@7872..78785446 ELSE_KW@8138..8142 "else"
5447 IDENT@7872..7878 "length"5447 WHITESPACE@8142..8149 "\n "
5448 ARGS_DESC@7878..78815448 FALSE_EXPR@8149..8154
5449 L_PAREN@7878..7879 "("5449 EXPR_VAR@8149..8154
5450 ARG@7879..78805450 NAME@8149..8154
5451 EXPR_VAR@7879..78805451 IDENT@8149..8154 "patch"
5452 NAME@7879..78805452 COMMA@8154..8155 ","
5453 IDENT@7879..7880 "b"5453 WHITESPACE@8155..8159 "\n\n "
5454 R_PAREN@7880..7881 ")"5454 MEMBER_FIELD_METHOD@8159..8265
5455 WHITESPACE@7881..7882 " "5455 FIELD_NAME_FIXED@8159..8162
5456 THEN_KW@7882..7886 "then"5456 NAME@8159..8162
5457 WHITESPACE@7886..7895 "\n "5457 IDENT@8159..8162 "get"
5458 TRUE_EXPR@7895..79065458 PARAMS_DESC@8162..8199
5459 EXPR_BINARY@7895..79065459 L_PAREN@8162..8163 "("
5460 LHS_EXPR@7895..78985460 PARAM@8163..8164
5461 EXPR_VAR@7895..78985461 DESTRUCT_FULL@8163..8164
5462 NAME@7895..78985462 NAME@8163..8164
5463 IDENT@7895..7898 "acc"5463 IDENT@8163..8164 "o"
5464 WHITESPACE@7898..7899 " "5464 COMMA@8164..8165 ","
5465 PLUS@7899..7900 "+"5465 WHITESPACE@8165..8166 " "
5466 WHITESPACE@7900..7901 " "5466 PARAM@8166..8167
5467 EXPR_SLICE@7901..79065467 DESTRUCT_FULL@8166..8167
5468 EXPR_VAR@7901..79025468 NAME@8166..8167
5469 NAME@7901..79025469 IDENT@8166..8167 "f"
5470 IDENT@7901..7902 "a"5470 COMMA@8167..8168 ","
5471 SLICE_DESC@7902..79065471 WHITESPACE@8168..8169 " "
5472 L_BRACK@7902..7903 "["5472 PARAM@8169..8181
5473 EXPR_VAR@7903..79045473 DESTRUCT_FULL@8169..8176
5474 NAME@7903..79045474 NAME@8169..8176
5475 IDENT@7903..7904 "i"5475 IDENT@8169..8176 "default"
5476 COLON@7904..7905 ":"5476 ASSIGN@8176..8177 "="
5477 R_BRACK@7905..7906 "]"5477 EXPR_LITERAL@8177..8181
5478 WHITESPACE@7906..7913 "\n "5478 NULL_KW@8177..8181 "null"
5479 ELSE_KW@7913..7917 "else"5479 COMMA@8181..8182 ","
5480 WHITESPACE@7917..7926 "\n "5480 WHITESPACE@8182..8183 " "
5481 FALSE_EXPR@7926..81675481 PARAM@8183..8198
5482 EXPR_IF_THEN_ELSE@7926..81675482 DESTRUCT_FULL@8183..8193
5483 IF_KW@7926..7928 "if"5483 NAME@8183..8193
5484 WHITESPACE@7928..7929 " "5484 IDENT@8183..8193 "inc_hidden"
5485 EXPR_BINARY@7929..79535485 ASSIGN@8193..8194 "="
5486 LHS_EXPR@7929..79395486 EXPR_LITERAL@8194..8198
5487 EXPR_APPLY@7929..79395487 TRUE_KW@8194..8198 "true"
5488 EXPR_VAR@7929..79335488 R_PAREN@8198..8199 ")"
5489 NAME@7929..79335489 COLONCOLON@8199..8201 "::"
5490 IDENT@7929..7933 "keyF"5490 WHITESPACE@8201..8206 "\n "
5491 ARGS_DESC@7933..79395491 EXPR_IF_THEN_ELSE@8206..8265
5492 L_PAREN@7933..7934 "("5492 IF_KW@8206..8208 "if"
5493 ARG@7934..79385493 WHITESPACE@8208..8209 " "
5494 EXPR_INDEX_EXPR@7934..79385494 EXPR_APPLY@8209..8242
5495 LHS_EXPR@7934..79355495 EXPR_INDEX@8209..8224
5496 EXPR_VAR@7934..79355496 EXPR_VAR@8209..8212
5497 NAME@7934..79355497 NAME@8209..8212
5498 IDENT@7934..7935 "a"5498 IDENT@8209..8212 "std"
5499 L_BRACK@7935..7936 "["5499 DOT@8212..8213 "."
5500 EXPR_VAR@7936..79375500 NAME@8213..8224
5501 NAME@7936..79375501 IDENT@8213..8224 "objectHasEx"
5502 IDENT@7936..7937 "i"5502 ARGS_DESC@8224..8242
5503 R_BRACK@7937..7938 "]"5503 L_PAREN@8224..8225 "("
5504 R_PAREN@7938..7939 ")"5504 ARG@8225..8226
5505 WHITESPACE@7939..7940 " "5505 EXPR_VAR@8225..8226
5506 EQ@7940..7942 "=="5506 NAME@8225..8226
5507 WHITESPACE@7942..7943 " "5507 IDENT@8225..8226 "o"
5508 EXPR_APPLY@7943..79535508 COMMA@8226..8227 ","
5509 EXPR_VAR@7943..79475509 WHITESPACE@8227..8228 " "
5510 NAME@7943..79475510 ARG@8228..8229
5511 IDENT@7943..7947 "keyF"5511 EXPR_VAR@8228..8229
5512 ARGS_DESC@7947..79535512 NAME@8228..8229
5513 L_PAREN@7947..7948 "("5513 IDENT@8228..8229 "f"
5514 ARG@7948..79525514 COMMA@8229..8230 ","
5515 EXPR_INDEX_EXPR@7948..79525515 WHITESPACE@8230..8231 " "
5516 LHS_EXPR@7948..79495516 ARG@8231..8241
5517 EXPR_VAR@7948..79495517 EXPR_VAR@8231..8241
5518 NAME@7948..79495518 NAME@8231..8241
5519 IDENT@7948..7949 "b"5519 IDENT@8231..8241 "inc_hidden"
5520 L_BRACK@7949..7950 "["5520 R_PAREN@8241..8242 ")"
5521 EXPR_VAR@7950..7951
5522 NAME@7950..7951
5523 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..8008
5530 EXPR_APPLY@7969..8008
5531 EXPR_VAR@7969..7972
5532 NAME@7969..7972
5533 IDENT@7969..7972 "aux"
5534 ARGS_DESC@7972..8008
5535 L_PAREN@7972..7973 "("
5536 ARG@7973..7974
5537 EXPR_VAR@7973..7974
5538 NAME@7973..7974
5539 IDENT@7973..7974 "a"
5540 COMMA@7974..7975 ","
5541 WHITESPACE@7975..7976 " "
5542 ARG@7976..7977
5543 EXPR_VAR@7976..7977
5544 NAME@7976..7977
5545 IDENT@7976..7977 "b"
5546 COMMA@7977..7978 ","
5547 WHITESPACE@7978..7979 " "
5548 ARG@7979..7984
5549 EXPR_BINARY@7979..7984
5550 LHS_EXPR@7979..7980
5551 EXPR_VAR@7979..7980
5552 NAME@7979..7980
5553 IDENT@7979..7980 "i"
5554 WHITESPACE@7980..7981 " "
5555 PLUS@7981..7982 "+"
5556 WHITESPACE@7982..7983 " "
5557 EXPR_NUMBER@7983..7984
5558 FLOAT@7983..7984 "1"
5559 COMMA@7984..7985 ","
5560 WHITESPACE@7985..7986 " "
5561 ARG@7986..7991
5562 EXPR_BINARY@7986..7991
5563 LHS_EXPR@7986..7987
5564 EXPR_VAR@7986..7987
5565 NAME@7986..7987
5566 IDENT@7986..7987 "j"
5567 WHITESPACE@7987..7988 " "
5568 PLUS@7988..7989 "+"
5569 WHITESPACE@7989..7990 " "
5570 EXPR_NUMBER@7990..7991
5571 FLOAT@7990..7991 "1"
5572 COMMA@7991..7992 ","
5573 WHITESPACE@7992..7993 " "
5574 ARG@7993..7996
5575 EXPR_VAR@7993..7996
5576 NAME@7993..7996
5577 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..8167
5585 EXPR_IF_THEN_ELSE@8022..8167
5586 IF_KW@8022..8024 "if"
5587 WHITESPACE@8024..8025 " "
5588 EXPR_BINARY@8025..8048
5589 LHS_EXPR@8025..8035
5590 EXPR_APPLY@8025..8035
5591 EXPR_VAR@8025..8029
5592 NAME@8025..8029
5593 IDENT@8025..8029 "keyF"
5594 ARGS_DESC@8029..8035
5595 L_PAREN@8029..8030 "("
5596 ARG@8030..8034
5597 EXPR_INDEX_EXPR@8030..8034
5598 LHS_EXPR@8030..8031
5599 EXPR_VAR@8030..8031
5600 NAME@8030..8031
5601 IDENT@8030..8031 "a"
5602 L_BRACK@8031..8032 "["
5603 EXPR_VAR@8032..8033
5604 NAME@8032..8033
5605 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..8048
5612 EXPR_VAR@8038..8042
5613 NAME@8038..8042
5614 IDENT@8038..8042 "keyF"
5615 ARGS_DESC@8042..8048
5616 L_PAREN@8042..8043 "("
5617 ARG@8043..8047
5618 EXPR_INDEX_EXPR@8043..8047
5619 LHS_EXPR@8043..8044
5620 EXPR_VAR@8043..8044
5621 NAME@8043..8044
5622 IDENT@8043..8044 "b"
5623 L_BRACK@8044..8045 "["
5624 EXPR_VAR@8045..8046
5625 NAME@8045..8046
5626 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..8108
5633 EXPR_APPLY@8064..8108
5634 EXPR_VAR@8064..8067
5635 NAME@8064..8067
5636 IDENT@8064..8067 "aux"
5637 ARGS_DESC@8067..8108
5638 L_PAREN@8067..8068 "("
5639 ARG@8068..8069
5640 EXPR_VAR@8068..8069
5641 NAME@8068..8069
5642 IDENT@8068..8069 "a"
5643 COMMA@8069..8070 ","
5644 WHITESPACE@8070..8071 " "
5645 ARG@8071..8072
5646 EXPR_VAR@8071..8072
5647 NAME@8071..8072
5648 IDENT@8071..8072 "b"
5649 COMMA@8072..8073 ","
5650 WHITESPACE@8073..8074 " "
5651 ARG@8074..8079
5652 EXPR_BINARY@8074..8079
5653 LHS_EXPR@8074..8075
5654 EXPR_VAR@8074..8075
5655 NAME@8074..8075
5656 IDENT@8074..8075 "i"
5657 WHITESPACE@8075..8076 " "
5658 PLUS@8076..8077 "+"
5659 WHITESPACE@8077..8078 " "
5660 EXPR_NUMBER@8078..8079
5661 FLOAT@8078..8079 "1"
5662 COMMA@8079..8080 ","
5663 WHITESPACE@8080..8081 " "
5664 ARG@8081..8082
5665 EXPR_VAR@8081..8082
5666 NAME@8081..8082
5667 IDENT@8081..8082 "j"
5668 COMMA@8082..8083 ","
5669 WHITESPACE@8083..8084 " "
5670 ARG@8084..8096
5671 EXPR_BINARY@8084..8096
5672 LHS_EXPR@8084..8087
5673 EXPR_VAR@8084..8087
5674 NAME@8084..8087
5675 IDENT@8084..8087 "acc"
5676 WHITESPACE@8087..8088 " "
5677 PLUS@8088..8089 "+"
5678 WHITESPACE@8089..8090 " "
5679 EXPR_ARRAY@8090..8096
5680 L_BRACK@8090..8091 "["
5681 EXPR_INDEX_EXPR@8091..8095
5682 LHS_EXPR@8091..8092
5683 EXPR_VAR@8091..8092
5684 NAME@8091..8092
5685 IDENT@8091..8092 "a"
5686 L_BRACK@8092..8093 "["
5687 EXPR_VAR@8093..8094
5688 NAME@8093..8094
5689 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..8167
5699 EXPR_APPLY@8132..8167
5700 EXPR_VAR@8132..8135
5701 NAME@8132..8135
5702 IDENT@8132..8135 "aux"
5703 ARGS_DESC@8135..8167
5704 L_PAREN@8135..8136 "("
5705 ARG@8136..8137
5706 EXPR_VAR@8136..8137
5707 NAME@8136..8137
5708 IDENT@8136..8137 "a"
5709 COMMA@8137..8138 ","
5710 WHITESPACE@8138..8139 " "
5711 ARG@8139..8140
5712 EXPR_VAR@8139..8140
5713 NAME@8139..8140
5714 IDENT@8139..8140 "b"
5715 COMMA@8140..8141 ","
5716 WHITESPACE@8141..8142 " "
5717 ARG@8142..8143
5718 EXPR_VAR@8142..8143
5719 NAME@8142..8143
5720 IDENT@8142..8143 "i"
5721 COMMA@8143..8144 ","
5722 WHITESPACE@8144..8145 " "
5723 ARG@8145..8150
5724 EXPR_BINARY@8145..8150
5725 LHS_EXPR@8145..8146
5726 EXPR_VAR@8145..8146
5727 NAME@8145..8146
5728 IDENT@8145..8146 "j"
5729 WHITESPACE@8146..8147 " "
5730 PLUS@8147..8148 "+"
5731 WHITESPACE@8148..8149 " "
5732 EXPR_NUMBER@8149..8150
5733 FLOAT@8149..8150 "1"
5734 COMMA@8150..8151 ","
5735 WHITESPACE@8151..8152 " "
5736 ARG@8152..8155
5737 EXPR_VAR@8152..8155
5738 NAME@8152..8155
5739 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..8203
5746 EXPR_VAR@8173..8176
5747 NAME@8173..8176
5748 IDENT@8173..8176 "aux"
5749 ARGS_DESC@8176..8203
5750 L_PAREN@8176..8177 "("
5751 ARG@8177..8178
5752 EXPR_VAR@8177..8178
5753 NAME@8177..8178
5754 IDENT@8177..8178 "a"
5755 COMMA@8178..8179 ","
5756 WHITESPACE@8179..8180 " "
5757 ARG@8180..8181
5758 EXPR_VAR@8180..8181
5759 NAME@8180..8181
5760 IDENT@8180..8181 "b"
5761 COMMA@8181..8182 ","
5762 WHITESPACE@8182..8183 " "
5763 ARG@8183..8184
5764 EXPR_NUMBER@8183..8184
5765 FLOAT@8183..8184 "0"
5766 COMMA@8184..8185 ","
5767 WHITESPACE@8185..8186 " "
5768 ARG@8186..8187
5769 EXPR_NUMBER@8186..8187
5770 FLOAT@8186..8187 "0"
5771 COMMA@8187..8188 ","
5772 WHITESPACE@8188..8189 " "
5773 ARG@8189..8191
5774 EXPR_ARRAY@8189..8191
5775 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..8996
5783 FIELD_NAME_FIXED@8208..8218
5784 NAME@8208..8218
5785 IDENT@8208..8218 "mergePatch"
5786 PARAMS_DESC@8218..8233
5787 L_PAREN@8218..8219 "("
5788 PARAM@8219..8225
5789 DESTRUCT_FULL@8219..8225
5790 NAME@8219..8225
5791 IDENT@8219..8225 "target"
5792 COMMA@8225..8226 ","
5793 WHITESPACE@8226..8227 " "
5794 PARAM@8227..8232
5795 DESTRUCT_FULL@8227..8232
5796 NAME@8227..8232
5797 IDENT@8227..8232 "patch"
5798 R_PAREN@8232..8233 ")"
5799 COLONCOLON@8233..8235 "::"
5800 WHITESPACE@8235..8240 "\n "
5801 EXPR_IF_THEN_ELSE@8240..8996
5802 IF_KW@8240..8242 "if"
5803 WHITESPACE@8242..8243 " "5521 WHITESPACE@8242..8243 " "
5804 EXPR_APPLY@8243..82625522 THEN_KW@8243..8247 "then"
5805 EXPR_INDEX@8243..82555523 WHITESPACE@8247..8248 " "
5806 EXPR_VAR@8243..82465524 TRUE_EXPR@8248..8252
5807 NAME@8243..82465525 EXPR_INDEX_EXPR@8248..8252
5808 IDENT@8243..8246 "std"5526 LHS_EXPR@8248..8249
5809 DOT@8246..8247 "."5527 EXPR_VAR@8248..8249
5810 NAME@8247..82555528 NAME@8248..8249
5811 IDENT@8247..8255 "isObject"5529 IDENT@8248..8249 "o"
5812 ARGS_DESC@8255..82625530 L_BRACK@8249..8250 "["
5813 L_PAREN@8255..8256 "("5531 EXPR_VAR@8250..8251
5814 ARG@8256..82615532 NAME@8250..8251
5815 EXPR_VAR@8256..82615533 IDENT@8250..8251 "f"
5816 NAME@8256..82615534 R_BRACK@8251..8252 "]"
5817 IDENT@8256..8261 "patch"5535 WHITESPACE@8252..8253 " "
5818 R_PAREN@8261..8262 ")"5536 ELSE_KW@8253..8257 "else"
5819 WHITESPACE@8262..8263 " "5537 WHITESPACE@8257..8258 " "
5820 THEN_KW@8263..8267 "then"5538 FALSE_EXPR@8258..8265
5821 WHITESPACE@8267..8274 "\n "5539 EXPR_VAR@8258..8265
5822 TRUE_EXPR@8274..89755540 NAME@8258..8265
5823 EXPR_LOCAL@8274..89755541 IDENT@8258..8265 "default"
5824 LOCAL_KW@8274..8279 "local"5542 COMMA@8265..8266 ","
5825 WHITESPACE@8279..8280 " "5543 WHITESPACE@8266..8270 "\n\n "
5826 BIND_DESTRUCT@8280..83475544 MEMBER_FIELD_METHOD@8270..8320
5827 DESTRUCT_FULL@8280..82935545 FIELD_NAME_FIXED@8270..8282
5828 NAME@8280..82935546 NAME@8270..8282
5829 IDENT@8280..8293 "target_object"5547 IDENT@8270..8282 "objectFields"
5830 WHITESPACE@8293..8294 " "5548 PARAMS_DESC@8282..8285
5831 ASSIGN@8294..8295 "="5549 L_PAREN@8282..8283 "("
5832 WHITESPACE@8295..8304 "\n "5550 PARAM@8283..8284
5833 EXPR_IF_THEN_ELSE@8304..83475551 DESTRUCT_FULL@8283..8284
5834 IF_KW@8304..8306 "if"5552 NAME@8283..8284
5835 WHITESPACE@8306..8307 " "5553 IDENT@8283..8284 "o"
5836 EXPR_APPLY@8307..83275554 R_PAREN@8284..8285 ")"
5837 EXPR_INDEX@8307..83195555 COLONCOLON@8285..8287 "::"
5838 EXPR_VAR@8307..83105556 WHITESPACE@8287..8292 "\n "
5839 NAME@8307..83105557 EXPR_APPLY@8292..8320
5840 IDENT@8307..8310 "std"5558 EXPR_INDEX@8292..8310
5841 DOT@8310..8311 "."5559 EXPR_VAR@8292..8295
5842 NAME@8311..83195560 NAME@8292..8295
5843 IDENT@8311..8319 "isObject"5561 IDENT@8292..8295 "std"
5844 ARGS_DESC@8319..83275562 DOT@8295..8296 "."
5845 L_PAREN@8319..8320 "("5563 NAME@8296..8310
5846 ARG@8320..83265564 IDENT@8296..8310 "objectFieldsEx"
5847 EXPR_VAR@8320..83265565 ARGS_DESC@8310..8320
5848 NAME@8320..83265566 L_PAREN@8310..8311 "("
5849 IDENT@8320..8326 "target"5567 ARG@8311..8312
5850 R_PAREN@8326..8327 ")"5568 EXPR_VAR@8311..8312
5851 WHITESPACE@8327..8328 " "5569 NAME@8311..8312
5852 THEN_KW@8328..8332 "then"5570 IDENT@8311..8312 "o"
5853 WHITESPACE@8332..8333 " "5571 COMMA@8312..8313 ","
5854 TRUE_EXPR@8333..83395572 WHITESPACE@8313..8314 " "
5855 EXPR_VAR@8333..83395573 ARG@8314..8319
5856 NAME@8333..83395574 EXPR_LITERAL@8314..8319
5857 IDENT@8333..8339 "target"5575 FALSE_KW@8314..8319 "false"
5858 WHITESPACE@8339..8340 " "5576 R_PAREN@8319..8320 ")"
5859 ELSE_KW@8340..8344 "else"5577 COMMA@8320..8321 ","
5860 WHITESPACE@8344..8345 " "5578 WHITESPACE@8321..8325 "\n\n "
5861 FALSE_EXPR@8345..83475579 MEMBER_FIELD_METHOD@8325..8377
5862 EXPR_OBJECT@8345..83475580 FIELD_NAME_FIXED@8325..8340
5863 OBJ_BODY_MEMBER_LIST@8345..83475581 NAME@8325..8340
5864 L_BRACE@8345..8346 "{"5582 IDENT@8325..8340 "objectFieldsAll"
5865 R_BRACE@8346..8347 "}"5583 PARAMS_DESC@8340..8343
5866 SEMI@8347..8348 ";"5584 L_PAREN@8340..8341 "("
5867 WHITESPACE@8348..8356 "\n\n "5585 PARAM@8341..8342
5868 EXPR_LOCAL@8356..89755586 DESTRUCT_FULL@8341..8342
5869 LOCAL_KW@8356..8361 "local"5587 NAME@8341..8342
5870 WHITESPACE@8361..8362 " "5588 IDENT@8341..8342 "o"
5871 BIND_DESTRUCT@8362..84615589 R_PAREN@8342..8343 ")"
5872 DESTRUCT_FULL@8362..83755590 COLONCOLON@8343..8345 "::"
5873 NAME@8362..83755591 WHITESPACE@8345..8350 "\n "
5874 IDENT@8362..8375 "target_fields"5592 EXPR_APPLY@8350..8377
5875 WHITESPACE@8375..8376 " "5593 EXPR_INDEX@8350..8368
5876 ASSIGN@8376..8377 "="5594 EXPR_VAR@8350..8353
5877 WHITESPACE@8377..8386 "\n "5595 NAME@8350..8353
5878 EXPR_IF_THEN_ELSE@8386..84615596 IDENT@8350..8353 "std"
5879 IF_KW@8386..8388 "if"5597 DOT@8353..8354 "."
5880 WHITESPACE@8388..8389 " "5598 NAME@8354..8368
5881 EXPR_APPLY@8389..84165599 IDENT@8354..8368 "objectFieldsEx"
5882 EXPR_INDEX@8389..84015600 ARGS_DESC@8368..8377
5883 EXPR_VAR@8389..83925601 L_PAREN@8368..8369 "("
5884 NAME@8389..83925602 ARG@8369..8370
5885 IDENT@8389..8392 "std"5603 EXPR_VAR@8369..8370
5886 DOT@8392..8393 "."5604 NAME@8369..8370
5887 NAME@8393..84015605 IDENT@8369..8370 "o"
5888 IDENT@8393..8401 "isObject"5606 COMMA@8370..8371 ","
5889 ARGS_DESC@8401..84165607 WHITESPACE@8371..8372 " "
5890 L_PAREN@8401..8402 "("5608 ARG@8372..8376
5891 ARG@8402..84155609 EXPR_LITERAL@8372..8376
5892 EXPR_VAR@8402..84155610 TRUE_KW@8372..8376 "true"
5893 NAME@8402..84155611 R_PAREN@8376..8377 ")"
5894 IDENT@8402..8415 "target_object"5612 COMMA@8377..8378 ","
5895 R_PAREN@8415..8416 ")"5613 WHITESPACE@8378..8382 "\n\n "
5896 WHITESPACE@8416..8417 " "5614 MEMBER_FIELD_METHOD@8382..8432
5897 THEN_KW@8417..8421 "then"5615 FIELD_NAME_FIXED@8382..8391
5898 WHITESPACE@8421..8422 " "5616 NAME@8382..8391
5899 TRUE_EXPR@8422..84535617 IDENT@8382..8391 "objectHas"
5900 EXPR_APPLY@8422..84535618 PARAMS_DESC@8391..8397
5901 EXPR_INDEX@8422..84385619 L_PAREN@8391..8392 "("
5902 EXPR_VAR@8422..84255620 PARAM@8392..8393
5903 NAME@8422..84255621 DESTRUCT_FULL@8392..8393
5904 IDENT@8422..8425 "std"5622 NAME@8392..8393
5905 DOT@8425..8426 "."5623 IDENT@8392..8393 "o"
5906 NAME@8426..84385624 COMMA@8393..8394 ","
5907 IDENT@8426..8438 "objectFields"5625 WHITESPACE@8394..8395 " "
5908 ARGS_DESC@8438..84535626 PARAM@8395..8396
5909 L_PAREN@8438..8439 "("5627 DESTRUCT_FULL@8395..8396
5910 ARG@8439..84525628 NAME@8395..8396
5911 EXPR_VAR@8439..84525629 IDENT@8395..8396 "f"
5912 NAME@8439..84525630 R_PAREN@8396..8397 ")"
5913 IDENT@8439..8452 "target_object"5631 COLONCOLON@8397..8399 "::"
5914 R_PAREN@8452..8453 ")"5632 WHITESPACE@8399..8404 "\n "
5915 WHITESPACE@8453..8454 " "5633 EXPR_APPLY@8404..8432
5916 ELSE_KW@8454..8458 "else"5634 EXPR_INDEX@8404..8419
5917 WHITESPACE@8458..8459 " "5635 EXPR_VAR@8404..8407
5918 FALSE_EXPR@8459..84615636 NAME@8404..8407
5919 EXPR_ARRAY@8459..84615637 IDENT@8404..8407 "std"
5920 L_BRACK@8459..8460 "["5638 DOT@8407..8408 "."
5921 R_BRACK@8460..8461 "]"5639 NAME@8408..8419
5922 SEMI@8461..8462 ";"5640 IDENT@8408..8419 "objectHasEx"
5923 WHITESPACE@8462..8470 "\n\n "5641 ARGS_DESC@8419..8432
5924 EXPR_LOCAL@8470..89755642 L_PAREN@8419..8420 "("
5925 LOCAL_KW@8470..8475 "local"5643 ARG@8420..8421
5926 WHITESPACE@8475..8476 " "5644 EXPR_VAR@8420..8421
5927 BIND_DESTRUCT@8476..85465645 NAME@8420..8421
5928 DESTRUCT_FULL@8476..84875646 IDENT@8420..8421 "o"
5929 NAME@8476..84875647 COMMA@8421..8422 ","
5930 IDENT@8476..8487 "null_fields"5648 WHITESPACE@8422..8423 " "
5931 WHITESPACE@8487..8488 " "5649 ARG@8423..8424
5932 ASSIGN@8488..8489 "="5650 EXPR_VAR@8423..8424
5933 WHITESPACE@8489..8490 " "5651 NAME@8423..8424
5934 EXPR_ARRAY_COMP@8490..85465652 IDENT@8423..8424 "f"
5935 L_BRACK@8490..8491 "["5653 COMMA@8424..8425 ","
5936 EXPR_VAR@8491..84925654 WHITESPACE@8425..8426 " "
5937 NAME@8491..84925655 ARG@8426..8431
5938 IDENT@8491..8492 "k"5656 EXPR_LITERAL@8426..8431
5939 WHITESPACE@8492..8493 " "5657 FALSE_KW@8426..8431 "false"
5940 FOR_SPEC@8493..85255658 R_PAREN@8431..8432 ")"
5941 FOR_KW@8493..8496 "for"5659 COMMA@8432..8433 ","
5942 WHITESPACE@8496..8497 " "5660 WHITESPACE@8433..8437 "\n\n "
5943 NAME@8497..84985661 MEMBER_FIELD_METHOD@8437..8489
5944 IDENT@8497..8498 "k"5662 FIELD_NAME_FIXED@8437..8449
5945 WHITESPACE@8498..8499 " "5663 NAME@8437..8449
5946 IN_KW@8499..8501 "in"5664 IDENT@8437..8449 "objectHasAll"
5947 WHITESPACE@8501..8502 " "5665 PARAMS_DESC@8449..8455
5948 EXPR_APPLY@8502..85255666 L_PAREN@8449..8450 "("
5949 EXPR_INDEX@8502..85185667 PARAM@8450..8451
5950 EXPR_VAR@8502..85055668 DESTRUCT_FULL@8450..8451
5951 NAME@8502..85055669 NAME@8450..8451
5952 IDENT@8502..8505 "std"5670 IDENT@8450..8451 "o"
5953 DOT@8505..8506 "."5671 COMMA@8451..8452 ","
5954 NAME@8506..85185672 WHITESPACE@8452..8453 " "
5955 IDENT@8506..8518 "objectFields"5673 PARAM@8453..8454
5956 ARGS_DESC@8518..85255674 DESTRUCT_FULL@8453..8454
5957 L_PAREN@8518..8519 "("5675 NAME@8453..8454
5958 ARG@8519..85245676 IDENT@8453..8454 "f"
5959 EXPR_VAR@8519..85245677 R_PAREN@8454..8455 ")"
5960 NAME@8519..85245678 COLONCOLON@8455..8457 "::"
5961 IDENT@8519..8524 "patch"5679 WHITESPACE@8457..8462 "\n "
5962 R_PAREN@8524..8525 ")"5680 EXPR_APPLY@8462..8489
5963 WHITESPACE@8525..8526 " "5681 EXPR_INDEX@8462..8477
5964 IF_SPEC@8526..85455682 EXPR_VAR@8462..8465
5965 IF_KW@8526..8528 "if"5683 NAME@8462..8465
5966 WHITESPACE@8528..8529 " "5684 IDENT@8462..8465 "std"
5967 EXPR_BINARY@8529..85455685 DOT@8465..8466 "."
5968 LHS_EXPR@8529..85375686 NAME@8466..8477
5969 EXPR_INDEX_EXPR@8529..85375687 IDENT@8466..8477 "objectHasEx"
5970 LHS_EXPR@8529..85345688 ARGS_DESC@8477..8489
5971 EXPR_VAR@8529..85345689 L_PAREN@8477..8478 "("
5972 NAME@8529..85345690 ARG@8478..8479
5973 IDENT@8529..8534 "patch"5691 EXPR_VAR@8478..8479
5974 L_BRACK@8534..8535 "["5692 NAME@8478..8479
5975 EXPR_VAR@8535..85365693 IDENT@8478..8479 "o"
5976 NAME@8535..85365694 COMMA@8479..8480 ","
5977 IDENT@8535..8536 "k"5695 WHITESPACE@8480..8481 " "
5978 R_BRACK@8536..8537 "]"5696 ARG@8481..8482
5979 WHITESPACE@8537..8538 " "5697 EXPR_VAR@8481..8482
5980 EQ@8538..8540 "=="5698 NAME@8481..8482
5981 WHITESPACE@8540..8541 " "5699 IDENT@8481..8482 "f"
5982 EXPR_LITERAL@8541..85455700 COMMA@8482..8483 ","
5983 NULL_KW@8541..8545 "null"5701 WHITESPACE@8483..8484 " "
5984 R_BRACK@8545..8546 "]"5702 ARG@8484..8488
5985 SEMI@8546..8547 ";"5703 EXPR_LITERAL@8484..8488
5986 WHITESPACE@8547..8554 "\n "5704 TRUE_KW@8484..8488 "true"
5987 EXPR_LOCAL@8554..89755705 R_PAREN@8488..8489 ")"
5988 LOCAL_KW@8554..8559 "local"5706 COMMA@8489..8490 ","
5989 WHITESPACE@8559..8560 " "5707 WHITESPACE@8490..8494 "\n\n "
5990 BIND_DESTRUCT@8560..86265708 MEMBER_FIELD_METHOD@8494..8551
5991 DESTRUCT_FULL@8560..85715709 FIELD_NAME_FIXED@8494..8506
5992 NAME@8560..85715710 NAME@8494..8506
5993 IDENT@8560..8571 "both_fields"5711 IDENT@8494..8506 "objectValues"
5994 WHITESPACE@8571..8572 " "5712 PARAMS_DESC@8506..8509
5995 ASSIGN@8572..8573 "="5713 L_PAREN@8506..8507 "("
5996 WHITESPACE@8573..8574 " "5714 PARAM@8507..8508
5997 EXPR_APPLY@8574..86265715 DESTRUCT_FULL@8507..8508
5998 EXPR_INDEX@8574..85865716 NAME@8507..8508
5999 EXPR_VAR@8574..85775717 IDENT@8507..8508 "o"
6000 NAME@8574..85775718 R_PAREN@8508..8509 ")"
6001 IDENT@8574..8577 "std"5719 COLONCOLON@8509..8511 "::"
6002 DOT@8577..8578 "."5720 WHITESPACE@8511..8516 "\n "
6003 NAME@8578..85865721 EXPR_ARRAY_COMP@8516..8551
6004 IDENT@8578..8586 "setUnion"5722 L_BRACK@8516..8517 "["
6005 ARGS_DESC@8586..86265723 EXPR_INDEX_EXPR@8517..8521
6006 L_PAREN@8586..8587 "("5724 LHS_EXPR@8517..8518
6007 ARG@8587..86005725 EXPR_VAR@8517..8518
6008 EXPR_VAR@8587..86005726 NAME@8517..8518
6009 NAME@8587..86005727 IDENT@8517..8518 "o"
6010 IDENT@8587..8600 "target_fields"5728 L_BRACK@8518..8519 "["
6011 COMMA@8600..8601 ","5729 EXPR_VAR@8519..8520
6012 WHITESPACE@8601..8602 " "5730 NAME@8519..8520
6013 ARG@8602..86255731 IDENT@8519..8520 "k"
6014 EXPR_APPLY@8602..86255732 R_BRACK@8520..8521 "]"
6015 EXPR_INDEX@8602..86185733 WHITESPACE@8521..8522 " "
6016 EXPR_VAR@8602..86055734 FOR_SPEC@8522..8550
6017 NAME@8602..86055735 FOR_KW@8522..8525 "for"
6018 IDENT@8602..8605 "std"5736 WHITESPACE@8525..8526 " "
6019 DOT@8605..8606 "."5737 NAME@8526..8527
6020 NAME@8606..86185738 IDENT@8526..8527 "k"
6021 IDENT@8606..8618 "objectFields"5739 WHITESPACE@8527..8528 " "
6022 ARGS_DESC@8618..86255740 IN_KW@8528..8530 "in"
6023 L_PAREN@8618..8619 "("5741 WHITESPACE@8530..8531 " "
6024 ARG@8619..86245742 EXPR_APPLY@8531..8550
6025 EXPR_VAR@8619..86245743 EXPR_INDEX@8531..8547
6026 NAME@8619..86245744 EXPR_VAR@8531..8534
6027 IDENT@8619..8624 "patch"5745 NAME@8531..8534
6028 R_PAREN@8624..8625 ")"5746 IDENT@8531..8534 "std"
6029 R_PAREN@8625..8626 ")"5747 DOT@8534..8535 "."
6030 SEMI@8626..8627 ";"5748 NAME@8535..8547
6031 WHITESPACE@8627..8635 "\n\n "5749 IDENT@8535..8547 "objectFields"
6032 EXPR_OBJECT@8635..89755750 ARGS_DESC@8547..8550
6033 OBJ_BODY_COMP@8635..89755751 L_PAREN@8547..8548 "("
6034 L_BRACE@8635..8636 "{"5752 ARG@8548..8549
6035 WHITESPACE@8636..8645 "\n "5753 EXPR_VAR@8548..8549
6036 MEMBER_FIELD_NORMAL@8645..89125754 NAME@8548..8549
6037 FIELD_NAME_DYNAMIC@8645..86485755 IDENT@8548..8549 "o"
6038 L_BRACK@8645..8646 "["5756 R_PAREN@8549..8550 ")"
6039 EXPR_VAR@8646..86475757 R_BRACK@8550..8551 "]"
6040 NAME@8646..86475758 COMMA@8551..8552 ","
6041 IDENT@8646..8647 "k"5759 WHITESPACE@8552..8556 "\n\n "
6042 R_BRACK@8647..8648 "]"5760 MEMBER_FIELD_METHOD@8556..8619
6043 COLON@8648..8649 ":"5761 FIELD_NAME_FIXED@8556..8571
6044 WHITESPACE@8649..8660 "\n "5762 NAME@8556..8571
6045 EXPR_IF_THEN_ELSE@8660..89125763 IDENT@8556..8571 "objectValuesAll"
6046 IF_KW@8660..8662 "if"5764 PARAMS_DESC@8571..8574
6047 WHITESPACE@8662..8663 " "5765 L_PAREN@8571..8572 "("
6048 EXPR_UNARY@8663..86875766 PARAM@8572..8573
6049 NOT@8663..8664 "!"5767 DESTRUCT_FULL@8572..8573
6050 EXPR_APPLY@8664..86875768 NAME@8572..8573
6051 EXPR_INDEX@8664..86775769 IDENT@8572..8573 "o"
6052 EXPR_VAR@8664..86675770 R_PAREN@8573..8574 ")"
6053 NAME@8664..86675771 COLONCOLON@8574..8576 "::"
6054 IDENT@8664..8667 "std"5772 WHITESPACE@8576..8581 "\n "
6055 DOT@8667..8668 "."5773 EXPR_ARRAY_COMP@8581..8619
6056 NAME@8668..86775774 L_BRACK@8581..8582 "["
6057 IDENT@8668..8677 "objectHas"5775 EXPR_INDEX_EXPR@8582..8586
6058 ARGS_DESC@8677..86875776 LHS_EXPR@8582..8583
6059 L_PAREN@8677..8678 "("5777 EXPR_VAR@8582..8583
6060 ARG@8678..86835778 NAME@8582..8583
6061 EXPR_VAR@8678..86835779 IDENT@8582..8583 "o"
6062 NAME@8678..86835780 L_BRACK@8583..8584 "["
6063 IDENT@8678..8683 "patch"5781 EXPR_VAR@8584..8585
6064 COMMA@8683..8684 ","5782 NAME@8584..8585
6065 WHITESPACE@8684..8685 " "5783 IDENT@8584..8585 "k"
6066 ARG@8685..86865784 R_BRACK@8585..8586 "]"
6067 EXPR_VAR@8685..86865785 WHITESPACE@8586..8587 " "
6068 NAME@8685..86865786 FOR_SPEC@8587..8618
6069 IDENT@8685..8686 "k"5787 FOR_KW@8587..8590 "for"
6070 R_PAREN@8686..8687 ")"5788 WHITESPACE@8590..8591 " "
6071 WHITESPACE@8687..8688 " "5789 NAME@8591..8592
6072 THEN_KW@8688..8692 "then"5790 IDENT@8591..8592 "k"
6073 WHITESPACE@8692..8705 "\n "5791 WHITESPACE@8592..8593 " "
6074 TRUE_EXPR@8705..87215792 IN_KW@8593..8595 "in"
6075 EXPR_INDEX_EXPR@8705..87215793 WHITESPACE@8595..8596 " "
6076 LHS_EXPR@8705..87185794 EXPR_APPLY@8596..8618
6077 EXPR_VAR@8705..87185795 EXPR_INDEX@8596..8615
6078 NAME@8705..87185796 EXPR_VAR@8596..8599
6079 IDENT@8705..8718 "target_object"5797 NAME@8596..8599
6080 L_BRACK@8718..8719 "["5798 IDENT@8596..8599 "std"
6081 EXPR_VAR@8719..87205799 DOT@8599..8600 "."
6082 NAME@8719..87205800 NAME@8600..8615
6083 IDENT@8719..8720 "k"5801 IDENT@8600..8615 "objectFieldsAll"
6084 R_BRACK@8720..8721 "]"5802 ARGS_DESC@8615..8618
6085 WHITESPACE@8721..8732 "\n "5803 L_PAREN@8615..8616 "("
6086 ELSE_KW@8732..8736 "else"5804 ARG@8616..8617
6087 WHITESPACE@8736..8737 " "5805 EXPR_VAR@8616..8617
6088 FALSE_EXPR@8737..89125806 NAME@8616..8617
6089 EXPR_IF_THEN_ELSE@8737..89125807 IDENT@8616..8617 "o"
6090 IF_KW@8737..8739 "if"5808 R_PAREN@8617..8618 ")"
6091 WHITESPACE@8739..8740 " "5809 R_BRACK@8618..8619 "]"
6092 EXPR_UNARY@8740..87725810 COMMA@8619..8620 ","
6093 NOT@8740..8741 "!"5811 WHITESPACE@8620..8624 "\n\n "
6094 EXPR_APPLY@8741..87725812 MEMBER_FIELD_METHOD@8624..8758
6095 EXPR_INDEX@8741..87545813 FIELD_NAME_FIXED@8624..8635
6096 EXPR_VAR@8741..87445814 NAME@8624..8635
6097 NAME@8741..87445815 IDENT@8624..8635 "resolvePath"
6098 IDENT@8741..8744 "std"5816 PARAMS_DESC@8635..8641
6099 DOT@8744..8745 "."5817 L_PAREN@8635..8636 "("
6100 NAME@8745..87545818 PARAM@8636..8637
6101 IDENT@8745..8754 "objectHas"5819 DESTRUCT_FULL@8636..8637
6102 ARGS_DESC@8754..87725820 NAME@8636..8637
6103 L_PAREN@8754..8755 "("5821 IDENT@8636..8637 "f"
6104 ARG@8755..87685822 COMMA@8637..8638 ","
6105 EXPR_VAR@8755..87685823 WHITESPACE@8638..8639 " "
6106 NAME@8755..87685824 PARAM@8639..8640
6107 IDENT@8755..8768 "target_object"5825 DESTRUCT_FULL@8639..8640
6108 COMMA@8768..8769 ","5826 NAME@8639..8640
6109 WHITESPACE@8769..8770 " "5827 IDENT@8639..8640 "r"
6110 ARG@8770..87715828 R_PAREN@8640..8641 ")"
6111 EXPR_VAR@8770..87715829 COLONCOLON@8641..8643 "::"
6112 NAME@8770..87715830 WHITESPACE@8643..8648 "\n "
6113 IDENT@8770..8771 "k"5831 STMT_LOCAL@8648..8678
6114 R_PAREN@8771..8772 ")"5832 LOCAL_KW@8648..8653 "local"
6115 WHITESPACE@8772..8773 " "5833 WHITESPACE@8653..8654 " "
6116 THEN_KW@8773..8777 "then"5834 BIND_DESTRUCT@8654..8677
6117 WHITESPACE@8777..8790 "\n "5835 DESTRUCT_FULL@8654..8657
6118 TRUE_EXPR@8790..88315836 NAME@8654..8657
6119 EXPR_APPLY@8790..88315837 IDENT@8654..8657 "arr"
6120 EXPR_INDEX@8790..88045838 WHITESPACE@8657..8658 " "
6121 EXPR_VAR@8790..87935839 ASSIGN@8658..8659 "="
6122 NAME@8790..87935840 WHITESPACE@8659..8660 " "
6123 IDENT@8790..8793 "std"5841 EXPR_APPLY@8660..8677
6124 DOT@8793..8794 "."5842 EXPR_INDEX@8660..8669
6125 NAME@8794..88045843 EXPR_VAR@8660..8663
6126 IDENT@8794..8804 "mergePatch"5844 NAME@8660..8663
6127 ARGS_DESC@8804..88315845 IDENT@8660..8663 "std"
6128 L_PAREN@8804..8805 "("5846 DOT@8663..8664 "."
6129 ARG@8805..88095847 NAME@8664..8669
6130 EXPR_LITERAL@8805..88095848 IDENT@8664..8669 "split"
6131 NULL_KW@8805..8809 "null"5849 ARGS_DESC@8669..8677
6132 COMMA@8809..8810 ","5850 L_PAREN@8669..8670 "("
6133 WHITESPACE@8810..8811 " "5851 ARG@8670..8671
6134 ARG@8811..88195852 EXPR_VAR@8670..8671
6135 EXPR_INDEX_EXPR@8811..88195853 NAME@8670..8671
6136 LHS_EXPR@8811..88165854 IDENT@8670..8671 "f"
6137 EXPR_VAR@8811..88165855 COMMA@8671..8672 ","
6138 NAME@8811..88165856 WHITESPACE@8672..8673 " "
6139 IDENT@8811..8816 "patch"5857 ARG@8673..8676
6140 L_BRACK@8816..8817 "["5858 EXPR_STRING@8673..8676
6141 EXPR_VAR@8817..88185859 STRING_SINGLE@8673..8676 "'/'"
6142 NAME@8817..88185860 R_PAREN@8676..8677 ")"
6143 IDENT@8817..8818 "k"5861 SEMI@8677..8678 ";"
6144 R_BRACK@8818..8819 "]"5862 WHITESPACE@8678..8683 "\n "
6145 R_PAREN@8819..8820 ")"5863 EXPR_APPLY@8683..8758
6146 WHITESPACE@8820..8821 " "5864 EXPR_INDEX@8683..8691
6147 TAILSTRICT_KW@8821..8831 "tailstrict"5865 EXPR_VAR@8683..8686
6148 WHITESPACE@8831..8842 "\n "5866 NAME@8683..8686
6149 ELSE_KW@8842..8846 "else"5867 IDENT@8683..8686 "std"
6150 WHITESPACE@8846..8859 "\n "5868 DOT@8686..8687 "."
6151 FALSE_EXPR@8859..89125869 NAME@8687..8691
6152 EXPR_APPLY@8859..89125870 IDENT@8687..8691 "join"
6153 EXPR_INDEX@8859..88735871 ARGS_DESC@8691..8758
6154 EXPR_VAR@8859..88625872 L_PAREN@8691..8692 "("
6155 NAME@8859..88625873 ARG@8692..8695
6156 IDENT@8859..8862 "std"5874 EXPR_STRING@8692..8695
6157 DOT@8862..8863 "."5875 STRING_SINGLE@8692..8695 "'/'"
6158 NAME@8863..88735876 COMMA@8695..8696 ","
6159 IDENT@8863..8873 "mergePatch"5877 WHITESPACE@8696..8697 " "
6160 ARGS_DESC@8873..89125878 ARG@8697..8757
6161 L_PAREN@8873..8874 "("5879 EXPR_BINARY@8697..8757
6162 ARG@8874..88905880 LHS_EXPR@8697..8751
6163 EXPR_INDEX_EXPR@8874..88905881 EXPR_APPLY@8697..8751
6164 LHS_EXPR@8874..88875882 EXPR_INDEX@8697..8710
6165 EXPR_VAR@8874..88875883 EXPR_VAR@8697..8700
6166 NAME@8874..88875884 NAME@8697..8700
6167 IDENT@8874..8887 "target_object"5885 IDENT@8697..8700 "std"
6168 L_BRACK@8887..8888 "["5886 DOT@8700..8701 "."
6169 EXPR_VAR@8888..88895887 NAME@8701..8710
6170 NAME@8888..88895888 IDENT@8701..8710 "makeArray"
6171 IDENT@8888..8889 "k"5889 ARGS_DESC@8710..8751
6172 R_BRACK@8889..8890 "]"5890 L_PAREN@8710..8711 "("
6173 COMMA@8890..8891 ","5891 ARG@8711..8730
6174 WHITESPACE@8891..8892 " "5892 EXPR_BINARY@8711..8730
6175 ARG@8892..89005893 LHS_EXPR@8711..8726
6176 EXPR_INDEX_EXPR@8892..89005894 EXPR_APPLY@8711..8726
6177 LHS_EXPR@8892..88975895 EXPR_INDEX@8711..8721
6178 EXPR_VAR@8892..88975896 EXPR_VAR@8711..8714
6179 NAME@8892..88975897 NAME@8711..8714
6180 IDENT@8892..8897 "patch"5898 IDENT@8711..8714 "std"
6181 L_BRACK@8897..8898 "["5899 DOT@8714..8715 "."
6182 EXPR_VAR@8898..88995900 NAME@8715..8721
6183 NAME@8898..88995901 IDENT@8715..8721 "length"
6184 IDENT@8898..8899 "k"5902 ARGS_DESC@8721..8726
6185 R_BRACK@8899..8900 "]"5903 L_PAREN@8721..8722 "("
6186 R_PAREN@8900..8901 ")"5904 ARG@8722..8725
6187 WHITESPACE@8901..8902 " "5905 EXPR_VAR@8722..8725
6188 TAILSTRICT_KW@8902..8912 "tailstrict"5906 NAME@8722..8725
6189 WHITESPACE@8912..8921 "\n "5907 IDENT@8722..8725 "arr"
6190 FOR_SPEC@8921..89675908 R_PAREN@8725..8726 ")"
6191 FOR_KW@8921..8924 "for"5909 WHITESPACE@8726..8727 " "
6192 WHITESPACE@8924..8925 " "5910 MINUS@8727..8728 "-"
6193 NAME@8925..89265911 WHITESPACE@8728..8729 " "
6194 IDENT@8925..8926 "k"5912 EXPR_NUMBER@8729..8730
6195 WHITESPACE@8926..8927 " "5913 FLOAT@8729..8730 "1"
6196 IN_KW@8927..8929 "in"5914 COMMA@8730..8731 ","
6197 WHITESPACE@8929..8930 " "5915 WHITESPACE@8731..8732 " "
6198 EXPR_APPLY@8930..89675916 ARG@8732..8750
6199 EXPR_INDEX@8930..89415917 EXPR_FUNCTION@8732..8750
6200 EXPR_VAR@8930..89335918 FUNCTION_KW@8732..8740 "function"
6201 NAME@8930..89335919 PARAMS_DESC@8740..8743
6202 IDENT@8930..8933 "std"5920 L_PAREN@8740..8741 "("
6203 DOT@8933..8934 "."5921 PARAM@8741..8742
6204 NAME@8934..89415922 DESTRUCT_FULL@8741..8742
6205 IDENT@8934..8941 "setDiff"5923 NAME@8741..8742
6206 ARGS_DESC@8941..89675924 IDENT@8741..8742 "i"
6207 L_PAREN@8941..8942 "("5925 R_PAREN@8742..8743 ")"
6208 ARG@8942..89535926 WHITESPACE@8743..8744 " "
6209 EXPR_VAR@8942..89535927 EXPR_INDEX_EXPR@8744..8750
6210 NAME@8942..89535928 LHS_EXPR@8744..8747
6211 IDENT@8942..8953 "both_fields"5929 EXPR_VAR@8744..8747
6212 COMMA@8953..8954 ","5930 NAME@8744..8747
6213 WHITESPACE@8954..8955 " "5931 IDENT@8744..8747 "arr"
6214 ARG@8955..89665932 L_BRACK@8747..8748 "["
6215 EXPR_VAR@8955..89665933 EXPR_VAR@8748..8749
6216 NAME@8955..89665934 NAME@8748..8749
6217 IDENT@8955..8966 "null_fields"5935 IDENT@8748..8749 "i"
6218 R_PAREN@8966..8967 ")"5936 R_BRACK@8749..8750 "]"
6219 WHITESPACE@8967..8974 "\n "5937 R_PAREN@8750..8751 ")"
6220 R_BRACE@8974..8975 "}"5938 WHITESPACE@8751..8752 " "
6221 WHITESPACE@8975..8980 "\n "5939 PLUS@8752..8753 "+"
6222 ELSE_KW@8980..8984 "else"5940 WHITESPACE@8753..8754 " "
6223 WHITESPACE@8984..8991 "\n "5941 EXPR_ARRAY@8754..8757
6224 FALSE_EXPR@8991..89965942 L_BRACK@8754..8755 "["
6225 EXPR_VAR@8991..89965943 EXPR_VAR@8755..8756
6226 NAME@8991..89965944 NAME@8755..8756
6227 IDENT@8991..8996 "patch"5945 IDENT@8755..8756 "r"
6228 COMMA@8996..8997 ","5946 R_BRACK@8756..8757 "]"
6229 WHITESPACE@8997..9001 "\n\n "5947 R_PAREN@8757..8758 ")"
6230 MEMBER_FIELD_METHOD@9001..91075948 COMMA@8758..8759 ","
6231 FIELD_NAME_FIXED@9001..90045949 WHITESPACE@8759..8763 "\n\n "
6232 NAME@9001..90045950 MEMBER_FIELD_METHOD@8763..9216
6233 IDENT@9001..9004 "get"5951 FIELD_NAME_FIXED@8763..8768
6234 PARAMS_DESC@9004..90415952 NAME@8763..8768
6235 L_PAREN@9004..9005 "("5953 IDENT@8763..8768 "prune"
6236 PARAM@9005..90065954 PARAMS_DESC@8768..8771
6237 DESTRUCT_FULL@9005..90065955 L_PAREN@8768..8769 "("
6238 NAME@9005..90065956 PARAM@8769..8770
6239 IDENT@9005..9006 "o"5957 DESTRUCT_FULL@8769..8770
6240 COMMA@9006..9007 ","5958 NAME@8769..8770
6241 WHITESPACE@9007..9008 " "5959 IDENT@8769..8770 "a"
6242 PARAM@9008..90095960 R_PAREN@8770..8771 ")"
6243 DESTRUCT_FULL@9008..90095961 COLONCOLON@8771..8773 "::"
6244 NAME@9008..90095962 WHITESPACE@8773..8778 "\n "
6245 IDENT@9008..9009 "f"5963 STMT_LOCAL@8778..8982
6246 COMMA@9009..9010 ","5964 LOCAL_KW@8778..8783 "local"
6247 WHITESPACE@9010..9011 " "5965 WHITESPACE@8783..8784 " "
6248 PARAM@9011..90235966 BIND_FUNCTION@8784..8981
6249 DESTRUCT_FULL@9011..90185967 NAME@8784..8793
6250 NAME@9011..90185968 IDENT@8784..8793 "isContent"
6251 IDENT@9011..9018 "default"5969 PARAMS_DESC@8793..8796
6252 ASSIGN@9018..9019 "="5970 L_PAREN@8793..8794 "("
6253 EXPR_LITERAL@9019..90235971 PARAM@8794..8795
6254 NULL_KW@9019..9023 "null"5972 DESTRUCT_FULL@8794..8795
6255 COMMA@9023..9024 ","5973 NAME@8794..8795
6256 WHITESPACE@9024..9025 " "5974 IDENT@8794..8795 "b"
6257 PARAM@9025..90405975 R_PAREN@8795..8796 ")"
6258 DESTRUCT_FULL@9025..90355976 WHITESPACE@8796..8797 " "
6259 NAME@9025..90355977 ASSIGN@8797..8798 "="
6260 IDENT@9025..9035 "inc_hidden"5978 WHITESPACE@8798..8805 "\n "
6261 ASSIGN@9035..9036 "="5979 EXPR_IF_THEN_ELSE@8805..8981
6262 EXPR_LITERAL@9036..90405980 IF_KW@8805..8807 "if"
6263 TRUE_KW@9036..9040 "true"5981 WHITESPACE@8807..8808 " "
6264 R_PAREN@9040..9041 ")"5982 EXPR_BINARY@8808..8817
6265 COLONCOLON@9041..9043 "::"5983 LHS_EXPR@8808..8809
6266 WHITESPACE@9043..9048 "\n "5984 EXPR_VAR@8808..8809
6267 EXPR_IF_THEN_ELSE@9048..91075985 NAME@8808..8809
6268 IF_KW@9048..9050 "if"5986 IDENT@8808..8809 "b"
6269 WHITESPACE@9050..9051 " "5987 WHITESPACE@8809..8810 " "
6270 EXPR_APPLY@9051..90845988 EQ@8810..8812 "=="
6271 EXPR_INDEX@9051..90665989 WHITESPACE@8812..8813 " "
6272 EXPR_VAR@9051..90545990 EXPR_LITERAL@8813..8817
6273 NAME@9051..90545991 NULL_KW@8813..8817 "null"
6274 IDENT@9051..9054 "std"5992 WHITESPACE@8817..8818 " "
6275 DOT@9054..9055 "."5993 THEN_KW@8818..8822 "then"
6276 NAME@9055..90665994 WHITESPACE@8822..8831 "\n "
6277 IDENT@9055..9066 "objectHasEx"5995 TRUE_EXPR@8831..8836
6278 ARGS_DESC@9066..90845996 EXPR_LITERAL@8831..8836
6279 L_PAREN@9066..9067 "("5997 FALSE_KW@8831..8836 "false"
6280 ARG@9067..90685998 WHITESPACE@8836..8843 "\n "
6281 EXPR_VAR@9067..90685999 ELSE_KW@8843..8847 "else"
6282 NAME@9067..90686000 WHITESPACE@8847..8848 " "
6283 IDENT@9067..9068 "o"6001 FALSE_EXPR@8848..8981
6284 COMMA@9068..9069 ","6002 EXPR_IF_THEN_ELSE@8848..8981
6285 WHITESPACE@9069..9070 " "6003 IF_KW@8848..8850 "if"
6286 ARG@9070..90716004 WHITESPACE@8850..8851 " "
6287 EXPR_VAR@9070..90716005 EXPR_APPLY@8851..8865
6288 NAME@9070..90716006 EXPR_INDEX@8851..8862
6289 IDENT@9070..9071 "f"6007 EXPR_VAR@8851..8854
6290 COMMA@9071..9072 ","6008 NAME@8851..8854
6291 WHITESPACE@9072..9073 " "6009 IDENT@8851..8854 "std"
6292 ARG@9073..90836010 DOT@8854..8855 "."
6293 EXPR_VAR@9073..90836011 NAME@8855..8862
6294 NAME@9073..90836012 IDENT@8855..8862 "isArray"
6295 IDENT@9073..9083 "inc_hidden"6013 ARGS_DESC@8862..8865
6296 R_PAREN@9083..9084 ")"6014 L_PAREN@8862..8863 "("
6297 WHITESPACE@9084..9085 " "6015 ARG@8863..8864
6298 THEN_KW@9085..9089 "then"6016 EXPR_VAR@8863..8864
6299 WHITESPACE@9089..9090 " "6017 NAME@8863..8864
6300 TRUE_EXPR@9090..90946018 IDENT@8863..8864 "b"
6301 EXPR_INDEX_EXPR@9090..90946019 R_PAREN@8864..8865 ")"
6302 LHS_EXPR@9090..90916020 WHITESPACE@8865..8866 " "
6303 EXPR_VAR@9090..90916021 THEN_KW@8866..8870 "then"
6304 NAME@9090..90916022 WHITESPACE@8870..8879 "\n "
6305 IDENT@9090..9091 "o"6023 TRUE_EXPR@8879..8896
6306 L_BRACK@9091..9092 "["6024 EXPR_BINARY@8879..8896
6307 EXPR_VAR@9092..90936025 LHS_EXPR@8879..8892
6308 NAME@9092..90936026 EXPR_APPLY@8879..8892
6309 IDENT@9092..9093 "f"6027 EXPR_INDEX@8879..8889
6310 R_BRACK@9093..9094 "]"6028 EXPR_VAR@8879..8882
6311 WHITESPACE@9094..9095 " "6029 NAME@8879..8882
6312 ELSE_KW@9095..9099 "else"6030 IDENT@8879..8882 "std"
6313 WHITESPACE@9099..9100 " "6031 DOT@8882..8883 "."
6314 FALSE_EXPR@9100..91076032 NAME@8883..8889
6315 EXPR_VAR@9100..91076033 IDENT@8883..8889 "length"
6316 NAME@9100..91076034 ARGS_DESC@8889..8892
6317 IDENT@9100..9107 "default"6035 L_PAREN@8889..8890 "("
6318 COMMA@9107..9108 ","6036 ARG@8890..8891
6319 WHITESPACE@9108..9112 "\n\n "6037 EXPR_VAR@8890..8891
6320 MEMBER_FIELD_METHOD@9112..91626038 NAME@8890..8891
6321 FIELD_NAME_FIXED@9112..91246039 IDENT@8890..8891 "b"
6322 NAME@9112..91246040 R_PAREN@8891..8892 ")"
6323 IDENT@9112..9124 "objectFields"6041 WHITESPACE@8892..8893 " "
6324 PARAMS_DESC@9124..91276042 GT@8893..8894 ">"
6325 L_PAREN@9124..9125 "("6043 WHITESPACE@8894..8895 " "
6326 PARAM@9125..91266044 EXPR_NUMBER@8895..8896
6327 DESTRUCT_FULL@9125..91266045 FLOAT@8895..8896 "0"
6328 NAME@9125..91266046 WHITESPACE@8896..8903 "\n "
6329 IDENT@9125..9126 "o"6047 ELSE_KW@8903..8907 "else"
6330 R_PAREN@9126..9127 ")"6048 WHITESPACE@8907..8908 " "
6331 COLONCOLON@9127..9129 "::"6049 FALSE_EXPR@8908..8981
6332 WHITESPACE@9129..9134 "\n "6050 EXPR_IF_THEN_ELSE@8908..8981
6333 EXPR_APPLY@9134..91626051 IF_KW@8908..8910 "if"
6334 EXPR_INDEX@9134..91526052 WHITESPACE@8910..8911 " "
6335 EXPR_VAR@9134..91376053 EXPR_APPLY@8911..8926
6336 NAME@9134..91376054 EXPR_INDEX@8911..8923
6337 IDENT@9134..9137 "std"6055 EXPR_VAR@8911..8914
6338 DOT@9137..9138 "."6056 NAME@8911..8914
6339 NAME@9138..91526057 IDENT@8911..8914 "std"
6340 IDENT@9138..9152 "objectFieldsEx"6058 DOT@8914..8915 "."
6341 ARGS_DESC@9152..91626059 NAME@8915..8923
6342 L_PAREN@9152..9153 "("6060 IDENT@8915..8923 "isObject"
6343 ARG@9153..91546061 ARGS_DESC@8923..8926
6344 EXPR_VAR@9153..91546062 L_PAREN@8923..8924 "("
6345 NAME@9153..91546063 ARG@8924..8925
6346 IDENT@9153..9154 "o"6064 EXPR_VAR@8924..8925
6347 COMMA@9154..9155 ","6065 NAME@8924..8925
6348 WHITESPACE@9155..9156 " "6066 IDENT@8924..8925 "b"
6349 ARG@9156..91616067 R_PAREN@8925..8926 ")"
6350 EXPR_LITERAL@9156..91616068 WHITESPACE@8926..8927 " "
6351 FALSE_KW@9156..9161 "false"6069 THEN_KW@8927..8931 "then"
6352 R_PAREN@9161..9162 ")"6070 WHITESPACE@8931..8940 "\n "
6353 COMMA@9162..9163 ","6071 TRUE_EXPR@8940..8957
6354 WHITESPACE@9163..9167 "\n\n "6072 EXPR_BINARY@8940..8957
6355 MEMBER_FIELD_METHOD@9167..92196073 LHS_EXPR@8940..8953
6356 FIELD_NAME_FIXED@9167..91826074 EXPR_APPLY@8940..8953
6357 NAME@9167..91826075 EXPR_INDEX@8940..8950
6358 IDENT@9167..9182 "objectFieldsAll"6076 EXPR_VAR@8940..8943
6359 PARAMS_DESC@9182..91856077 NAME@8940..8943
6360 L_PAREN@9182..9183 "("6078 IDENT@8940..8943 "std"
6361 PARAM@9183..91846079 DOT@8943..8944 "."
6362 DESTRUCT_FULL@9183..91846080 NAME@8944..8950
6363 NAME@9183..91846081 IDENT@8944..8950 "length"
6364 IDENT@9183..9184 "o"6082 ARGS_DESC@8950..8953
6365 R_PAREN@9184..9185 ")"6083 L_PAREN@8950..8951 "("
6366 COLONCOLON@9185..9187 "::"6084 ARG@8951..8952
6367 WHITESPACE@9187..9192 "\n "6085 EXPR_VAR@8951..8952
6368 EXPR_APPLY@9192..92196086 NAME@8951..8952
6369 EXPR_INDEX@9192..92106087 IDENT@8951..8952 "b"
6370 EXPR_VAR@9192..91956088 R_PAREN@8952..8953 ")"
6371 NAME@9192..91956089 WHITESPACE@8953..8954 " "
6372 IDENT@9192..9195 "std"6090 GT@8954..8955 ">"
6373 DOT@9195..9196 "."6091 WHITESPACE@8955..8956 " "
6374 NAME@9196..92106092 EXPR_NUMBER@8956..8957
6375 IDENT@9196..9210 "objectFieldsEx"6093 FLOAT@8956..8957 "0"
6376 ARGS_DESC@9210..92196094 WHITESPACE@8957..8964 "\n "
6377 L_PAREN@9210..9211 "("6095 ELSE_KW@8964..8968 "else"
6378 ARG@9211..92126096 WHITESPACE@8968..8977 "\n "
6379 EXPR_VAR@9211..92126097 FALSE_EXPR@8977..8981
6380 NAME@9211..92126098 EXPR_LITERAL@8977..8981
6381 IDENT@9211..9212 "o"6099 TRUE_KW@8977..8981 "true"
6382 COMMA@9212..9213 ","6100 SEMI@8981..8982 ";"
6383 WHITESPACE@9213..9214 " "6101 WHITESPACE@8982..8987 "\n "
6384 ARG@9214..92186102 EXPR_IF_THEN_ELSE@8987..9216
6385 EXPR_LITERAL@9214..92186103 IF_KW@8987..8989 "if"
6386 TRUE_KW@9214..9218 "true"6104 WHITESPACE@8989..8990 " "
6387 R_PAREN@9218..9219 ")"6105 EXPR_APPLY@8990..9004
6388 COMMA@9219..9220 ","6106 EXPR_INDEX@8990..9001
6389 WHITESPACE@9220..9224 "\n\n "6107 EXPR_VAR@8990..8993
6390 MEMBER_FIELD_METHOD@9224..92746108 NAME@8990..8993
6391 FIELD_NAME_FIXED@9224..92336109 IDENT@8990..8993 "std"
6392 NAME@9224..92336110 DOT@8993..8994 "."
6393 IDENT@9224..9233 "objectHas"6111 NAME@8994..9001
6394 PARAMS_DESC@9233..92396112 IDENT@8994..9001 "isArray"
6395 L_PAREN@9233..9234 "("6113 ARGS_DESC@9001..9004
6396 PARAM@9234..92356114 L_PAREN@9001..9002 "("
6397 DESTRUCT_FULL@9234..92356115 ARG@9002..9003
6398 NAME@9234..92356116 EXPR_VAR@9002..9003
6399 IDENT@9234..9235 "o"6117 NAME@9002..9003
6400 COMMA@9235..9236 ","6118 IDENT@9002..9003 "a"
6401 WHITESPACE@9236..9237 " "6119 R_PAREN@9003..9004 ")"
6402 PARAM@9237..92386120 WHITESPACE@9004..9005 " "
6403 DESTRUCT_FULL@9237..92386121 THEN_KW@9005..9009 "then"
6404 NAME@9237..92386122 WHITESPACE@9009..9016 "\n "
6405 IDENT@9237..9238 "f"6123 TRUE_EXPR@9016..9066
6406 R_PAREN@9238..9239 ")"6124 EXPR_ARRAY_COMP@9016..9066
6407 COLONCOLON@9239..9241 "::"6125 L_BRACK@9016..9017 "["
6408 WHITESPACE@9241..9246 "\n "6126 EXPR_APPLY@9017..9029
6409 EXPR_APPLY@9246..92746127 EXPR_INDEX@9017..9026
6410 EXPR_INDEX@9246..92616128 EXPR_VAR@9017..9020
6411 EXPR_VAR@9246..92496129 NAME@9017..9020
6412 NAME@9246..92496130 IDENT@9017..9020 "std"
6413 IDENT@9246..9249 "std"6131 DOT@9020..9021 "."
6414 DOT@9249..9250 "."6132 NAME@9021..9026
6415 NAME@9250..92616133 IDENT@9021..9026 "prune"
6416 IDENT@9250..9261 "objectHasEx"6134 ARGS_DESC@9026..9029
6417 ARGS_DESC@9261..92746135 L_PAREN@9026..9027 "("
6418 L_PAREN@9261..9262 "("6136 ARG@9027..9028
6419 ARG@9262..92636137 EXPR_VAR@9027..9028
6420 EXPR_VAR@9262..92636138 NAME@9027..9028
6421 NAME@9262..92636139 IDENT@9027..9028 "x"
6422 IDENT@9262..9263 "o"6140 R_PAREN@9028..9029 ")"
6423 COMMA@9263..9264 ","6141 WHITESPACE@9029..9030 " "
6424 WHITESPACE@9264..9265 " "6142 FOR_SPEC@9030..9040
6425 ARG@9265..92666143 FOR_KW@9030..9033 "for"
6426 EXPR_VAR@9265..92666144 WHITESPACE@9033..9034 " "
6427 NAME@9265..92666145 NAME@9034..9035
6428 IDENT@9265..9266 "f"6146 IDENT@9034..9035 "x"
6429 COMMA@9266..9267 ","6147 WHITESPACE@9035..9036 " "
6430 WHITESPACE@9267..9268 " "6148 IN_KW@9036..9038 "in"
6431 ARG@9268..92736149 WHITESPACE@9038..9039 " "
6432 EXPR_LITERAL@9268..92736150 EXPR_VAR@9039..9040
6433 FALSE_KW@9268..9273 "false"6151 NAME@9039..9040
6434 R_PAREN@9273..9274 ")"6152 IDENT@9039..9040 "a"
6435 COMMA@9274..9275 ","6153 WHITESPACE@9040..9041 " "
6436 WHITESPACE@9275..9279 "\n\n "6154 IF_SPEC@9041..9065
6437 MEMBER_FIELD_METHOD@9279..93316155 IF_KW@9041..9043 "if"
6438 FIELD_NAME_FIXED@9279..92916156 WHITESPACE@9043..9044 " "
6439 NAME@9279..92916157 EXPR_APPLY@9044..9065
6440 IDENT@9279..9291 "objectHasAll"6158 EXPR_VAR@9044..9053
6441 PARAMS_DESC@9291..92976159 NAME@9044..9053
6442 L_PAREN@9291..9292 "("6160 IDENT@9044..9053 "isContent"
6443 PARAM@9292..92936161 ARGS_DESC@9053..9065
6444 DESTRUCT_FULL@9292..92936162 L_PAREN@9053..9054 "("
6445 NAME@9292..92936163 ARG@9054..9064
6446 IDENT@9292..9293 "o"6164 EXPR_APPLY@9054..9064
6447 COMMA@9293..9294 ","6165 EXPR_INDEX@9054..9061
6448 WHITESPACE@9294..9295 " "6166 EXPR_LITERAL@9054..9055
6449 PARAM@9295..92966167 DOLLAR@9054..9055 "$"
6450 DESTRUCT_FULL@9295..92966168 DOT@9055..9056 "."
6451 NAME@9295..92966169 NAME@9056..9061
6452 IDENT@9295..9296 "f"6170 IDENT@9056..9061 "prune"
6453 R_PAREN@9296..9297 ")"6171 ARGS_DESC@9061..9064
6454 COLONCOLON@9297..9299 "::"6172 L_PAREN@9061..9062 "("
6455 WHITESPACE@9299..9304 "\n "6173 ARG@9062..9063
6456 EXPR_APPLY@9304..93316174 EXPR_VAR@9062..9063
6457 EXPR_INDEX@9304..93196175 NAME@9062..9063
6458 EXPR_VAR@9304..93076176 IDENT@9062..9063 "x"
6459 NAME@9304..93076177 R_PAREN@9063..9064 ")"
6460 IDENT@9304..9307 "std"6178 R_PAREN@9064..9065 ")"
6461 DOT@9307..9308 "."6179 R_BRACK@9065..9066 "]"
6462 NAME@9308..93196180 WHITESPACE@9066..9071 "\n "
6463 IDENT@9308..9319 "objectHasEx"6181 ELSE_KW@9071..9075 "else"
6464 ARGS_DESC@9319..93316182 WHITESPACE@9075..9076 " "
6465 L_PAREN@9319..9320 "("6183 FALSE_EXPR@9076..9216
6466 ARG@9320..93216184 EXPR_IF_THEN_ELSE@9076..9216
6467 EXPR_VAR@9320..93216185 IF_KW@9076..9078 "if"
6468 NAME@9320..93216186 WHITESPACE@9078..9079 " "
6469 IDENT@9320..9321 "o"6187 EXPR_APPLY@9079..9094
6470 COMMA@9321..9322 ","6188 EXPR_INDEX@9079..9091
6471 WHITESPACE@9322..9323 " "6189 EXPR_VAR@9079..9082
6472 ARG@9323..93246190 NAME@9079..9082
6473 EXPR_VAR@9323..93246191 IDENT@9079..9082 "std"
6474 NAME@9323..93246192 DOT@9082..9083 "."
6475 IDENT@9323..9324 "f"6193 NAME@9083..9091
6476 COMMA@9324..9325 ","6194 IDENT@9083..9091 "isObject"
6477 WHITESPACE@9325..9326 " "6195 ARGS_DESC@9091..9094
6478 ARG@9326..93306196 L_PAREN@9091..9092 "("
6479 EXPR_LITERAL@9326..93306197 ARG@9092..9093
6480 TRUE_KW@9326..9330 "true"6198 EXPR_VAR@9092..9093
6481 R_PAREN@9330..9331 ")"6199 NAME@9092..9093
6482 COMMA@9331..9332 ","6200 IDENT@9092..9093 "a"
6483 WHITESPACE@9332..9336 "\n\n "6201 R_PAREN@9093..9094 ")"
6484 MEMBER_FIELD_METHOD@9336..93936202 WHITESPACE@9094..9095 " "
6485 FIELD_NAME_FIXED@9336..93486203 THEN_KW@9095..9099 "then"
6486 NAME@9336..93486204 WHITESPACE@9099..9100 " "
6487 IDENT@9336..9348 "objectValues"6205 TRUE_EXPR@9100..9203
6488 PARAMS_DESC@9348..93516206 EXPR_OBJECT@9100..9203
6489 L_PAREN@9348..9349 "("6207 OBJ_BODY_COMP@9100..9203
6490 PARAM@9349..93506208 L_BRACE@9100..9101 "{"
6491 DESTRUCT_FULL@9349..93506209 WHITESPACE@9101..9108 "\n "
6492 NAME@9349..93506210 MEMBER_FIELD_NORMAL@9108..9126
6493 IDENT@9349..9350 "o"6211 FIELD_NAME_DYNAMIC@9108..9111
6494 R_PAREN@9350..9351 ")"6212 L_BRACK@9108..9109 "["
6495 COLONCOLON@9351..9353 "::"6213 EXPR_VAR@9109..9110
6496 WHITESPACE@9353..9358 "\n "6214 NAME@9109..9110
6497 EXPR_ARRAY_COMP@9358..93936215 IDENT@9109..9110 "x"
6498 L_BRACK@9358..9359 "["6216 R_BRACK@9110..9111 "]"
6499 EXPR_INDEX_EXPR@9359..93636217 COLON@9111..9112 ":"
6500 LHS_EXPR@9359..93606218 WHITESPACE@9112..9113 " "
6501 EXPR_VAR@9359..93606219 EXPR_APPLY@9113..9126
6502 NAME@9359..93606220 EXPR_INDEX@9113..9120
6503 IDENT@9359..9360 "o"6221 EXPR_LITERAL@9113..9114
6504 L_BRACK@9360..9361 "["6222 DOLLAR@9113..9114 "$"
6505 EXPR_VAR@9361..93626223 DOT@9114..9115 "."
6506 NAME@9361..93626224 NAME@9115..9120
6507 IDENT@9361..9362 "k"6225 IDENT@9115..9120 "prune"
6508 R_BRACK@9362..9363 "]"6226 ARGS_DESC@9120..9126
6509 WHITESPACE@9363..9364 " "6227 L_PAREN@9120..9121 "("
6510 FOR_SPEC@9364..93926228 ARG@9121..9125
6511 FOR_KW@9364..9367 "for"6229 EXPR_INDEX_EXPR@9121..9125
6512 WHITESPACE@9367..9368 " "6230 LHS_EXPR@9121..9122
6513 NAME@9368..93696231 EXPR_VAR@9121..9122
6514 IDENT@9368..9369 "k"6232 NAME@9121..9122
6515 WHITESPACE@9369..9370 " "6233 IDENT@9121..9122 "a"
6516 IN_KW@9370..9372 "in"6234 L_BRACK@9122..9123 "["
6517 WHITESPACE@9372..9373 " "6235 EXPR_VAR@9123..9124
6518 EXPR_APPLY@9373..93926236 NAME@9123..9124
6519 EXPR_INDEX@9373..93896237 IDENT@9123..9124 "x"
6520 EXPR_VAR@9373..93766238 R_BRACK@9124..9125 "]"
6521 NAME@9373..93766239 R_PAREN@9125..9126 ")"
6522 IDENT@9373..9376 "std"6240 WHITESPACE@9126..9133 "\n "
6523 DOT@9376..9377 "."6241 FOR_SPEC@9133..9161
6524 NAME@9377..93896242 FOR_KW@9133..9136 "for"
6525 IDENT@9377..9389 "objectFields"6243 WHITESPACE@9136..9137 " "
6526 ARGS_DESC@9389..93926244 NAME@9137..9138
6527 L_PAREN@9389..9390 "("6245 IDENT@9137..9138 "x"
6528 ARG@9390..93916246 WHITESPACE@9138..9139 " "
6529 EXPR_VAR@9390..93916247 IN_KW@9139..9141 "in"
6530 NAME@9390..93916248 WHITESPACE@9141..9142 " "
6531 IDENT@9390..9391 "o"6249 EXPR_APPLY@9142..9161
6532 R_PAREN@9391..9392 ")"6250 EXPR_INDEX@9142..9158
6533 R_BRACK@9392..9393 "]"6251 EXPR_VAR@9142..9145
6534 COMMA@9393..9394 ","6252 NAME@9142..9145
6535 WHITESPACE@9394..9398 "\n\n "6253 IDENT@9142..9145 "std"
6536 MEMBER_FIELD_METHOD@9398..94616254 DOT@9145..9146 "."
6537 FIELD_NAME_FIXED@9398..94136255 NAME@9146..9158
6538 NAME@9398..94136256 IDENT@9146..9158 "objectFields"
6539 IDENT@9398..9413 "objectValuesAll"6257 ARGS_DESC@9158..9161
6540 PARAMS_DESC@9413..94166258 L_PAREN@9158..9159 "("
6541 L_PAREN@9413..9414 "("6259 ARG@9159..9160
6542 PARAM@9414..94156260 EXPR_VAR@9159..9160
6543 DESTRUCT_FULL@9414..94156261 NAME@9159..9160
6544 NAME@9414..94156262 IDENT@9159..9160 "a"
6545 IDENT@9414..9415 "o"6263 R_PAREN@9160..9161 ")"
6546 R_PAREN@9415..9416 ")"6264 WHITESPACE@9161..9168 "\n "
6547 COLONCOLON@9416..9418 "::"6265 IF_SPEC@9168..9197
6548 WHITESPACE@9418..9423 "\n "6266 IF_KW@9168..9170 "if"
6549 EXPR_ARRAY_COMP@9423..94616267 WHITESPACE@9170..9171 " "
6550 L_BRACK@9423..9424 "["6268 EXPR_APPLY@9171..9197
6551 EXPR_INDEX_EXPR@9424..94286269 EXPR_VAR@9171..9180
6552 LHS_EXPR@9424..94256270 NAME@9171..9180
6553 EXPR_VAR@9424..94256271 IDENT@9171..9180 "isContent"
6554 NAME@9424..94256272 ARGS_DESC@9180..9197
6555 IDENT@9424..9425 "o"6273 L_PAREN@9180..9181 "("
6556 L_BRACK@9425..9426 "["6274 ARG@9181..9196
6557 EXPR_VAR@9426..94276275 EXPR_APPLY@9181..9196
6558 NAME@9426..94276276 EXPR_INDEX@9181..9190
6559 IDENT@9426..9427 "k"6277 EXPR_VAR@9181..9184
6560 R_BRACK@9427..9428 "]"6278 NAME@9181..9184
6561 WHITESPACE@9428..9429 " "6279 IDENT@9181..9184 "std"
6562 FOR_SPEC@9429..94606280 DOT@9184..9185 "."
6563 FOR_KW@9429..9432 "for"6281 NAME@9185..9190
6564 WHITESPACE@9432..9433 " "6282 IDENT@9185..9190 "prune"
6565 NAME@9433..94346283 ARGS_DESC@9190..9196
6566 IDENT@9433..9434 "k"6284 L_PAREN@9190..9191 "("
6567 WHITESPACE@9434..9435 " "6285 ARG@9191..9195
6568 IN_KW@9435..9437 "in"6286 EXPR_INDEX_EXPR@9191..9195
6569 WHITESPACE@9437..9438 " "6287 LHS_EXPR@9191..9192
6570 EXPR_APPLY@9438..94606288 EXPR_VAR@9191..9192
6571 EXPR_INDEX@9438..94576289 NAME@9191..9192
6572 EXPR_VAR@9438..94416290 IDENT@9191..9192 "a"
6573 NAME@9438..94416291 L_BRACK@9192..9193 "["
6574 IDENT@9438..9441 "std"6292 EXPR_VAR@9193..9194
6575 DOT@9441..9442 "."6293 NAME@9193..9194
6576 NAME@9442..94576294 IDENT@9193..9194 "x"
6577 IDENT@9442..9457 "objectFieldsAll"6295 R_BRACK@9194..9195 "]"
6578 ARGS_DESC@9457..94606296 R_PAREN@9195..9196 ")"
6579 L_PAREN@9457..9458 "("6297 R_PAREN@9196..9197 ")"
6580 ARG@9458..94596298 WHITESPACE@9197..9202 "\n "
6581 EXPR_VAR@9458..94596299 R_BRACE@9202..9203 "}"
6582 NAME@9458..94596300 WHITESPACE@9203..9204 " "
6583 IDENT@9458..9459 "o"6301 ELSE_KW@9204..9208 "else"
6584 R_PAREN@9459..9460 ")"6302 WHITESPACE@9208..9215 "\n "
6585 R_BRACK@9460..9461 "]"6303 FALSE_EXPR@9215..9216
6586 COMMA@9461..9462 ","6304 EXPR_VAR@9215..9216
6587 WHITESPACE@9462..9466 "\n\n "6305 NAME@9215..9216
6588 MEMBER_FIELD_METHOD@9466..96006306 IDENT@9215..9216 "a"
6589 FIELD_NAME_FIXED@9466..94776307 COMMA@9216..9217 ","
6590 NAME@9466..94776308 WHITESPACE@9217..9221 "\n\n "
6591 IDENT@9466..9477 "resolvePath"6309 MEMBER_FIELD_METHOD@9221..9436
6592 PARAMS_DESC@9477..94836310 FIELD_NAME_FIXED@9221..9225
6593 L_PAREN@9477..9478 "("6311 NAME@9221..9225
6594 PARAM@9478..94796312 IDENT@9221..9225 "find"
6595 DESTRUCT_FULL@9478..94796313 PARAMS_DESC@9225..9237
6596 NAME@9478..94796314 L_PAREN@9225..9226 "("
6597 IDENT@9478..9479 "f"6315 PARAM@9226..9231
6598 COMMA@9479..9480 ","6316 DESTRUCT_FULL@9226..9231
6599 WHITESPACE@9480..9481 " "6317 NAME@9226..9231
6600 PARAM@9481..94826318 IDENT@9226..9231 "value"
6601 DESTRUCT_FULL@9481..94826319 COMMA@9231..9232 ","
6602 NAME@9481..94826320 WHITESPACE@9232..9233 " "
6603 IDENT@9481..9482 "r"6321 PARAM@9233..9236
6604 R_PAREN@9482..9483 ")"6322 DESTRUCT_FULL@9233..9236
6605 COLONCOLON@9483..9485 "::"6323 NAME@9233..9236
6606 WHITESPACE@9485..9490 "\n "6324 IDENT@9233..9236 "arr"
6607 EXPR_LOCAL@9490..96006325 R_PAREN@9236..9237 ")"
6608 LOCAL_KW@9490..9495 "local"6326 COLONCOLON@9237..9239 "::"
6609 WHITESPACE@9495..9496 " "6327 WHITESPACE@9239..9244 "\n "
6610 BIND_DESTRUCT@9496..95196328 EXPR_IF_THEN_ELSE@9244..9436
6611 DESTRUCT_FULL@9496..94996329 IF_KW@9244..9246 "if"
6612 NAME@9496..94996330 WHITESPACE@9246..9247 " "
6613 IDENT@9496..9499 "arr"6331 EXPR_UNARY@9247..9264
6614 WHITESPACE@9499..9500 " "6332 NOT@9247..9248 "!"
6615 ASSIGN@9500..9501 "="6333 EXPR_APPLY@9248..9264
6616 WHITESPACE@9501..9502 " "6334 EXPR_INDEX@9248..9259
6617 EXPR_APPLY@9502..95196335 EXPR_VAR@9248..9251
6618 EXPR_INDEX@9502..95116336 NAME@9248..9251
6619 EXPR_VAR@9502..95056337 IDENT@9248..9251 "std"
6620 NAME@9502..95056338 DOT@9251..9252 "."
6621 IDENT@9502..9505 "std"6339 NAME@9252..9259
6622 DOT@9505..9506 "."6340 IDENT@9252..9259 "isArray"
6623 NAME@9506..95116341 ARGS_DESC@9259..9264
6624 IDENT@9506..9511 "split"6342 L_PAREN@9259..9260 "("
6625 ARGS_DESC@9511..95196343 ARG@9260..9263
6626 L_PAREN@9511..9512 "("6344 EXPR_VAR@9260..9263
6627 ARG@9512..95136345 NAME@9260..9263
6628 EXPR_VAR@9512..95136346 IDENT@9260..9263 "arr"
6629 NAME@9512..95136347 R_PAREN@9263..9264 ")"
6630 IDENT@9512..9513 "f"6348 WHITESPACE@9264..9265 " "
6631 COMMA@9513..9514 ","6349 THEN_KW@9265..9269 "then"
6350 WHITESPACE@9269..9276 "\n "
6351 TRUE_EXPR@9276..9346
6352 EXPR_ERROR@9276..9346
6353 ERROR_KW@9276..9281 "error"
6354 WHITESPACE@9281..9282 " "
6355 EXPR_BINARY@9282..9346
6356 LHS_EXPR@9282..9330
6357 EXPR_STRING@9282..9330
6358 STRING_SINGLE@9282..9330 "'find second paramete ..."
6359 WHITESPACE@9330..9331 " "
6360 PLUS@9331..9332 "+"
6361 WHITESPACE@9332..9333 " "
6362 EXPR_APPLY@9333..9346
6363 EXPR_INDEX@9333..9341
6364 EXPR_VAR@9333..9336
6365 NAME@9333..9336
6366 IDENT@9333..9336 "std"
6367 DOT@9336..9337 "."
6368 NAME@9337..9341
6369 IDENT@9337..9341 "type"
6370 ARGS_DESC@9341..9346
6371 L_PAREN@9341..9342 "("
6372 ARG@9342..9345
6373 EXPR_VAR@9342..9345
6374 NAME@9342..9345
6375 IDENT@9342..9345 "arr"
6376 R_PAREN@9345..9346 ")"
6377 WHITESPACE@9346..9351 "\n "
6378 ELSE_KW@9351..9355 "else"
6379 WHITESPACE@9355..9362 "\n "
6380 FALSE_EXPR@9362..9436
6381 EXPR_APPLY@9362..9436
6382 EXPR_INDEX@9362..9372
6383 EXPR_VAR@9362..9365
6384 NAME@9362..9365
6385 IDENT@9362..9365 "std"
6386 DOT@9365..9366 "."
6387 NAME@9366..9372
6388 IDENT@9366..9372 "filter"
6389 ARGS_DESC@9372..9436
6390 L_PAREN@9372..9373 "("
6391 ARG@9373..9400
6392 EXPR_FUNCTION@9373..9400
6393 FUNCTION_KW@9373..9381 "function"
6394 PARAMS_DESC@9381..9384
6395 L_PAREN@9381..9382 "("
6396 PARAM@9382..9383
6397 DESTRUCT_FULL@9382..9383
6398 NAME@9382..9383
6399 IDENT@9382..9383 "i"
6400 R_PAREN@9383..9384 ")"
6401 WHITESPACE@9384..9385 " "
6402 EXPR_BINARY@9385..9400
6403 LHS_EXPR@9385..9391
6404 EXPR_INDEX_EXPR@9385..9391
6405 LHS_EXPR@9385..9388
6406 EXPR_VAR@9385..9388
6407 NAME@9385..9388
6408 IDENT@9385..9388 "arr"
6409 L_BRACK@9388..9389 "["
6410 EXPR_VAR@9389..9390
6411 NAME@9389..9390
6412 IDENT@9389..9390 "i"
6413 R_BRACK@9390..9391 "]"
6414 WHITESPACE@9391..9392 " "
6415 EQ@9392..9394 "=="
6416 WHITESPACE@9394..9395 " "
6417 EXPR_VAR@9395..9400
6418 NAME@9395..9400
6419 IDENT@9395..9400 "value"
6420 COMMA@9400..9401 ","
6421 WHITESPACE@9401..9402 " "
6422 ARG@9402..9435
6423 EXPR_APPLY@9402..9435
6424 EXPR_INDEX@9402..9411
6425 EXPR_VAR@9402..9405
6426 NAME@9402..9405
6427 IDENT@9402..9405 "std"
6428 DOT@9405..9406 "."
6429 NAME@9406..9411
6430 IDENT@9406..9411 "range"
6431 ARGS_DESC@9411..9435
6432 L_PAREN@9411..9412 "("
6433 ARG@9412..9413
6434 EXPR_NUMBER@9412..9413
6435 FLOAT@9412..9413 "0"
6436 COMMA@9413..9414 ","
6437 WHITESPACE@9414..9415 " "
6438 ARG@9415..9434
6439 EXPR_BINARY@9415..9434
6440 LHS_EXPR@9415..9430
6441 EXPR_APPLY@9415..9430
6442 EXPR_INDEX@9415..9425
6443 EXPR_VAR@9415..9418
6444 NAME@9415..9418
6445 IDENT@9415..9418 "std"
6446 DOT@9418..9419 "."
6447 NAME@9419..9425
6448 IDENT@9419..9425 "length"
6449 ARGS_DESC@9425..9430
6450 L_PAREN@9425..9426 "("
6451 ARG@9426..9429
6452 EXPR_VAR@9426..9429
6453 NAME@9426..9429
6454 IDENT@9426..9429 "arr"
6455 R_PAREN@9429..9430 ")"
6456 WHITESPACE@9430..9431 " "
6457 MINUS@9431..9432 "-"
6458 WHITESPACE@9432..9433 " "
6459 EXPR_NUMBER@9433..9434
6460 FLOAT@9433..9434 "1"
6461 R_PAREN@9434..9435 ")"
6462 R_PAREN@9435..9436 ")"
6463 COMMA@9436..9437 ","
6464 WHITESPACE@9437..9441 "\n\n "
6465 SINGLE_LINE_SLASH_COMMENT@9441..9451 "// Compat\n"
6466 WHITESPACE@9451..9453 " "
6467 MEMBER_FIELD_METHOD@9453..9563
6468 FIELD_NAME_FIXED@9453..9468
6469 NAME@9453..9468
6470 IDENT@9453..9468 "__compare_array"
6471 PARAMS_DESC@9468..9480
6472 L_PAREN@9468..9469 "("
6473 PARAM@9469..9473
6474 DESTRUCT_FULL@9469..9473
6475 NAME@9469..9473
6476 IDENT@9469..9473 "arr1"
6477 COMMA@9473..9474 ","
6478 WHITESPACE@9474..9475 " "
6479 PARAM@9475..9479
6480 DESTRUCT_FULL@9475..9479
6481 NAME@9475..9479
6482 IDENT@9475..9479 "arr2"
6483 R_PAREN@9479..9480 ")"
6484 COLONCOLON@9480..9482 "::"
6485 WHITESPACE@9482..9487 "\n "
6486 EXPR_ASSERT@9487..9563
6487 ASSERTION@9487..9532
6488 ASSERT_KW@9487..9493 "assert"
6489 WHITESPACE@9493..9494 " "
6490 LHS_EXPR@9494..9532
6491 EXPR_BINARY@9494..9532
6492 LHS_EXPR@9494..9511
6493 EXPR_APPLY@9494..9511
6494 EXPR_INDEX@9494..9505
6495 EXPR_VAR@9494..9497
6496 NAME@9494..9497
6497 IDENT@9494..9497 "std"
6498 DOT@9497..9498 "."
6499 NAME@9498..9505
6500 IDENT@9498..9505 "isArray"
6501 ARGS_DESC@9505..9511
6502 L_PAREN@9505..9506 "("
6503 ARG@9506..9510
6504 EXPR_VAR@9506..9510
6505 NAME@9506..9510
6506 IDENT@9506..9510 "arr1"
6507 R_PAREN@9510..9511 ")"
6508 WHITESPACE@9511..9512 " "
6509 AND@9512..9514 "&&"
6632 WHITESPACE@9514..9515 " "6510 WHITESPACE@9514..9515 " "
6633 ARG@9515..95186511 EXPR_APPLY@9515..9532
6634 EXPR_STRING@9515..95186512 EXPR_INDEX@9515..9526
6635 STRING_SINGLE@9515..9518 "'/'"6513 EXPR_VAR@9515..9518
6636 R_PAREN@9518..9519 ")"6514 NAME@9515..9518
6637 SEMI@9519..9520 ";"6515 IDENT@9515..9518 "std"
6638 WHITESPACE@9520..9525 "\n "6516 DOT@9518..9519 "."
6639 EXPR_APPLY@9525..96006517 NAME@9519..9526
6640 EXPR_INDEX@9525..95336518 IDENT@9519..9526 "isArray"
6641 EXPR_VAR@9525..95286519 ARGS_DESC@9526..9532
6642 NAME@9525..95286520 L_PAREN@9526..9527 "("
6643 IDENT@9525..9528 "std"6521 ARG@9527..9531
6644 DOT@9528..9529 "."6522 EXPR_VAR@9527..9531
6645 NAME@9529..95336523 NAME@9527..9531
6646 IDENT@9529..9533 "join"6524 IDENT@9527..9531 "arr2"
6647 ARGS_DESC@9533..96006525 R_PAREN@9531..9532 ")"
6648 L_PAREN@9533..9534 "("6526 SEMI@9532..9533 ";"
6649 ARG@9534..95376527 WHITESPACE@9533..9538 "\n "
6650 EXPR_STRING@9534..95376528 EXPR_APPLY@9538..9563
6651 STRING_SINGLE@9534..9537 "'/'"6529 EXPR_INDEX@9538..9551
6652 COMMA@9537..9538 ","6530 EXPR_VAR@9538..9541
6653 WHITESPACE@9538..9539 " "6531 NAME@9538..9541
6654 ARG@9539..95996532 IDENT@9538..9541 "std"
6655 EXPR_BINARY@9539..95996533 DOT@9541..9542 "."
6656 LHS_EXPR@9539..95936534 NAME@9542..9551
6657 EXPR_APPLY@9539..95936535 IDENT@9542..9551 "__compare"
6658 EXPR_INDEX@9539..95526536 ARGS_DESC@9551..9563
6659 EXPR_VAR@9539..95426537 L_PAREN@9551..9552 "("
6660 NAME@9539..95426538 ARG@9552..9556
6661 IDENT@9539..9542 "std"6539 EXPR_VAR@9552..9556
6662 DOT@9542..9543 "."6540 NAME@9552..9556
6663 NAME@9543..95526541 IDENT@9552..9556 "arr1"
6664 IDENT@9543..9552 "makeArray"6542 COMMA@9556..9557 ","
6665 ARGS_DESC@9552..95936543 WHITESPACE@9557..9558 " "
6666 L_PAREN@9552..9553 "("6544 ARG@9558..9562
6667 ARG@9553..95726545 EXPR_VAR@9558..9562
6668 EXPR_BINARY@9553..95726546 NAME@9558..9562
6669 LHS_EXPR@9553..95686547 IDENT@9558..9562 "arr2"
6670 EXPR_APPLY@9553..95686548 R_PAREN@9562..9563 ")"
6671 EXPR_INDEX@9553..95636549 COMMA@9563..9564 ","
6672 EXPR_VAR@9553..95566550 WHITESPACE@9564..9567 "\n "
6673 NAME@9553..95566551 MEMBER_FIELD_METHOD@9567..9631
6674 IDENT@9553..9556 "std"6552 FIELD_NAME_FIXED@9567..9579
6675 DOT@9556..9557 "."6553 NAME@9567..9579
6676 NAME@9557..95636554 IDENT@9567..9579 "__array_less"
6677 IDENT@9557..9563 "length"6555 PARAMS_DESC@9579..9591
6678 ARGS_DESC@9563..95686556 L_PAREN@9579..9580 "("
6679 L_PAREN@9563..9564 "("6557 PARAM@9580..9584
6680 ARG@9564..95676558 DESTRUCT_FULL@9580..9584
6681 EXPR_VAR@9564..95676559 NAME@9580..9584
6682 NAME@9564..95676560 IDENT@9580..9584 "arr1"
6683 IDENT@9564..9567 "arr"6561 COMMA@9584..9585 ","
6684 R_PAREN@9567..9568 ")"6562 WHITESPACE@9585..9586 " "
6685 WHITESPACE@9568..9569 " "6563 PARAM@9586..9590
6686 MINUS@9569..9570 "-"6564 DESTRUCT_FULL@9586..9590
6687 WHITESPACE@9570..9571 " "6565 NAME@9586..9590
6688 EXPR_NUMBER@9571..95726566 IDENT@9586..9590 "arr2"
6689 FLOAT@9571..9572 "1"6567 R_PAREN@9590..9591 ")"
6690 COMMA@9572..9573 ","6568 COLONCOLON@9591..9593 "::"
6691 WHITESPACE@9573..9574 " "6569 WHITESPACE@9593..9594 " "
6692 ARG@9574..95926570 EXPR_BINARY@9594..9631
6693 EXPR_FUNCTION@9574..95926571 LHS_EXPR@9594..9625
6694 FUNCTION_KW@9574..9582 "function"6572 EXPR_APPLY@9594..9625
6695 PARAMS_DESC@9582..95856573 EXPR_INDEX@9594..9613
6696 L_PAREN@9582..9583 "("6574 EXPR_VAR@9594..9597
6697 PARAM@9583..95846575 NAME@9594..9597
6698 DESTRUCT_FULL@9583..95846576 IDENT@9594..9597 "std"
6699 NAME@9583..95846577 DOT@9597..9598 "."
6700 IDENT@9583..9584 "i"6578 NAME@9598..9613
6701 R_PAREN@9584..9585 ")"6579 IDENT@9598..9613 "__compare_array"
6702 WHITESPACE@9585..9586 " "6580 ARGS_DESC@9613..9625
6703 EXPR_INDEX_EXPR@9586..95926581 L_PAREN@9613..9614 "("
6704 LHS_EXPR@9586..95896582 ARG@9614..9618
6705 EXPR_VAR@9586..95896583 EXPR_VAR@9614..9618
6706 NAME@9586..95896584 NAME@9614..9618
6707 IDENT@9586..9589 "arr"6585 IDENT@9614..9618 "arr1"
6708 L_BRACK@9589..9590 "["6586 COMMA@9618..9619 ","
6709 EXPR_VAR@9590..95916587 WHITESPACE@9619..9620 " "
6710 NAME@9590..95916588 ARG@9620..9624
6711 IDENT@9590..9591 "i"6589 EXPR_VAR@9620..9624
6712 R_BRACK@9591..9592 "]"6590 NAME@9620..9624
6713 R_PAREN@9592..9593 ")"6591 IDENT@9620..9624 "arr2"
6714 WHITESPACE@9593..9594 " "6592 R_PAREN@9624..9625 ")"
6715 PLUS@9594..9595 "+"
6716 WHITESPACE@9595..9596 " "
6717 EXPR_ARRAY@9596..9599
6718 L_BRACK@9596..9597 "["
6719 EXPR_VAR@9597..9598
6720 NAME@9597..9598
6721 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..10058
6727 FIELD_NAME_FIXED@9605..9610
6728 NAME@9605..9610
6729 IDENT@9605..9610 "prune"
6730 PARAMS_DESC@9610..9613
6731 L_PAREN@9610..9611 "("
6732 PARAM@9611..9612
6733 DESTRUCT_FULL@9611..9612
6734 NAME@9611..9612
6735 IDENT@9611..9612 "a"
6736 R_PAREN@9612..9613 ")"
6737 COLONCOLON@9613..9615 "::"
6738 WHITESPACE@9615..9620 "\n "
6739 EXPR_LOCAL@9620..10058
6740 LOCAL_KW@9620..9625 "local"
6741 WHITESPACE@9625..9626 " "6593 WHITESPACE@9625..9626 " "
6742 BIND_FUNCTION@9626..98236594 EQ@9626..9628 "=="
6743 NAME@9626..96356595 WHITESPACE@9628..9629 " "
6744 IDENT@9626..9635 "isContent"6596 EXPR_UNARY@9629..9631
6745 PARAMS_DESC@9635..96386597 MINUS@9629..9630 "-"
6746 L_PAREN@9635..9636 "("6598 EXPR_NUMBER@9630..9631
6747 PARAM@9636..96376599 FLOAT@9630..9631 "1"
6748 DESTRUCT_FULL@9636..96376600 COMMA@9631..9632 ","
6749 NAME@9636..96376601 WHITESPACE@9632..9635 "\n "
6750 IDENT@9636..9637 "b"6602 MEMBER_FIELD_METHOD@9635..9701
6751 R_PAREN@9637..9638 ")"6603 FIELD_NAME_FIXED@9635..9650
6752 WHITESPACE@9638..9639 " "6604 NAME@9635..9650
6753 ASSIGN@9639..9640 "="6605 IDENT@9635..9650 "__array_greater"
6754 WHITESPACE@9640..9647 "\n "6606 PARAMS_DESC@9650..9662
6755 EXPR_IF_THEN_ELSE@9647..98236607 L_PAREN@9650..9651 "("
6756 IF_KW@9647..9649 "if"6608 PARAM@9651..9655
6757 WHITESPACE@9649..9650 " "6609 DESTRUCT_FULL@9651..9655
6758 EXPR_BINARY@9650..96596610 NAME@9651..9655
6759 LHS_EXPR@9650..96516611 IDENT@9651..9655 "arr1"
6760 EXPR_VAR@9650..96516612 COMMA@9655..9656 ","
6761 NAME@9650..96516613 WHITESPACE@9656..9657 " "
6762 IDENT@9650..9651 "b"6614 PARAM@9657..9661
6763 WHITESPACE@9651..9652 " "6615 DESTRUCT_FULL@9657..9661
6764 EQ@9652..9654 "=="6616 NAME@9657..9661
6765 WHITESPACE@9654..9655 " "6617 IDENT@9657..9661 "arr2"
6766 EXPR_LITERAL@9655..96596618 R_PAREN@9661..9662 ")"
6767 NULL_KW@9655..9659 "null"6619 COLONCOLON@9662..9664 "::"
6768 WHITESPACE@9659..9660 " "6620 WHITESPACE@9664..9665 " "
6769 THEN_KW@9660..9664 "then"6621 EXPR_BINARY@9665..9701
6770 WHITESPACE@9664..9673 "\n "6622 LHS_EXPR@9665..9696
6771 TRUE_EXPR@9673..96786623 EXPR_APPLY@9665..9696
6772 EXPR_LITERAL@9673..96786624 EXPR_INDEX@9665..9684
6773 FALSE_KW@9673..9678 "false"6625 EXPR_VAR@9665..9668
6774 WHITESPACE@9678..9685 "\n "6626 NAME@9665..9668
6775 ELSE_KW@9685..9689 "else"6627 IDENT@9665..9668 "std"
6776 WHITESPACE@9689..9690 " "6628 DOT@9668..9669 "."
6777 FALSE_EXPR@9690..98236629 NAME@9669..9684
6778 EXPR_IF_THEN_ELSE@9690..98236630 IDENT@9669..9684 "__compare_array"
6779 IF_KW@9690..9692 "if"6631 ARGS_DESC@9684..9696
6780 WHITESPACE@9692..9693 " "6632 L_PAREN@9684..9685 "("
6781 EXPR_APPLY@9693..97076633 ARG@9685..9689
6782 EXPR_INDEX@9693..97046634 EXPR_VAR@9685..9689
6783 EXPR_VAR@9693..96966635 NAME@9685..9689
6784 NAME@9693..96966636 IDENT@9685..9689 "arr1"
6785 IDENT@9693..9696 "std"6637 COMMA@9689..9690 ","
6786 DOT@9696..9697 "."6638 WHITESPACE@9690..9691 " "
6787 NAME@9697..97046639 ARG@9691..9695
6788 IDENT@9697..9704 "isArray"6640 EXPR_VAR@9691..9695
6789 ARGS_DESC@9704..97076641 NAME@9691..9695
6790 L_PAREN@9704..9705 "("6642 IDENT@9691..9695 "arr2"
6791 ARG@9705..97066643 R_PAREN@9695..9696 ")"
6792 EXPR_VAR@9705..97066644 WHITESPACE@9696..9697 " "
6793 NAME@9705..97066645 EQ@9697..9699 "=="
6794 IDENT@9705..9706 "b"6646 WHITESPACE@9699..9700 " "
6795 R_PAREN@9706..9707 ")"6647 EXPR_NUMBER@9700..9701
6796 WHITESPACE@9707..9708 " "6648 FLOAT@9700..9701 "1"
6797 THEN_KW@9708..9712 "then"6649 COMMA@9701..9702 ","
6798 WHITESPACE@9712..9721 "\n "6650 WHITESPACE@9702..9705 "\n "
6799 TRUE_EXPR@9721..97386651 MEMBER_FIELD_METHOD@9705..9777
6800 EXPR_BINARY@9721..97386652 FIELD_NAME_FIXED@9705..9726
6801 LHS_EXPR@9721..97346653 NAME@9705..9726
6802 EXPR_APPLY@9721..97346654 IDENT@9705..9726 "__array_less_or_equal"
6803 EXPR_INDEX@9721..97316655 PARAMS_DESC@9726..9738
6804 EXPR_VAR@9721..97246656 L_PAREN@9726..9727 "("
6805 NAME@9721..97246657 PARAM@9727..9731
6806 IDENT@9721..9724 "std"6658 DESTRUCT_FULL@9727..9731
6807 DOT@9724..9725 "."6659 NAME@9727..9731
6808 NAME@9725..97316660 IDENT@9727..9731 "arr1"
6809 IDENT@9725..9731 "length"6661 COMMA@9731..9732 ","
6810 ARGS_DESC@9731..97346662 WHITESPACE@9732..9733 " "
6811 L_PAREN@9731..9732 "("6663 PARAM@9733..9737
6812 ARG@9732..97336664 DESTRUCT_FULL@9733..9737
6813 EXPR_VAR@9732..97336665 NAME@9733..9737
6814 NAME@9732..97336666 IDENT@9733..9737 "arr2"
6815 IDENT@9732..9733 "b"6667 R_PAREN@9737..9738 ")"
6816 R_PAREN@9733..9734 ")"6668 COLONCOLON@9738..9740 "::"
6817 WHITESPACE@9734..9735 " "6669 WHITESPACE@9740..9741 " "
6818 GT@9735..9736 ">"6670 EXPR_BINARY@9741..9777
6819 WHITESPACE@9736..9737 " "6671 LHS_EXPR@9741..9772
6820 EXPR_NUMBER@9737..97386672 EXPR_APPLY@9741..9772
6821 FLOAT@9737..9738 "0"6673 EXPR_INDEX@9741..9760
6822 WHITESPACE@9738..9745 "\n "6674 EXPR_VAR@9741..9744
6823 ELSE_KW@9745..9749 "else"6675 NAME@9741..9744
6824 WHITESPACE@9749..9750 " "6676 IDENT@9741..9744 "std"
6825 FALSE_EXPR@9750..98236677 DOT@9744..9745 "."
6826 EXPR_IF_THEN_ELSE@9750..98236678 NAME@9745..9760
6827 IF_KW@9750..9752 "if"6679 IDENT@9745..9760 "__compare_array"
6828 WHITESPACE@9752..9753 " "6680 ARGS_DESC@9760..9772
6829 EXPR_APPLY@9753..97686681 L_PAREN@9760..9761 "("
6830 EXPR_INDEX@9753..97656682 ARG@9761..9765
6831 EXPR_VAR@9753..97566683 EXPR_VAR@9761..9765
6832 NAME@9753..97566684 NAME@9761..9765
6833 IDENT@9753..9756 "std"6685 IDENT@9761..9765 "arr1"
6834 DOT@9756..9757 "."6686 COMMA@9765..9766 ","
6835 NAME@9757..97656687 WHITESPACE@9766..9767 " "
6836 IDENT@9757..9765 "isObject"6688 ARG@9767..9771
6837 ARGS_DESC@9765..97686689 EXPR_VAR@9767..9771
6838 L_PAREN@9765..9766 "("6690 NAME@9767..9771
6839 ARG@9766..97676691 IDENT@9767..9771 "arr2"
6840 EXPR_VAR@9766..97676692 R_PAREN@9771..9772 ")"
6841 NAME@9766..97676693 WHITESPACE@9772..9773 " "
6842 IDENT@9766..9767 "b"6694 LE@9773..9775 "<="
6843 R_PAREN@9767..9768 ")"6695 WHITESPACE@9775..9776 " "
6844 WHITESPACE@9768..9769 " "6696 EXPR_NUMBER@9776..9777
6845 THEN_KW@9769..9773 "then"6697 FLOAT@9776..9777 "0"
6846 WHITESPACE@9773..9782 "\n "6698 COMMA@9777..9778 ","
6847 TRUE_EXPR@9782..97996699 WHITESPACE@9778..9781 "\n "
6848 EXPR_BINARY@9782..97996700 MEMBER_FIELD_METHOD@9781..9856
6849 LHS_EXPR@9782..97956701 FIELD_NAME_FIXED@9781..9805
6850 EXPR_APPLY@9782..97956702 NAME@9781..9805
6851 EXPR_INDEX@9782..97926703 IDENT@9781..9805 "__array_greater_or_equal"
6852 EXPR_VAR@9782..97856704 PARAMS_DESC@9805..9817
6853 NAME@9782..97856705 L_PAREN@9805..9806 "("
6854 IDENT@9782..9785 "std"6706 PARAM@9806..9810
6855 DOT@9785..9786 "."6707 DESTRUCT_FULL@9806..9810
6856 NAME@9786..97926708 NAME@9806..9810
6857 IDENT@9786..9792 "length"6709 IDENT@9806..9810 "arr1"
6858 ARGS_DESC@9792..97956710 COMMA@9810..9811 ","
6859 L_PAREN@9792..9793 "("6711 WHITESPACE@9811..9812 " "
6860 ARG@9793..97946712 PARAM@9812..9816
6861 EXPR_VAR@9793..97946713 DESTRUCT_FULL@9812..9816
6862 NAME@9793..97946714 NAME@9812..9816
6863 IDENT@9793..9794 "b"6715 IDENT@9812..9816 "arr2"
6864 R_PAREN@9794..9795 ")"6716 R_PAREN@9816..9817 ")"
6865 WHITESPACE@9795..9796 " "6717 COLONCOLON@9817..9819 "::"
6866 GT@9796..9797 ">"6718 WHITESPACE@9819..9820 " "
6867 WHITESPACE@9797..9798 " "6719 EXPR_BINARY@9820..9856
6868 EXPR_NUMBER@9798..97996720 LHS_EXPR@9820..9851
6869 FLOAT@9798..9799 "0"6721 EXPR_APPLY@9820..9851
6870 WHITESPACE@9799..9806 "\n "6722 EXPR_INDEX@9820..9839
6871 ELSE_KW@9806..9810 "else"6723 EXPR_VAR@9820..9823
6872 WHITESPACE@9810..9819 "\n "6724 NAME@9820..9823
6873 FALSE_EXPR@9819..98236725 IDENT@9820..9823 "std"
6874 EXPR_LITERAL@9819..98236726 DOT@9823..9824 "."
6875 TRUE_KW@9819..9823 "true"6727 NAME@9824..9839
6876 SEMI@9823..9824 ";"6728 IDENT@9824..9839 "__compare_array"
6877 WHITESPACE@9824..9829 "\n "6729 ARGS_DESC@9839..9851
6878 EXPR_IF_THEN_ELSE@9829..100586730 L_PAREN@9839..9840 "("
6879 IF_KW@9829..9831 "if"6731 ARG@9840..9844
6880 WHITESPACE@9831..9832 " "6732 EXPR_VAR@9840..9844
6881 EXPR_APPLY@9832..98466733 NAME@9840..9844
6882 EXPR_INDEX@9832..98436734 IDENT@9840..9844 "arr1"
6883 EXPR_VAR@9832..98356735 COMMA@9844..9845 ","
6884 NAME@9832..98356736 WHITESPACE@9845..9846 " "
6885 IDENT@9832..9835 "std"6737 ARG@9846..9850
6886 DOT@9835..9836 "."6738 EXPR_VAR@9846..9850
6887 NAME@9836..98436739 NAME@9846..9850
6888 IDENT@9836..9843 "isArray"6740 IDENT@9846..9850 "arr2"
6889 ARGS_DESC@9843..98466741 R_PAREN@9850..9851 ")"
6890 L_PAREN@9843..9844 "("6742 WHITESPACE@9851..9852 " "
6891 ARG@9844..98456743 GE@9852..9854 ">="
6892 EXPR_VAR@9844..98456744 WHITESPACE@9854..9855 " "
6893 NAME@9844..98456745 EXPR_NUMBER@9855..9856
6894 IDENT@9844..9845 "a"6746 FLOAT@9855..9856 "0"
6895 R_PAREN@9845..9846 ")"6747 COMMA@9856..9857 ","
6896 WHITESPACE@9846..9847 " "6748 WHITESPACE@9857..9858 "\n"
6897 THEN_KW@9847..9851 "then"6749 R_BRACE@9858..9859 "}"
6898 WHITESPACE@9851..9858 "\n "6750 WHITESPACE@9859..9860 "\n"
6899 TRUE_EXPR@9858..9908
6900 EXPR_ARRAY_COMP@9858..9908
6901 L_BRACK@9858..9859 "["
6902 EXPR_APPLY@9859..9871
6903 EXPR_INDEX@9859..9868
6904 EXPR_VAR@9859..9862
6905 NAME@9859..9862
6906 IDENT@9859..9862 "std"
6907 DOT@9862..9863 "."
6908 NAME@9863..9868
6909 IDENT@9863..9868 "prune"
6910 ARGS_DESC@9868..9871
6911 L_PAREN@9868..9869 "("
6912 ARG@9869..9870
6913 EXPR_VAR@9869..9870
6914 NAME@9869..9870
6915 IDENT@9869..9870 "x"
6916 R_PAREN@9870..9871 ")"
6917 WHITESPACE@9871..9872 " "
6918 FOR_SPEC@9872..9882
6919 FOR_KW@9872..9875 "for"
6920 WHITESPACE@9875..9876 " "
6921 NAME@9876..9877
6922 IDENT@9876..9877 "x"
6923 WHITESPACE@9877..9878 " "
6924 IN_KW@9878..9880 "in"
6925 WHITESPACE@9880..9881 " "
6926 EXPR_VAR@9881..9882
6927 NAME@9881..9882
6928 IDENT@9881..9882 "a"
6929 WHITESPACE@9882..9883 " "
6930 IF_SPEC@9883..9907
6931 IF_KW@9883..9885 "if"
6932 WHITESPACE@9885..9886 " "
6933 EXPR_APPLY@9886..9907
6934 EXPR_VAR@9886..9895
6935 NAME@9886..9895
6936 IDENT@9886..9895 "isContent"
6937 ARGS_DESC@9895..9907
6938 L_PAREN@9895..9896 "("
6939 ARG@9896..9906
6940 EXPR_APPLY@9896..9906
6941 EXPR_INDEX@9896..9903
6942 EXPR_LITERAL@9896..9897
6943 DOLLAR@9896..9897 "$"
6944 DOT@9897..9898 "."
6945 NAME@9898..9903
6946 IDENT@9898..9903 "prune"
6947 ARGS_DESC@9903..9906
6948 L_PAREN@9903..9904 "("
6949 ARG@9904..9905
6950 EXPR_VAR@9904..9905
6951 NAME@9904..9905
6952 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..10058
6960 EXPR_IF_THEN_ELSE@9918..10058
6961 IF_KW@9918..9920 "if"
6962 WHITESPACE@9920..9921 " "
6963 EXPR_APPLY@9921..9936
6964 EXPR_INDEX@9921..9933
6965 EXPR_VAR@9921..9924
6966 NAME@9921..9924
6967 IDENT@9921..9924 "std"
6968 DOT@9924..9925 "."
6969 NAME@9925..9933
6970 IDENT@9925..9933 "isObject"
6971 ARGS_DESC@9933..9936
6972 L_PAREN@9933..9934 "("
6973 ARG@9934..9935
6974 EXPR_VAR@9934..9935
6975 NAME@9934..9935
6976 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..10045
6982 EXPR_OBJECT@9942..10045
6983 OBJ_BODY_COMP@9942..10045
6984 L_BRACE@9942..9943 "{"
6985 WHITESPACE@9943..9950 "\n "
6986 MEMBER_FIELD_NORMAL@9950..9968
6987 FIELD_NAME_DYNAMIC@9950..9953
6988 L_BRACK@9950..9951 "["
6989 EXPR_VAR@9951..9952
6990 NAME@9951..9952
6991 IDENT@9951..9952 "x"
6992 R_BRACK@9952..9953 "]"
6993 COLON@9953..9954 ":"
6994 WHITESPACE@9954..9955 " "
6995 EXPR_APPLY@9955..9968
6996 EXPR_INDEX@9955..9962
6997 EXPR_LITERAL@9955..9956
6998 DOLLAR@9955..9956 "$"
6999 DOT@9956..9957 "."
7000 NAME@9957..9962
7001 IDENT@9957..9962 "prune"
7002 ARGS_DESC@9962..9968
7003 L_PAREN@9962..9963 "("
7004 ARG@9963..9967
7005 EXPR_INDEX_EXPR@9963..9967
7006 LHS_EXPR@9963..9964
7007 EXPR_VAR@9963..9964
7008 NAME@9963..9964
7009 IDENT@9963..9964 "a"
7010 L_BRACK@9964..9965 "["
7011 EXPR_VAR@9965..9966
7012 NAME@9965..9966
7013 IDENT@9965..9966 "x"
7014 R_BRACK@9966..9967 "]"
7015 R_PAREN@9967..9968 ")"
7016 WHITESPACE@9968..9975 "\n "
7017 FOR_SPEC@9975..10003
7018 FOR_KW@9975..9978 "for"
7019 WHITESPACE@9978..9979 " "
7020 NAME@9979..9980
7021 IDENT@9979..9980 "x"
7022 WHITESPACE@9980..9981 " "
7023 IN_KW@9981..9983 "in"
7024 WHITESPACE@9983..9984 " "
7025 EXPR_APPLY@9984..10003
7026 EXPR_INDEX@9984..10000
7027 EXPR_VAR@9984..9987
7028 NAME@9984..9987
7029 IDENT@9984..9987 "std"
7030 DOT@9987..9988 "."
7031 NAME@9988..10000
7032 IDENT@9988..10000 "objectFields"
7033 ARGS_DESC@10000..10003
7034 L_PAREN@10000..10001 "("
7035 ARG@10001..10002
7036 EXPR_VAR@10001..10002
7037 NAME@10001..10002
7038 IDENT@10001..10002 "a"
7039 R_PAREN@10002..10003 ")"
7040 WHITESPACE@10003..10010 "\n "
7041 IF_SPEC@10010..10039
7042 IF_KW@10010..10012 "if"
7043 WHITESPACE@10012..10013 " "
7044 EXPR_APPLY@10013..10039
7045 EXPR_VAR@10013..10022
7046 NAME@10013..10022
7047 IDENT@10013..10022 "isContent"
7048 ARGS_DESC@10022..10039
7049 L_PAREN@10022..10023 "("
7050 ARG@10023..10038
7051 EXPR_APPLY@10023..10038
7052 EXPR_INDEX@10023..10032
7053 EXPR_VAR@10023..10026
7054 NAME@10023..10026
7055 IDENT@10023..10026 "std"
7056 DOT@10026..10027 "."
7057 NAME@10027..10032
7058 IDENT@10027..10032 "prune"
7059 ARGS_DESC@10032..10038
7060 L_PAREN@10032..10033 "("
7061 ARG@10033..10037
7062 EXPR_INDEX_EXPR@10033..10037
7063 LHS_EXPR@10033..10034
7064 EXPR_VAR@10033..10034
7065 NAME@10033..10034
7066 IDENT@10033..10034 "a"
7067 L_BRACK@10034..10035 "["
7068 EXPR_VAR@10035..10036
7069 NAME@10035..10036
7070 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..10058
7080 EXPR_VAR@10057..10058
7081 NAME@10057..10058
7082 IDENT@10057..10058 "a"
7083 COMMA@10058..10059 ","
7084 WHITESPACE@10059..10063 "\n\n "
7085 MEMBER_FIELD_METHOD@10063..10278
7086 FIELD_NAME_FIXED@10063..10067
7087 NAME@10063..10067
7088 IDENT@10063..10067 "find"
7089 PARAMS_DESC@10067..10079
7090 L_PAREN@10067..10068 "("
7091 PARAM@10068..10073
7092 DESTRUCT_FULL@10068..10073
7093 NAME@10068..10073
7094 IDENT@10068..10073 "value"
7095 COMMA@10073..10074 ","
7096 WHITESPACE@10074..10075 " "
7097 PARAM@10075..10078
7098 DESTRUCT_FULL@10075..10078
7099 NAME@10075..10078
7100 IDENT@10075..10078 "arr"
7101 R_PAREN@10078..10079 ")"
7102 COLONCOLON@10079..10081 "::"
7103 WHITESPACE@10081..10086 "\n "
7104 EXPR_IF_THEN_ELSE@10086..10278
7105 IF_KW@10086..10088 "if"
7106 WHITESPACE@10088..10089 " "
7107 EXPR_UNARY@10089..10106
7108 NOT@10089..10090 "!"
7109 EXPR_APPLY@10090..10106
7110 EXPR_INDEX@10090..10101
7111 EXPR_VAR@10090..10093
7112 NAME@10090..10093
7113 IDENT@10090..10093 "std"
7114 DOT@10093..10094 "."
7115 NAME@10094..10101
7116 IDENT@10094..10101 "isArray"
7117 ARGS_DESC@10101..10106
7118 L_PAREN@10101..10102 "("
7119 ARG@10102..10105
7120 EXPR_VAR@10102..10105
7121 NAME@10102..10105
7122 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..10188
7128 EXPR_ERROR@10118..10188
7129 ERROR_KW@10118..10123 "error"
7130 WHITESPACE@10123..10124 " "
7131 EXPR_BINARY@10124..10188
7132 LHS_EXPR@10124..10172
7133 EXPR_STRING@10124..10172
7134 STRING_SINGLE@10124..10172 "'find second paramete ..."
7135 WHITESPACE@10172..10173 " "
7136 PLUS@10173..10174 "+"
7137 WHITESPACE@10174..10175 " "
7138 EXPR_APPLY@10175..10188
7139 EXPR_INDEX@10175..10183
7140 EXPR_VAR@10175..10178
7141 NAME@10175..10178
7142 IDENT@10175..10178 "std"
7143 DOT@10178..10179 "."
7144 NAME@10179..10183
7145 IDENT@10179..10183 "type"
7146 ARGS_DESC@10183..10188
7147 L_PAREN@10183..10184 "("
7148 ARG@10184..10187
7149 EXPR_VAR@10184..10187
7150 NAME@10184..10187
7151 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..10278
7157 EXPR_APPLY@10204..10278
7158 EXPR_INDEX@10204..10214
7159 EXPR_VAR@10204..10207
7160 NAME@10204..10207
7161 IDENT@10204..10207 "std"
7162 DOT@10207..10208 "."
7163 NAME@10208..10214
7164 IDENT@10208..10214 "filter"
7165 ARGS_DESC@10214..10278
7166 L_PAREN@10214..10215 "("
7167 ARG@10215..10242
7168 EXPR_FUNCTION@10215..10242
7169 FUNCTION_KW@10215..10223 "function"
7170 PARAMS_DESC@10223..10226
7171 L_PAREN@10223..10224 "("
7172 PARAM@10224..10225
7173 DESTRUCT_FULL@10224..10225
7174 NAME@10224..10225
7175 IDENT@10224..10225 "i"
7176 R_PAREN@10225..10226 ")"
7177 WHITESPACE@10226..10227 " "
7178 EXPR_BINARY@10227..10242
7179 LHS_EXPR@10227..10233
7180 EXPR_INDEX_EXPR@10227..10233
7181 LHS_EXPR@10227..10230
7182 EXPR_VAR@10227..10230
7183 NAME@10227..10230
7184 IDENT@10227..10230 "arr"
7185 L_BRACK@10230..10231 "["
7186 EXPR_VAR@10231..10232
7187 NAME@10231..10232
7188 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..10242
7194 NAME@10237..10242
7195 IDENT@10237..10242 "value"
7196 COMMA@10242..10243 ","
7197 WHITESPACE@10243..10244 " "
7198 ARG@10244..10277
7199 EXPR_APPLY@10244..10277
7200 EXPR_INDEX@10244..10253
7201 EXPR_VAR@10244..10247
7202 NAME@10244..10247
7203 IDENT@10244..10247 "std"
7204 DOT@10247..10248 "."
7205 NAME@10248..10253
7206 IDENT@10248..10253 "range"
7207 ARGS_DESC@10253..10277
7208 L_PAREN@10253..10254 "("
7209 ARG@10254..10255
7210 EXPR_NUMBER@10254..10255
7211 FLOAT@10254..10255 "0"
7212 COMMA@10255..10256 ","
7213 WHITESPACE@10256..10257 " "
7214 ARG@10257..10276
7215 EXPR_BINARY@10257..10276
7216 LHS_EXPR@10257..10272
7217 EXPR_APPLY@10257..10272
7218 EXPR_INDEX@10257..10267
7219 EXPR_VAR@10257..10260
7220 NAME@10257..10260
7221 IDENT@10257..10260 "std"
7222 DOT@10260..10261 "."
7223 NAME@10261..10267
7224 IDENT@10261..10267 "length"
7225 ARGS_DESC@10267..10272
7226 L_PAREN@10267..10268 "("
7227 ARG@10268..10271
7228 EXPR_VAR@10268..10271
7229 NAME@10268..10271
7230 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..10276
7236 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"
72436751
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