(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]
    )
  ]
)