(command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name __mal_types_included__))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:23) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__mal_types_included) op: assign_op.Equal rhs: {(true)} spids: [27] ) ] ) (C {(declare)} {(-A)} {(ANON)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__obj_magic) op: assign_op.Equal rhs: {(__5bal7)} spids: [38] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__keyw) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:42) command_list: (command.CommandList children: [ (C {(echo)} {(-en)} {(DQ (Id.Lit_Other '\\') (xCA) (Id.Lit_Other '\\') (x9E))}) ] ) ) } spids: [41] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__obj_hash_code) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:__obj_hash_code span_id:60) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0)}) ) } spids: [58] ) ] ) (command.ShFunction name: __new_obj_hash_code body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__obj_hash_code) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: __obj_hash_code span_id: 77 ) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [74] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name __obj_hash_code))} spids: [86] ) ] ) ] ) ) (command.ShFunction name: __new_obj body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1) (_) (${ Id.VSub_Name r))} spids: [107] ) ] ) ] ) ) (command.ShFunction name: __new_obj_like body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:135) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{('_*')}) ) (_) (${ Id.VSub_Name r) ) } spids: [132] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__ERROR) op: assign_op.Equal rhs: (word.Empty) spids: [153] ) ] ) (command.ShFunction name: _error body: (command.BraceGroup children: [ (C {(_string)} {(DQ (${ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__ERROR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name r))} spids: [171] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: (word.Empty) spids: [179] ) ] ) ] ) ) (command.ShFunction name: _obj_type body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'type=') (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:212) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 4)}) ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: (word.Empty) spids: [221] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name type))} arms: [ (case_arm pat_list: [{(symb)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (symbol))} spids: [238] ) ] ) ] spids: [235 236 243 -1] ) (case_arm pat_list: [{(list)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (list))} spids: [249] ) ] ) ] spids: [246 247 254 -1] ) (case_arm pat_list: [{(numb)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (number))} spids: [260] ) ] ) ] spids: [257 258 265 -1] ) (case_arm pat_list: [{(Id.KW_Func func)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (function))} spids: [271] ) ] ) ] spids: [268 269 276 -1] ) (case_arm pat_list: [{(strn)}] action: [ (C {(local)} {(Id.Lit_VarLike 's=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:288) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: { (DQ (braced_var_sub token: (Token id: Id.VSub_Number val: 1 span_id: 306 ) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: {(Id.Lit_Digits 0)} ) length: (arith_expr.ArithWord w: {(Id.Lit_Digits 1)} ) ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: { (DQ (braced_var_sub token: (Token id: Id.VSub_Number val: 1 span_id: 332 ) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: {(Id.Lit_Digits 0)} ) length: (arith_expr.ArithWord w: {(Id.Lit_Digits 2)} ) ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:349) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (keyword))} spids: [354] ) ] ) ] spids: [300 351] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (string))} spids: [363] ) ] ) ] ) ] spids: [279 280 371 -1] ) (case_arm pat_list: [{(_nil)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (nil))} spids: [377] ) ] ) ] spids: [374 375 382 -1] ) (case_arm pat_list: [{(true)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (true))} spids: [388] ) ] ) ] spids: [385 386 393 -1] ) (case_arm pat_list: [{(fals)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (false))} spids: [399] ) ] ) ] spids: [396 397 404 -1] ) (case_arm pat_list: [{(vect)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (vector))} spids: [410] ) ] ) ] spids: [407 408 415 -1] ) (case_arm pat_list: [{(hmap)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (hash_map))} spids: [421] ) ] ) ] spids: [418 419 426 -1] ) (case_arm pat_list: [{(atom)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (atom))} spids: [432] ) ] ) ] spids: [429 430 437 -1] ) (case_arm pat_list: [{(undf)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (undefined))} spids: [443] ) ] ) ] spids: [440 441 448 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (bash))} spids: [454] ) ] ) ] spids: [451 452 459 -1] ) ] ) ] ) ) (command.ShFunction name: '_equal?' body: (command.BraceGroup children: [ (command.Sentence child: (C {(_obj_type)} {(DQ (${ Id.VSub_Number 1))}) terminator: (Token id:Id.Op_Semi val:';' span_id:483) ) (C {(local)} {(Id.Lit_VarLike 'ot1=') (DQ (${ Id.VSub_Name r))}) (command.Sentence child: (C {(_obj_type)} {(DQ (${ Id.VSub_Number 2))}) terminator: (Token id:Id.Op_Semi val:';' span_id:502) ) (C {(local)} {(Id.Lit_VarLike 'ot2=') (DQ (${ Id.VSub_Name r))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ (${ Id.VSub_Name ot1))} right: {(DQ (${ Id.VSub_Name ot2))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:533) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {(_sequential) (Id.Lit_QMark '?')} {(DQ (${ Id.VSub_Number 1))} ) ] negated: T ) (command.Pipeline children: [ (C {(_sequential) (Id.Lit_QMark '?')} {(DQ (${ Id.VSub_Number 2))} ) ] negated: T ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:563) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:568) arg_word: {(1)} ) ] spids: [538 565] ) ] ) ] spids: [514 535] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name ot1))} arms: [ (case_arm pat_list: [{(string)} {(symbol)} {(keyword)} {(number)}] action: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:604) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } right: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:619) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 2))}) ) ) ) } ) ) ] spids: [590 597 632 -1] ) (case_arm pat_list: [{(list)} {(vector)}] action: [ (command.Sentence child: (C {(_count)} {(DQ (${ Id.VSub_Number 1))}) terminator: (Token id:Id.Op_Semi val:';' span_id:648) ) (C {(local)} {(Id.Lit_VarLike 'sz1=') (DQ (${ Id.VSub_Name r))}) (command.Sentence child: (C {(_count)} {(DQ (${ Id.VSub_Number 2))}) terminator: (Token id:Id.Op_Semi val:';' span_id:667) ) (C {(local)} {(Id.Lit_VarLike 'sz2=') (DQ (${ Id.VSub_Name r))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name sz1))} right: {(DQ (${ Id.VSub_Name sz2))} ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:699) arg_word: {(1)} ) ] ) (C {(local)} {(Id.Lit_VarLike 'a1=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:707) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:709) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) } ] ) } ) (C {(local)} {(Id.Lit_VarLike 'a2=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:724) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:726) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 2))}) ) ) } ] ) } ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:i span_id:745) ) right: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Name val:a1 span_id:749) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) ) } ) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_equal) (Id.Lit_QMark '?')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:a1 span_id:769) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(${ Id.VSub_Name i)}) ) ) ) } { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:a2 span_id:780) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(${ Id.VSub_Name i)}) ) ) ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:791) arg_word: {(1)} ) ] ) ] ) ) ] spids: [635 638 799 -1] ) (case_arm pat_list: [{(hash_map)}] action: [ (C {(local)} {(Id.Lit_VarLike 'hm1=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:811) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (C {(eval)} {(local)} {(Id.Lit_VarLike 'ks1=') (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:829) ) ('{!') (${ Id.VSub_Name hm1) ('[@]}') ) } ) (C {(local)} {(Id.Lit_VarLike 'hm2=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:843) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 2))}) ) ) ) } ) (C {(eval)} {(local)} {(Id.Lit_VarLike 'ks2=') (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:861) ) ('{!') (${ Id.VSub_Name hm2) ('[@]}') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ks1 span_id:875) prefix_op: (Id.VSub_Pound) ) ) } right: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ks2 span_id:884) prefix_op: (Id.VSub_Pound) ) ) } ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:892) arg_word: {(1)} ) ] ) (command.ForEach iter_name: k iter_words: [{(${ Id.VSub_Name ks1)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(eval)} {(Id.Lit_VarLike 'v1=') (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:915) ) ('{') (${ Id.VSub_Name hm1) ('[') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:921) ) (${ Id.VSub_Name k) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:925) ) (']}') ) } ) (C {(eval)} {(Id.Lit_VarLike 'v2=') (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:934) ) ('{') (${ Id.VSub_Name hm2) ('[') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:940) ) (${ Id.VSub_Name k) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:944) ) (']}') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name v1))} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:961) arg_word: {(1)} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name v2))} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:978) arg_word: {(1)} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_equal) (Id.Lit_QMark '?')} {(DQ (${ Id.VSub_Name v1))} {(DQ (${ Id.VSub_Name v2))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1000) arg_word: {(1)} ) ] ) ] ) ) ] spids: [802 803 1008 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Number 1))} right: {(DQ (${ Id.VSub_Number 2))} ) ) ] spids: [1011 1012 1033 -1] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__nil) op: assign_op.Equal rhs: {(_nil_0)} spids: [1045] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__true) op: assign_op.Equal rhs: {(true_0)} spids: [1048] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__false) op: assign_op.Equal rhs: {(fals_0)} spids: [1051] ) ] ) (command.ShFunction name: '_nil?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (_nil_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1075) ) ] ) ) (command.ShFunction name: '_true?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (true_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1099) ) ] ) ) (command.ShFunction name: '_false?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (fals_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1123) ) ] ) ) (command.ShFunction name: _symbol body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (symb_) (${ Id.VSub_Name r))} spids: [1144] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:1162) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\*' span_id:1165) ) } replace: {(__STAR__)} replace_mode: Id.Lit_Slash ) ) ) } spids: [1153] ) ] ) ] ) ) (command.ShFunction name: '_symbol?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (symb_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1199) ) ] ) ) (command.ShFunction name: _keyword body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'k=') (DQ (${ Id.VSub_Number 1))}) (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (strn_) (${ Id.VSub_Name r))} spids: [1230] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:1245) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:1271) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1288) ) ] action: [(C {(true)})] spids: [1239 1290] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:k) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name __keyw) (${ Id.VSub_Number 1))} spids: [1299] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:k span_id:1322) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\*' span_id:1325) ) } replace: {(__STAR__)} replace_mode: Id.Lit_Slash ) ) ) } spids: [1313] ) ] ) ] ) ) (command.ShFunction name: '_keyword?' body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (strn_)} ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1363) arg_word: {(1)} ) ] ) (C {(local)} {(Id.Lit_VarLike 's=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:1373) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:s span_id:1389) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:s span_id:1413) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) ] ) ] ) ) (command.ShFunction name: _number body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (numb_) (${ Id.VSub_Name r))} spids: [1450] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1459] ) ] ) ] ) ) (command.ShFunction name: '_number?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (numb_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1500) ) ] ) ) (command.ShFunction name: _string body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (strn_) (${ Id.VSub_Name r))} spids: [1521] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:1539) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\*' span_id:1542) ) } replace: {(__STAR__)} replace_mode: Id.Lit_Slash ) ) ) } spids: [1530] ) ] ) ] ) ) (command.ShFunction name: '_string?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (strn_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1576) ) ] ) ) (command.ShFunction name: _function body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (C {(eval)} { (DQ ('function ') (${ Id.VSub_Name __obj_magic) (_func_) (${ Id.VSub_Name r) (' () { ') (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:1615) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{(';')}) ) (' ; }') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (func_) (${ Id.VSub_Name r))} spids: [1623] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 2))}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1643) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __obj_magic) (_) (${ Id.VSub_Name r) ('@') (${ Id.VSub_Number 2) ('@') (${ Id.VSub_Number 3) ('@') (${ Id.VSub_Number 4) ) } spids: [1652] ) ] ) ] spids: [1632 1645] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name __obj_magic) (_) (${ Id.VSub_Name r))} spids: [1695] ) ] ) ] ) ] ) ) (command.ShFunction name: '_function?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (func_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1743) ) ] ) ) (command.ShFunction name: _list body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (list_) (${ Id.VSub_Name r))} spids: [1764] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Star '*'))} spids: [1773] ) ] ) ] ) ) (command.ShFunction name: '_list?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (list_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1814) ) ] ) ) (command.ShFunction name: _vector body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (vector_) (${ Id.VSub_Name r))} spids: [1835] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Star '*'))} spids: [1844] ) ] ) ] ) ) (command.ShFunction name: '_vector?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (vector_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1885) ) ] ) ) (command.ShFunction name: _hash_map body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (C {(local)} {(Id.Lit_VarLike 'name=') (DQ (hmap_) (${ Id.VSub_Name r))}) (C {(local)} {(Id.Lit_VarLike 'obj=') (DQ (${ Id.VSub_Name __obj_magic) (_) (${ Id.VSub_Name name)) } ) (command.Sentence child: (C {(declare)} {(-A)} {(-g)} {(${ Id.VSub_Name obj)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1940) ) (C {(eval)} {(DQ (${ Id.VSub_Name obj) ('=()'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name name))}) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name obj))} spids: [1952] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1973) cond: [ (command.Sentence child: (command.DBracket expr:(bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})) terminator: (Token id:Id.Op_Semi val:';' span_id:1984) ) ] body: (command.DoGroup children: [ (C {(eval)} {(${ Id.VSub_Name obj) (Id.Lit_LBracket '[') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1995) ) (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:1997) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2006)) (Id.Lit_ArrayLhsClose ']=') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2008)) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2012)) } ) (command.Sentence child: (C {(shift)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2016) ) (C {(shift)}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name name))} spids: [2025] ) ] ) ] ) ) (command.ShFunction name: '_hash_map?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (hmap_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2054) ) ] ) ) (command.ShFunction name: '_contains?' body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'obj=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2073) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (C {(eval)} {(Id.KW_DLeftBracket '[[')} { (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2090) ) ('{') (${ Id.VSub_Name obj) ('[') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2096) ) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2100) ) (']+isset}') ) } {(Id.Lit_RBracket ']') (Id.Lit_RBracket ']')} ) ] ) ) (command.ShFunction name: _copy_hash_map body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'orig_obj=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2123) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (C {(_hash_map)}) (C {(local)} {(Id.Lit_VarLike 'name=') (DQ (${ Id.VSub_Name r))}) (C {(local)} {(Id.Lit_VarLike 'obj=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2153) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name name))}) ) ) ) } ) (C {(local)} {(Id.Lit_VarLike 'temp=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2173) command_list: (command.CommandList children: [(C {(typeset)} {(-p)} {(${ Id.VSub_Name orig_obj)})] ) ) } ) (C {(eval)} { (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2187) suffix_op: (suffix_op.PatSub pat: {('declare -A ') (${ Id.VSub_Name orig_obj) ('=')} replace: {('declare -A -g ') (${ Id.VSub_Name obj) ('=')} replace_mode: Id.Lit_Pound ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name name))} spids: [2204] ) ] ) ] ) ) (command.ShFunction name: '_assoc!' body: (command.BraceGroup children: [ (command.Sentence child: (C {(local)} {(Id.Lit_VarLike 'obj=') (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2230) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:2239) ) (C {(shift)}) (C {(declare)} {(-A)} {(-g)} {(${ Id.VSub_Name obj)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:2260) cond: [ (command.Sentence child: (command.DBracket expr:(bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})) terminator: (Token id:Id.Op_Semi val:';' span_id:2271) ) ] body: (command.DoGroup children: [ (C {(eval)} {(${ Id.VSub_Name obj) (Id.Lit_LBracket '[') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2282) ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2286) ) (Id.Lit_ArrayLhsClose ']=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2288) ) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2292) ) } ) (command.Sentence child: (C {(shift)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2296) ) (C {(shift)}) ] ) ) ] ) ) (command.ShFunction name: '_dissoc!' body: (command.BraceGroup children: [ (command.Sentence child: (C {(local)} {(Id.Lit_VarLike 'obj=') (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2322) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:2331) ) (C {(shift)}) (C {(declare)} {(-A)} {(-g)} {(${ Id.VSub_Name obj)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:2352) cond: [ (command.Sentence child: (command.DBracket expr:(bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})) terminator: (Token id:Id.Op_Semi val:';' span_id:2363) ) ] body: (command.DoGroup children: [ (C {(eval)} {(unset)} {(${ Id.VSub_Name obj) (Id.Lit_LBracket '[') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2376) ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2380) ) (Id.Lit_RBracket ']') } ) (C {(shift)}) ] ) ) ] ) ) (command.ShFunction name: _atom body: (command.BraceGroup children: [ (C {(__new_obj_hash_code)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (atom_) (${ Id.VSub_Name r))} spids: [2407] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Star '*'))} spids: [2416] ) ] ) ] ) ) (command.ShFunction name: '_atom?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Number 1)} right: {(Id.Lit_Other '^') (atom_)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2457) ) ] ) ) (command.ShFunction name: '_sequential?' body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_list) (Id.Lit_QMark '?')} {(DQ (${ Id.VSub_Number 1))}) (C {(_vector) (Id.Lit_QMark '?')} {(DQ (${ Id.VSub_Number 1))}) ] ) ] ) ) (command.ShFunction name: _nth body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'temp=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:2510) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2512) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) } ] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2527) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(${ Id.VSub_Number 2)}) ) ) ) } spids: [2524] ) ] ) ] ) ) (command.ShFunction name: _first body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'temp=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2552) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2567) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{(' *')}) ) ) } spids: [2564] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name r))} {(Id.Lit_RBracket ']')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name __nil))} spids: [2586] ) ] ) ] ) ] ) ) (command.ShFunction name: _last body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'temp=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2609) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2624) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('* ')}) ) ) } spids: [2621] ) ] ) ] ) ) (command.ShFunction name: _rest body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'temp=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2652) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) (C {(_list)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2673) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('* ')} ) ) ) } right: {(DQ (${ Id.VSub_Name temp))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2688) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: (word.Empty) spids: [2693] ) ] ) ] spids: [2667 2690] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2720) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{('* ')}) ) ) } spids: [2711] ) ] ) ] ) ] ) ) (command.ShFunction name: '_empty?' body: (command.BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2753) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2765) ) ] ) ) (command.ShFunction name: '_conj!' body: (command.BraceGroup children: [ (command.Sentence child: (C {(local)} {(Id.Lit_VarLike 'obj=') (DQ (${ Id.VSub_Number 1))}) terminator: (Token id:Id.Op_Semi val:';' span_id:2790) ) (C {(shift)}) (C {(local)} {(Id.Lit_VarLike 'obj_data=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2800) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name obj))}) ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name obj))}) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:obj_data span_id:2821) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(${ Id.VSub_Name obj_data) (' ')} ) ) (${ Id.VSub_Star '*') ) } spids: [2812] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [2840] ) ] ) ] ) ) (command.ShFunction name: _count body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_nil) (Id.Lit_QMark '?')} {(DQ (${ Id.VSub_Number 1))}) terminator: (Token id:Id.Op_Semi val:';' span_id:2870) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (0))} spids: [2875] ) ] ) ] spids: [2860 2872] ) ] else_action: [ (C {(local)} {(Id.Lit_VarLike 'temp=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:2887) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2889) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) } ] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2904) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) ) } spids: [2901] ) ] ) ] ) ] ) ) (command.ShFunction name: _slice body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'temp=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:2930) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:2932) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) } ] ) } ) (C {(__new_obj_like)} {(DQ (${ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: ANON index: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Name r))}) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:temp span_id:2962) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(${ Id.VSub_Number 2)}) length: (arith_expr.ArithWord w:{(${ Id.VSub_Number 3)}) ) ) ) } spids: [2953] ) ] ) ] ) ) (command.ShFunction name: _map_with_type body: (command.BraceGroup children: [ (command.Sentence child: (C {(local)} {(Id.Lit_VarLike 'constructor=') (DQ (${ Id.VSub_Number 1))}) terminator: (Token id:Id.Op_Semi val:';' span_id:3008) ) (C {(shift)}) (command.Sentence child: (C {(local)} {(Id.Lit_VarLike 'f=') (DQ (${ Id.VSub_Number 1))}) terminator: (Token id:Id.Op_Semi val:';' span_id:3021) ) (C {(shift)}) (command.Sentence child: (C {(local)} {(Id.Lit_VarLike 'items=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ANON span_id:3031) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ Id.VSub_Number 1))}) ) ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:3041) ) (C {(shift)}) (command.Sentence child: (C {(eval)} {(DQ (${ Id.VSub_Name constructor))}) terminator: (Token id:Id.Op_Semi val:';' span_id:3053) ) (C {(local)} {(Id.Lit_VarLike 'new_seq=') (DQ (${ Id.VSub_Name r))}) (command.ForEach iter_name: v iter_words: [{(${ Id.VSub_Name items)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(eval)} { (braced_var_sub token: (Token id:Id.VSub_Name val:f span_id:3086) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{('@*')}) ) } {(DQ (${ Id.VSub_Name v))} {(DQ (${ Id.VSub_At '@'))} ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Name __ERROR))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: (word.Empty) spids: [3116] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3120) arg_word: {(1)} ) ] ) (C {(_conj) (Id.KW_Bang '!')} {(DQ (${ Id.VSub_Name new_seq))} {(DQ (${ Id.VSub_Name r))} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name new_seq))} spids: [3144] ) ] ) ] ) ) (command.ShFunction name: _map body: (command.BraceGroup children: [(C {(_map_with_type)} {(_list)} {(DQ (${ Id.VSub_At '@'))})] ) ) ] spids: [10 25] ) ] )