(command.If
  arms: [
    (if_arm
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name __mal_types_included__))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__mal_types_included)
              op: assign_op.Equal
              rhs: {<true>}
              spids: [27]
            )
          ]
        )
        (C {<declare>} {<-A>} {<ANON>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__obj_magic)
              op: assign_op.Equal
              rhs: {<__5bal7>}
              spids: [38]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__keyw)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<echo>} {<-en>} 
                        {(DQ <Id.Lit_BadBackslash '\\'> <xCA> <Id.Lit_BadBackslash '\\'> <x9E>)}
                      )
                  )
                }
              spids: [41]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__obj_hash_code)
              op: assign_op.Equal
              rhs: 
                {
                  (braced_var_sub
                    token: <Id.VSub_Name __obj_hash_code>
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<0>})
                  )
                }
              spids: [58]
            )
          ]
        )
        (command.ShFunction
          name: __new_obj_hash_code
          body: 
            (BraceGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__obj_hash_code)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: <Id.Lit_ArithVarLike __obj_hash_code>
                                right: {<Id.Lit_Digits 1>}
                              )
                          )
                        }
                      spids: [74]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name __obj_hash_code))}
                      spids: [86]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: __new_obj
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1) <_> (${ Id.VSub_Name r))}
                      spids: [107]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: __new_obj_like
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<'_*'>})
                            ) <_> (${ Id.VSub_Name r)
                          )
                        }
                      spids: [132]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__ERROR)
              op: assign_op.Equal
              rhs: (word.Empty)
              spids: [153]
            )
          ]
        )
        (command.ShFunction
          name: _error
          body: 
            (BraceGroup
              children: [
                (C {<_string>} {(DQ (${ Id.VSub_Number 1))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__ERROR)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name r))}
                      spids: [171]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [179]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _obj_type
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'type='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: 
                          (suffix_op.Slice
                            begin: {<Id.Lit_Digits 0>}
                            length: {<Id.Lit_Digits 4>}
                          )
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [221]
                    )
                  ]
                )
                (command.Case
                  to_match: {(DQ (${ Id.VSub_Name type))}
                  arms: [
                    (case_arm
                      pat_list: [{<symb>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <symbol>)}
                              spids: [238]
                            )
                          ]
                        )
                      ]
                      spids: [235 236 243 -1]
                    )
                    (case_arm
                      pat_list: [{<list>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <list>)}
                              spids: [249]
                            )
                          ]
                        )
                      ]
                      spids: [246 247 254 -1]
                    )
                    (case_arm
                      pat_list: [{<numb>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <number>)}
                              spids: [260]
                            )
                          ]
                        )
                      ]
                      spids: [257 258 265 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.KW_Func func>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <function>)}
                              spids: [271]
                            )
                          ]
                        )
                      ]
                      spids: [268 269 276 -1]
                    )
                    (case_arm
                      pat_list: [{<strn>}]
                      action: [
                        (C {<local>} 
                          {<Id.Lit_VarLike 's='> 
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name ANON>
                                bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                              )
                            )
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Id.Op_DPipe]
                                          children: [
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (braced_var_sub
                                                          token: <Id.VSub_Number 1>
                                                          suffix_op: 
                                                            (suffix_op.Slice
                                                              begin: {<Id.Lit_Digits 0>}
                                                              length: {<Id.Lit_Digits 1>}
                                                            )
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ (${ Id.VSub_Name __keyw))}
                                                )
                                            )
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (braced_var_sub
                                                          token: <Id.VSub_Number 1>
                                                          suffix_op: 
                                                            (suffix_op.Slice
                                                              begin: {<Id.Lit_Digits 0>}
                                                              length: {<Id.Lit_Digits 2>}
                                                            )
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ (${ Id.VSub_Name __keyw))}
                                                )
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:r)
                                      op: assign_op.Equal
                                      rhs: {(DQ <keyword>)}
                                      spids: [354]
                                    )
                                  ]
                                )
                              ]
                              spids: [300 351]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:r)
                                  op: assign_op.Equal
                                  rhs: {(DQ <string>)}
                                  spids: [363]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                      spids: [279 280 371 -1]
                    )
                    (case_arm
                      pat_list: [{<_nil>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <nil>)}
                              spids: [377]
                            )
                          ]
                        )
                      ]
                      spids: [374 375 382 -1]
                    )
                    (case_arm
                      pat_list: [{<true>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <true>)}
                              spids: [388]
                            )
                          ]
                        )
                      ]
                      spids: [385 386 393 -1]
                    )
                    (case_arm
                      pat_list: [{<fals>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <false>)}
                              spids: [399]
                            )
                          ]
                        )
                      ]
                      spids: [396 397 404 -1]
                    )
                    (case_arm
                      pat_list: [{<vect>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <vector>)}
                              spids: [410]
                            )
                          ]
                        )
                      ]
                      spids: [407 408 415 -1]
                    )
                    (case_arm
                      pat_list: [{<hmap>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <hash_map>)}
                              spids: [421]
                            )
                          ]
                        )
                      ]
                      spids: [418 419 426 -1]
                    )
                    (case_arm
                      pat_list: [{<atom>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <atom>)}
                              spids: [432]
                            )
                          ]
                        )
                      ]
                      spids: [429 430 437 -1]
                    )
                    (case_arm
                      pat_list: [{<undf>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <undefined>)}
                              spids: [443]
                            )
                          ]
                        )
                      ]
                      spids: [440 441 448 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <bash>)}
                              spids: [454]
                            )
                          ]
                        )
                      ]
                      spids: [451 452 459 -1]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_equal?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: (C {<_obj_type>} {(DQ (${ Id.VSub_Number 1))})
                  terminator: <Id.Op_Semi _>
                )
                (C {<local>} {<Id.Lit_VarLike 'ot1='> (DQ (${ Id.VSub_Name r))})
                (command.Sentence
                  child: (C {<_obj_type>} {(DQ (${ Id.VSub_Number 2))})
                  terminator: <Id.Op_Semi _>
                )
                (C {<local>} {<Id.Lit_VarLike 'ot2='> (DQ (${ Id.VSub_Name r))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name ot1))}
                                      right: {(DQ (${ Id.VSub_Name ot2))}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Id.Op_DPipe]
                                          children: [
                                            (command.Pipeline
                                              children: [
                                                (C {<_sequential> <Id.Lit_QMark '?'>} 
                                                  {(DQ (${ Id.VSub_Number 1))}
                                                )
                                              ]
                                              negated: T
                                            )
                                            (command.Pipeline
                                              children: [
                                                (C {<_sequential> <Id.Lit_QMark '?'>} 
                                                  {(DQ (${ Id.VSub_Number 2))}
                                                )
                                              ]
                                              negated: T
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              spids: [538 565]
                            )
                          ]
                        )
                      ]
                      spids: [514 535]
                    )
                  ]
                )
                (command.Case
                  to_match: {(DQ (${ Id.VSub_Name ot1))}
                  arms: [
                    (case_arm
                      pat_list: [{<string>} {<symbol>} {<keyword>} {<number>}]
                      action: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <Id.VSub_Name ANON>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {(DQ (${ Id.VSub_Number 1))}
                                        )
                                    )
                                  )
                                }
                              right: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <Id.VSub_Name ANON>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {(DQ (${ Id.VSub_Number 2))}
                                        )
                                    )
                                  )
                                }
                            )
                        )
                      ]
                      spids: [590 597 632 -1]
                    )
                    (case_arm
                      pat_list: [{<list>} {<vector>}]
                      action: [
                        (command.Sentence
                          child: (C {<_count>} {(DQ (${ Id.VSub_Number 1))})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<local>} {<Id.Lit_VarLike 'sz1='> (DQ (${ Id.VSub_Name r))})
                        (command.Sentence
                          child: (C {<_count>} {(DQ (${ Id.VSub_Number 2))})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<local>} {<Id.Lit_VarLike 'sz2='> (DQ (${ Id.VSub_Name r))})
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name sz1))}
                                  right: {(DQ (${ Id.VSub_Name sz2))}
                                )
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                        )
                        (C {<local>} 
                          {<Id.Lit_VarLike 'a1='> 
                            (sh_array_literal
                              left: <Id.Op_LParen _>
                              words: [
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name ANON>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {(DQ (${ Id.VSub_Number 1))}
                                      )
                                  )
                                }
                              ]
                            )
                          }
                        )
                        (C {<local>} 
                          {<Id.Lit_VarLike 'a2='> 
                            (sh_array_literal
                              left: <Id.Op_LParen _>
                              words: [
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name ANON>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {(DQ (${ Id.VSub_Number 2))}
                                      )
                                  )
                                }
                              ]
                            )
                          }
                        )
                        (command.ForExpr
                          init: 
                            (arith_expr.BinaryAssign
                              op_id: Id.Arith_Equal
                              left: <Id.Lit_ArithVarLike i>
                              right: {<Id.Lit_Digits 0>}
                            )
                          cond: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Less
                              left: <Id.Lit_ArithVarLike i>
                              right: 
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name a1>
                                    prefix_op: (Id.VSub_Pound)
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                  )
                                }
                            )
                          update: 
                            (arith_expr.UnaryAssign
                              op_id: Id.Node_PostDPlus
                              child: <Id.Lit_ArithVarLike i>
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<_equal> <Id.Lit_QMark '?'>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name a1>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {(${ Id.VSub_Name i)}
                                              )
                                          )
                                        )
                                      } 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name a2>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {(${ Id.VSub_Name i)}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                      ]
                      spids: [635 638 799 -1]
                    )
                    (case_arm
                      pat_list: [{<hash_map>}]
                      action: [
                        (C {<local>} 
                          {<Id.Lit_VarLike 'hm1='> 
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name ANON>
                                bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                              )
                            )
                          }
                        )
                        (C {<eval>} {<local>} 
                          {<Id.Lit_VarLike 'ks1='> 
                            (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{!'> 
                              (${ Id.VSub_Name hm1) <'[@]}'>
                            )
                          }
                        )
                        (C {<local>} 
                          {<Id.Lit_VarLike 'hm2='> 
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name ANON>
                                bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 2))})
                              )
                            )
                          }
                        )
                        (C {<eval>} {<local>} 
                          {<Id.Lit_VarLike 'ks2='> 
                            (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{!'> 
                              (${ Id.VSub_Name hm2) <'[@]}'>
                            )
                          }
                        )
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name ks1>
                                          prefix_op: (Id.VSub_Pound)
                                        )
                                      )
                                    }
                                  right: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name ks2>
                                          prefix_op: (Id.VSub_Pound)
                                        )
                                      )
                                    }
                                )
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                        )
                        (command.ForEach
                          iter_name: k
                          iter_words: [{(${ Id.VSub_Name ks1)}]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (C {<eval>} 
                                  {<Id.Lit_VarLike 'v1='> 
                                    (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                      <'{'> (${ Id.VSub_Name hm1) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                      (${ Id.VSub_Name k) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <']}'>
                                    )
                                  }
                                )
                                (C {<eval>} 
                                  {<Id.Lit_VarLike 'v2='> 
                                    (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                      <'{'> (${ Id.VSub_Name hm2) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                      (${ Id.VSub_Name k) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <']}'>
                                    )
                                  }
                                )
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name v1))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name v2))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<_equal> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Name v1))} 
                                      {(DQ (${ Id.VSub_Name v2))}
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                      ]
                      spids: [802 803 1008 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Number 1))}
                              right: {(DQ (${ Id.VSub_Number 2))}
                            )
                        )
                      ]
                      spids: [1011 1012 1033 -1]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__nil)
              op: assign_op.Equal
              rhs: {<_nil_0>}
              spids: [1045]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__true)
              op: assign_op.Equal
              rhs: {<true_0>}
              spids: [1048]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__false)
              op: assign_op.Equal
              rhs: {<fals_0>}
              spids: [1051]
            )
          ]
        )
        (command.ShFunction
          name: '_nil?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <_nil_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: '_true?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <true_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: '_false?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <fals_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _symbol
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <symb_> (${ Id.VSub_Name r))}
                      spids: [1144]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)}
                                  replace: {<__STAR__>}
                                  replace_mode: Id.Lit_Slash
                                )
                            )
                          )
                        }
                      spids: [1153]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_symbol?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <symb_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _keyword
          body: 
            (BraceGroup
              children: [
                (C {<local>} {<Id.Lit_VarLike 'k='> (DQ (${ Id.VSub_Number 1))})
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <strn_> (${ Id.VSub_Name r))}
                      spids: [1230]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobEqual
                                          left: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: <Id.VSub_Number 1>
                                                  suffix_op: 
                                                    (suffix_op.Slice
                                                      begin: {<Id.Lit_Digits 0>}
                                                      length: {<Id.Lit_Digits 1>}
                                                    )
                                                )
                                              )
                                            }
                                          right: {(DQ (${ Id.VSub_Name __keyw))}
                                        )
                                    )
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobEqual
                                          left: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: <Id.VSub_Number 1>
                                                  suffix_op: 
                                                    (suffix_op.Slice
                                                      begin: {<Id.Lit_Digits 0>}
                                                      length: {<Id.Lit_Digits 2>}
                                                    )
                                                )
                                              )
                                            }
                                          right: {(DQ (${ Id.VSub_Name __keyw))}
                                        )
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [(C {<true>})]
                      spids: [1239 1290]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:k)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name __keyw) (${ Id.VSub_Number 1))}
                          spids: [1299]
                        )
                      ]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name k>
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)}
                                  replace: {<__STAR__>}
                                  replace_mode: Id.Lit_Slash
                                )
                            )
                          )
                        }
                      spids: [1313]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_keyword?'
          body: 
            (BraceGroup
              children: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <strn_>}
                        )
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                )
                (C {<local>} 
                  {<Id.Lit_VarLike 's='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                      )
                    )
                  }
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name s>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {<Id.Lit_Digits 0>}
                                      length: {<Id.Lit_Digits 1>}
                                    )
                                )
                              )
                            }
                          right: {(DQ (${ Id.VSub_Name __keyw))}
                        )
                    )
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name s>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {<Id.Lit_Digits 0>}
                                      length: {<Id.Lit_Digits 2>}
                                    )
                                )
                              )
                            }
                          right: {(DQ (${ Id.VSub_Name __keyw))}
                        )
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _number
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <numb_> (${ Id.VSub_Name r))}
                      spids: [1450]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1))}
                      spids: [1459]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_number?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <numb_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _string
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <strn_> (${ Id.VSub_Name r))}
                      spids: [1521]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)}
                                  replace: {<__STAR__>}
                                  replace_mode: Id.Lit_Slash
                                )
                            )
                          )
                        }
                      spids: [1530]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_string?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <strn_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _function
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (C {<eval>} 
                  {
                    (DQ <'function '> (${ Id.VSub_Name __obj_magic) <_func_> (${ Id.VSub_Name r) 
                      <' () { '> 
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<';'>})
                      ) <' ; }'>
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <func_> (${ Id.VSub_Name r))}
                      spids: [1623]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 2))})
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __obj_magic) <_> (${ Id.VSub_Name r) <'@'> 
                                    (${ Id.VSub_Number 2) <'@'> (${ Id.VSub_Number 3) <'@'> (${ Id.VSub_Number 4)
                                  )
                                }
                              spids: [1652]
                            )
                          ]
                        )
                      ]
                      spids: [1632 1645]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name __obj_magic) <_> (${ Id.VSub_Name r))}
                          spids: [1695]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_function?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <func_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _list
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <list_> (${ Id.VSub_Name r))}
                      spids: [1764]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Star '*'))}
                      spids: [1773]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_list?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <list_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _vector
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <vector_> (${ Id.VSub_Name r))}
                      spids: [1835]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Star '*'))}
                      spids: [1844]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_vector?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <vector_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: _hash_map
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (C {<local>} {<Id.Lit_VarLike 'name='> (DQ <hmap_> (${ Id.VSub_Name r))})
                (C {<local>} 
                  {<Id.Lit_VarLike 'obj='> 
                    (DQ (${ Id.VSub_Name __obj_magic) <_> (${ Id.VSub_Name name))
                  }
                )
                (command.Sentence
                  child: (C {<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)})
                  terminator: <Id.Op_Semi _>
                )
                (C {<eval>} {(DQ (${ Id.VSub_Name obj) <'=()'>)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name name))})
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name obj))}
                      spids: [1952]
                    )
                  ]
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<eval>} 
                          {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            ) 
                            (braced_var_sub
                              token: <Id.VSub_Name ANON>
                              bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                            ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <Id.Lit_ArrayLhsClose ']='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            ) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                          }
                        )
                        (command.Sentence
                          child: (C {<shift>})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<shift>})
                      ]
                    )
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name name))}
                      spids: [2025]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_hash_map?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <hmap_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: '_contains?'
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'obj='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                      )
                    )
                  }
                )
                (C {<eval>} {<Id.KW_DLeftBracket '[['>} 
                  {
                    (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> 
                      (${ Id.VSub_Name obj) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Number 2) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\"'>
                      ) <']+isset}'>
                    )
                  } {<Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'>}
                )
              ]
            )
        )
        (command.ShFunction
          name: _copy_hash_map
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'orig_obj='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                      )
                    )
                  }
                )
                (C {<_hash_map>})
                (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Name r))})
                (C {<local>} 
                  {<Id.Lit_VarLike 'obj='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Name name))})
                      )
                    )
                  }
                )
                (C {<local>} 
                  {<Id.Lit_VarLike 'temp='> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<typeset>} {<-p>} {(${ Id.VSub_Name orig_obj)})
                    )
                  }
                )
                (C {<eval>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name temp>
                      suffix_op: 
                        (suffix_op.PatSub
                          pat: {<'declare -A '> (${ Id.VSub_Name orig_obj) <'='>}
                          replace: {<'declare -A -g '> (${ Id.VSub_Name obj) <'='>}
                          replace_mode: Id.Lit_Pound
                        )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name name))}
                      spids: [2204]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_assoc!'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (C {<local>} 
                      {<Id.Lit_VarLike 'obj='> 
                        (braced_var_sub
                          token: <Id.VSub_Name ANON>
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                        )
                      }
                    )
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (C {<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<eval>} 
                          {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                            <Id.Lit_ArrayLhsClose ']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Number 2) 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            )
                          }
                        )
                        (command.Sentence
                          child: (C {<shift>})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<shift>})
                      ]
                    )
                )
              ]
            )
        )
        (command.ShFunction
          name: '_dissoc!'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (C {<local>} 
                      {<Id.Lit_VarLike 'obj='> 
                        (braced_var_sub
                          token: <Id.VSub_Name ANON>
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                        )
                      }
                    )
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (C {<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<eval>} {<unset>} 
                          {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <Id.Lit_RBracket ']'>
                          }
                        )
                        (C {<shift>})
                      ]
                    )
                )
              ]
            )
        )
        (command.ShFunction
          name: _atom
          body: 
            (BraceGroup
              children: [
                (C {<__new_obj_hash_code>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <atom_> (${ Id.VSub_Name r))}
                      spids: [2407]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Star '*'))}
                      spids: [2416]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_atom?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <atom_>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: '_sequential?'
          body: 
            (BraceGroup
              children: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<_list> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))})
                    (C {<_vector> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))})
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _nth
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'temp='> 
                    (sh_array_literal
                      left: <Id.Op_LParen _>
                      words: [
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name ANON>
                            bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          )
                        }
                      ]
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name temp>
                              bracket_op: (bracket_op.ArrayIndex expr:{(${ Id.VSub_Number 2)})
                            )
                          )
                        }
                      spids: [2524]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _first
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'temp='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name temp>
                              suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{<' *'>})
                            )
                          )
                        }
                      spids: [2564]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name r))} {<Id.Lit_RBracket ']'>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:r)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name __nil))}
                          spids: [2586]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _last
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'temp='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name temp>
                              suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'* '>})
                            )
                          )
                        }
                      spids: [2621]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _rest
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'temp='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                      )
                    )
                  }
                )
                (C {<_list>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: <Id.VSub_Name temp>
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VOp1_Pound
                                                  arg_word: {<'* '>}
                                                )
                                            )
                                          )
                                        }
                                      right: {(DQ (${ Id.VSub_Name temp))}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                              op: assign_op.Equal
                              rhs: (word.Empty)
                              spids: [2693]
                            )
                          ]
                        )
                      ]
                      spids: [2667 2690]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name temp>
                                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<'* '>})
                                )
                              )
                            }
                          spids: [2711]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: '_empty?'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name ANON>
                                  bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                                )
                              )
                            }
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
        )
        (command.ShFunction
          name: '_conj!'
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: (C {<local>} {<Id.Lit_VarLike 'obj='> (DQ (${ Id.VSub_Number 1))})
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (C {<local>} 
                  {<Id.Lit_VarLike 'obj_data='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name ANON>
                        bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Name obj))})
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name obj))})
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name obj_data>
                              suffix_op: 
                                (suffix_op.Unary
                                  op_id: Id.VTest_ColonPlus
                                  arg_word: {(${ Id.VSub_Name obj_data) <' '>}
                                )
                            ) (${ Id.VSub_Star '*')
                          )
                        }
                      spids: [2812]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1))}
                      spids: [2840]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _count
          body: 
            (BraceGroup
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<_nil> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <0>)}
                              spids: [2875]
                            )
                          ]
                        )
                      ]
                      spids: [2860 2872]
                    )
                  ]
                  else_action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'temp='> 
                        (sh_array_literal
                          left: <Id.Op_LParen _>
                          words: [
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name ANON>
                                bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                              )
                            }
                          ]
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:r)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name temp>
                                prefix_op: (Id.VSub_Pound)
                                bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                              )
                            }
                          spids: [2901]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _slice
          body: 
            (BraceGroup
              children: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'temp='> 
                    (sh_array_literal
                      left: <Id.Op_LParen _>
                      words: [
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name ANON>
                            bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          )
                        }
                      ]
                    )
                  }
                )
                (C {<__new_obj_like>} {(DQ (${ Id.VSub_Number 1))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.IndexedName name:ANON index:{(DQ (${ Id.VSub_Name r))})
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name temp>
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              suffix_op: 
                                (suffix_op.Slice
                                  begin: {(${ Id.VSub_Number 2)}
                                  length: {(${ Id.VSub_Number 3)}
                                )
                            )
                          )
                        }
                      spids: [2953]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _map_with_type
          body: 
            (BraceGroup
              children: [
                (command.Sentence
                  child: (C {<local>} {<Id.Lit_VarLike 'constructor='> (DQ (${ Id.VSub_Number 1))})
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (command.Sentence
                  child: (C {<local>} {<Id.Lit_VarLike 'f='> (DQ (${ Id.VSub_Number 1))})
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (command.Sentence
                  child: 
                    (C {<local>} 
                      {<Id.Lit_VarLike 'items='> 
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name ANON>
                            bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          )
                        )
                      }
                    )
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (command.Sentence
                  child: (C {<eval>} {(DQ (${ Id.VSub_Name constructor))})
                  terminator: <Id.Op_Semi _>
                )
                (C {<local>} {<Id.Lit_VarLike 'new_seq='> (DQ (${ Id.VSub_Name r))})
                (command.ForEach
                  iter_name: v
                  iter_words: [{(${ Id.VSub_Name items)}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<eval>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name f>
                              suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{<'@*'>})
                            )
                          } {(DQ (${ Id.VSub_Name v))} {(DQ (${ Id.VSub_At '@'))}
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Name __ERROR))})
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:r)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [3116]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                        )
                        (C {<_conj> <Id.KW_Bang '!'>} {(DQ (${ Id.VSub_Name new_seq))} 
                          {(DQ (${ Id.VSub_Name r))}
                        )
                      ]
                    )
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name new_seq))}
                      spids: [3144]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: _map
          body: (BraceGroup children:[(C {<_map_with_type>} {<_list>} {(DQ (${ Id.VSub_At '@'))})])
        )
      ]
      spids: [10 25]
    )
  ]
)