(command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name __mal_types_included__))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) 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: <Id.Left_DollarParen '$('> child: (C {<echo>} {<-en>} {(DQ <Id.Lit_BadBackslash '\\'> <xCA> <Id.Lit_BadBackslash '\\'> <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: <Id.VSub_Name __obj_hash_code> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<0>}) ) } spids: [58] ) ] ) (command.ShFunction name: __new_obj_hash_code body: (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: <Id.Lit_ArithVarLike __obj_hash_code> right: {<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: (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: (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: <Id.VSub_Number 1> 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: (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: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'type='> (DQ (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<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: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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: <Id.VSub_Number 1> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<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: <Id.VSub_Number 1> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) 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: (BraceGroup children: [ (command.Sentence child: (C {<_obj_type>} {(DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<local>} {<Id.Lit_VarLike 'ot1='> (DQ (${ Id.VSub_Name r))}) (command.Sentence child: (C {<_obj_type>} {(DQ (${ Id.VSub_Number 2))}) terminator: <Id.Op_Semi _> ) (C {<local>} {<Id.Lit_VarLike 'ot2='> (DQ (${ Id.VSub_Name r))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> 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: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: {(DQ (${ Id.VSub_Number 1))} ) ) ) } right: { (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: {(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: <Id.Op_Semi _> ) (C {<local>} {<Id.Lit_VarLike 'sz1='> (DQ (${ Id.VSub_Name r))}) (command.Sentence child: (C {<_count>} {(DQ (${ Id.VSub_Number 2))}) terminator: <Id.Op_Semi _> ) (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: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<local>} {<Id.Lit_VarLike 'a1='> (sh_array_literal left: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: {(DQ (${ Id.VSub_Number 1))} ) ) } ] ) } ) (C {<local>} {<Id.Lit_VarLike 'a2='> (sh_array_literal left: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: {(DQ (${ Id.VSub_Number 2))} ) ) } ] ) } ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name a1> 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: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_equal> <Id.Lit_QMark '?'>} { (DQ (braced_var_sub token: <Id.VSub_Name a1> bracket_op: (bracket_op.ArrayIndex expr: {(${ Id.VSub_Name i)} ) ) ) } { (DQ (braced_var_sub token: <Id.VSub_Name a2> bracket_op: (bracket_op.ArrayIndex expr: {(${ Id.VSub_Name i)} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> 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: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) (C {<eval>} {<local>} {<Id.Lit_VarLike 'ks1='> (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{!'> (${ Id.VSub_Name hm1) <'[@]}'> ) } ) (C {<local>} {<Id.Lit_VarLike 'hm2='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 2))}) ) ) } ) (C {<eval>} {<local>} {<Id.Lit_VarLike 'ks2='> (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{!'> (${ 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: <Id.VSub_Name ks1> prefix_op: (Id.VSub_Pound) ) ) } right: { (DQ (braced_var_sub token: <Id.VSub_Name ks2> prefix_op: (Id.VSub_Pound) ) ) } ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> 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:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name hm1) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name k) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <']}'> ) } ) (C {<eval>} {<Id.Lit_VarLike 'v2='> (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name hm2) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name k) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <']}'> ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name v1))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> 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: <Id.ControlFlow_Return return> 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: <Id.ControlFlow_Return return> 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: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: '_true?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: '_false?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _symbol body: (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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} replace: {<__STAR__>} replace_mode: Id.Lit_Slash ) ) ) } spids: [1153] ) ] ) ] ) ) (command.ShFunction name: '_symbol?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _keyword body: (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: (condition.Shell commands: [ (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: <Id.VSub_Number 1> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<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: <Id.VSub_Number 1> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) 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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name k> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} replace: {<__STAR__>} replace_mode: Id.Lit_Slash ) ) ) } spids: [1313] ) ] ) ] ) ) (command.ShFunction name: '_keyword?' body: (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: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<local>} {<Id.Lit_VarLike 's='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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: <Id.VSub_Name s> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<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: <Id.VSub_Name s> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) ) } right: {(DQ (${ Id.VSub_Name __keyw))} ) ) ] ) ] ) ) (command.ShFunction name: _number body: (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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1459] ) ] ) ] ) ) (command.ShFunction name: '_number?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _string body: (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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} replace: {<__STAR__>} replace_mode: Id.Lit_Slash ) ) ) } spids: [1530] ) ] ) ] ) ) (command.ShFunction name: '_string?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _function body: (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: <Id.VSub_Number 1> 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: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 2))}) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:ANON index:{(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:{(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: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _list body: (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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Star '*'))} spids: [1773] ) ] ) ] ) ) (command.ShFunction name: '_list?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _vector body: (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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Star '*'))} spids: [1844] ) ] ) ] ) ) (command.ShFunction name: '_vector?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: _hash_map body: (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: <Id.Op_Semi _> ) (C {<eval>} {(DQ (${ Id.VSub_Name obj) <'=()'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name name))}) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name obj))} spids: [1952] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))}) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<eval>} {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <Id.Lit_ArrayLhsClose ']='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) } ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (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: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: '_contains?' body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'obj='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) (C {<eval>} {<Id.KW_DLeftBracket '[['>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name obj) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) <']+isset}'> ) } {<Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'>} ) ] ) ) (command.ShFunction name: _copy_hash_map body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'orig_obj='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Name name))}) ) ) } ) (C {<local>} {<Id.Lit_VarLike 'temp='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<typeset>} {<-p>} {(${ Id.VSub_Name orig_obj)}) ) } ) (C {<eval>} { (braced_var_sub token: <Id.VSub_Name temp> 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: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'obj='> (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) } ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))}) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<eval>} {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <Id.Lit_ArrayLhsClose ']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) } ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] ) ) ] ) ) (command.ShFunction name: '_dissoc!' body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'obj='> (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) } ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))}) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<eval>} {<unset>} {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <Id.Lit_RBracket ']'> } ) (C {<shift>}) ] ) ) ] ) ) (command.ShFunction name: _atom body: (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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Star '*'))} spids: [2416] ) ] ) ] ) ) (command.ShFunction name: '_atom?' body: (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: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: '_sequential?' body: (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: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'temp='> (sh_array_literal left: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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: <Id.VSub_Name temp> bracket_op: (bracket_op.ArrayIndex expr:{(${ Id.VSub_Number 2)}) ) ) } spids: [2524] ) ] ) ] ) ) (command.ShFunction name: _first body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'temp='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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: <Id.VSub_Name temp> 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: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'temp='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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: <Id.VSub_Name temp> suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'* '>}) ) ) } spids: [2621] ) ] ) ] ) ) (command.ShFunction name: _rest body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'temp='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) (C {<_list>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: <Id.VSub_Name temp> suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {<'* '>} ) ) ) } right: {(DQ (${ Id.VSub_Name temp))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:ANON index:{(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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name temp> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<'* '>}) ) ) } spids: [2711] ) ] ) ] ) ] ) ) (command.ShFunction name: '_empty?' body: (BraceGroup children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: '_conj!' body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'obj='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<local>} {<Id.Lit_VarLike 'obj_data='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Name obj))}) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name obj))}) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name obj_data> 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: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_nil> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) ] ) 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: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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: <Id.VSub_Name temp> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) ) } spids: [2901] ) ] ) ] ) ] ) ) (command.ShFunction name: _slice body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'temp='> (sh_array_literal left: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(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:{(DQ (${ Id.VSub_Name r))}) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name temp> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Slice begin: {(${ Id.VSub_Number 2)} length: {(${ Id.VSub_Number 3)} ) ) ) } spids: [2953] ) ] ) ] ) ) (command.ShFunction name: _map_with_type body: (BraceGroup children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'constructor='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'f='> (DQ (${ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'items='> (DQ (braced_var_sub token: <Id.VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))}) ) ) } ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Sentence child: (C {<eval>} {(DQ (${ Id.VSub_Name constructor))}) terminator: <Id.Op_Semi _> ) (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: <Id.VSub_Name f> 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: <Id.ControlFlow_Return return> 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: (BraceGroup children:[(C {<_map_with_type>} {<_list>} {(DQ (${ Id.VSub_At '@'))})]) ) ] spids: [10 25] ) ] )