(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 tok:<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 tok: <Id.VOp1_Percent '%'> arg_word: {<_> <Id.Lit_Other '*'>} ) ) <_> (${ 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: [154] ) ] ) (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: [172] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: (word.Empty) spids: [180] ) ] ) ] ) ) (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: [222] ) ] ) (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: [239] ) ] ) ] spids: [236 237 244 -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: [250] ) ] ) ] spids: [247 248 255 -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: [261] ) ] ) ] spids: [258 259 266 -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: [272] ) ] ) ] spids: [269 270 277 -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: [355] ) ] ) ] spids: [301 352] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ <string>)} spids: [364] ) ] ) ] ) ] spids: [280 281 372 -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: [378] ) ] ) ] spids: [375 376 383 -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: [389] ) ] ) ] spids: [386 387 394 -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: [400] ) ] ) ] spids: [397 398 405 -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: [411] ) ] ) ] spids: [408 409 416 -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: [422] ) ] ) ] spids: [419 420 427 -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: [433] ) ] ) ] spids: [430 431 438 -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: [444] ) ] ) ] spids: [441 442 449 -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: [455] ) ] ) ] spids: [452 453 460 -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: [539 566] ) ] ) ] spids: [515 536] ) ] ) (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: [591 598 633 -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: [636 639 800 -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: [803 804 1009 -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: [1012 1013 1034 -1] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__nil) op: assign_op.Equal rhs: {<_nil_0>} spids: [1046] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__true) op: assign_op.Equal rhs: {<true_0>} spids: [1049] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__false) op: assign_op.Equal rhs: {<fals_0>} spids: [1052] ) ] ) (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: [1145] ) ] ) (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: [1154] ) ] ) ] ) ) (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: [1231] ) ] ) (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: [1240 1291] ) ] 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: [1300] ) ] ) ] ) (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: [1314] ) ] ) ] ) ) (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: [1451] ) ] ) (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: [1460] ) ] ) ] ) ) (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: [1522] ) ] ) (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: [1531] ) ] ) ] ) ) (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 tok:<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: [1624] ) ] ) (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: [1653] ) ] ) ] spids: [1633 1646] ) ] 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: [1696] ) ] ) ] ) ] ) ) (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: [1765] ) ] ) (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: [1774] ) ] ) ] ) ) (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: [1836] ) ] ) (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: [1845] ) ] ) ] ) ) (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: [1953] ) ] ) (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: [2026] ) ] ) ] ) ) (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: [2205] ) ] ) ] ) ) (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: [2408] ) ] ) (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: [2417] ) ] ) ] ) ) (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: [2525] ) ] ) ] ) ) (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 tok: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) ) ) } spids: [2565] ) ] ) (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: [2588] ) ] ) ] ) ] ) ) (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 tok: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) ) ) } spids: [2623] ) ] ) ] ) ) (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 tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) ) ) } 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: [2697] ) ] ) ] spids: [2670 2694] ) ] 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 tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) ) ) } spids: [2715] ) ] ) ] ) ] ) ) (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 tok: <Id.VTest_ColonPlus ':+'> arg_word: {(${ Id.VSub_Name obj_data) <' '>} ) ) (${ Id.VSub_Star '*') ) } spids: [2817] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [2845] ) ] ) ] ) ) (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: [2880] ) ] ) ] spids: [2865 2877] ) ] 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: [2906] ) ] ) ] ) ] ) ) (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: [2958] ) ] ) ] ) ) (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 tok: <Id.VOp1_DPercent '%%'> arg_word: {<Id.Lit_Other '@'> <Id.Lit_Other '*'>} ) ) } {(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: [3122] ) ] ) (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: [3150] ) ] ) ] ) ) (command.ShFunction name: _map body: (BraceGroup children:[(C {<_map_with_type>} {<_list>} {(DQ (${ Id.VSub_At '@'))})]) ) ] spids: [10 25] ) ] )