(command.If
  if_kw: <Id.KW_If if>
  arms: [
    (IfArm
      keyword: <Id.KW_If if>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-z>}
                    {(DQ (${ Id.VSub_Name __mal_types_included__))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      then_kw: <Id.KW_Then then>
      action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike '__mal_types_included='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__mal_types_included='>
              lhs: 
                (sh_lhs_expr.Name
                  left: <Id.Lit_VarLike '__mal_types_included='>
                  name: __mal_types_included
                )
              op: assign_op.Equal
              rhs: {<true>}
            )
          ]
          redirects: []
        )
        (command.Simple
          blame_tok: <declare>
          more_env: []
          words: [{<declare>} {<-A>} {<ANON>}]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__obj_magic='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__obj_magic='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__obj_magic='> name:__obj_magic)
              op: assign_op.Equal
              rhs: {<__5bal7>}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__keyw='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__keyw='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__keyw='> name:__keyw)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <echo>
                        more_env: []
                        words: [
                          {<echo>}
                          {<-en>}
                          {(DQ <Id.Lit_BadBackslash '\\'> <xCA> <Id.Lit_BadBackslash '\\'> <x9E>)}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__obj_hash_code='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__obj_hash_code='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__obj_hash_code='> name:__obj_hash_code)
              op: assign_op.Equal
              rhs: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name __obj_hash_code>
                    var_name: __obj_hash_code
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<0>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
            )
          ]
          redirects: []
        )
        (command.ShFunction
          name_tok: <__new_obj_hash_code>
          name: __new_obj_hash_code
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike '__obj_hash_code='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike '__obj_hash_code='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike '__obj_hash_code='>
                          name: __obj_hash_code
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            left: <Id.Left_DollarDParen '$(('>
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: ($ Id.Lit_ArithVarLike __obj_hash_code)
                                right: {<Id.Lit_Digits 1>}
                              )
                            right: <Id.Right_DollarDParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name __obj_hash_code))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <__new_obj>
          name: __new_obj
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1) <_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <__new_obj_like>
          name: __new_obj_like
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Number 1>
                              var_name: 1
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_Percent '%'>
                                  arg_word: {<_> <Id.Lit_Other '*'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            ) <_> (${ Id.VSub_Name r)
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__ERROR='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__ERROR='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__ERROR='> name:__ERROR)
              op: assign_op.Equal
              rhs: (rhs_word__Empty)
            )
          ]
          redirects: []
        )
        (command.ShFunction
          name_tok: <_error>
          name: _error
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <_string>
                  more_env: []
                  words: [{<_string>} {(DQ (${ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike '__ERROR='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike '__ERROR='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__ERROR='> name:__ERROR)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_obj_type>
          name: _obj_type
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'type='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Number 1>
                          var_name: 1
                          suffix_op: 
                            (suffix_op.Slice
                              begin: {<Id.Lit_Digits 0>}
                              length: {<Id.Lit_Digits 4>}
                            )
                          right: <Id.Arith_RBrace _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name type))})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <symb>
                      pattern: (pat.Words words:[{<symb>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <symbol>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <list>
                      pattern: (pat.Words words:[{<list>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <list>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <numb>
                      pattern: (pat.Words words:[{<numb>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <number>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.KW_Func func>
                      pattern: (pat.Words words:[{<Id.KW_Func func>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <function>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <strn>
                      pattern: (pat.Words words:[{<strn>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [
                            {<local>}
                            {<Id.Lit_VarLike 's='> 
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ANON>
                                  var_name: ANON
                                  bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          children: [
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Number 1>
                                                          var_name: 1
                                                          suffix_op: 
                                                            (suffix_op.Slice
                                                              begin: {<Id.Lit_Digits 0>}
                                                              length: {<Id.Lit_Digits 1>}
                                                            )
                                                          right: <Id.Arith_RBrace _>
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ (${ Id.VSub_Name __keyw))}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Number 1>
                                                          var_name: 1
                                                          suffix_op: 
                                                            (suffix_op.Slice
                                                              begin: {<Id.Lit_Digits 0>}
                                                              length: {<Id.Lit_Digits 2>}
                                                            )
                                                          right: <Id.Arith_RBrace _>
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ (${ Id.VSub_Name __keyw))}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          ]
                                          ops: [<Id.Op_DPipe _>]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'r='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'r='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                                      op: assign_op.Equal
                                      rhs: {(DQ <keyword>)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [301 352]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'r='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'r='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                                  op: assign_op.Equal
                                  rhs: {(DQ <string>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <_nil>
                      pattern: (pat.Words words:[{<_nil>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <nil>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <true>
                      pattern: (pat.Words words:[{<true>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <true>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <fals>
                      pattern: (pat.Words words:[{<fals>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <false>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <vect>
                      pattern: (pat.Words words:[{<vect>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <vector>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <hmap>
                      pattern: (pat.Words words:[{<hmap>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <hash_map>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <atom>
                      pattern: (pat.Words words:[{<atom>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <atom>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <undf>
                      pattern: (pat.Words words:[{<undf>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <undefined>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <bash>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_equal>
          name: '_equal?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <_obj_type>
                      more_env: []
                      words: [{<_obj_type>} {(DQ (${ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'ot1='> (DQ (${ Id.VSub_Name r))}]
                  redirects: []
                  do_fork: T
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <_obj_type>
                      more_env: []
                      words: [{<_obj_type>} {(DQ (${ Id.VSub_Number 2))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'ot2='> (DQ (${ Id.VSub_Name r))}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name ot1))}
                                      right: {(DQ (${ Id.VSub_Name ot2))}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          children: [
                                            (command.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <_sequential>
                                                  more_env: []
                                                  words: [
                                                    {<_sequential> <Id.Lit_QMark '?'>}
                                                    {(DQ (${ Id.VSub_Number 1))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                            (command.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <_sequential>
                                                  more_env: []
                                                  words: [
                                                    {<_sequential> <Id.Lit_QMark '?'>}
                                                    {(DQ (${ Id.VSub_Number 2))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          ]
                                          ops: [<Id.Op_DPipe _>]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              spids: [539 566]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      spids: [515 536]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name ot1))})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <string>
                      pattern: (pat.Words words:[{<string>} {<symbol>} {<keyword>} {<number>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name ANON>
                                      var_name: ANON
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {(DQ (${ Id.VSub_Number 1))}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                              right: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name ANON>
                                      var_name: ANON
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {(DQ (${ Id.VSub_Number 2))}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <list>
                      pattern: (pat.Words words:[{<list>} {<vector>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_count>
                              more_env: []
                              words: [{<_count>} {(DQ (${ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [{<local>} {<Id.Lit_VarLike 'sz1='> (DQ (${ Id.VSub_Name r))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_count>
                              more_env: []
                              words: [{<_count>} {(DQ (${ Id.VSub_Number 2))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [{<local>} {<Id.Lit_VarLike 'sz2='> (DQ (${ Id.VSub_Name r))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name sz1))}
                                  right: {(DQ (${ Id.VSub_Name sz2))}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [
                            {<local>}
                            {<Id.Lit_VarLike 'a1='> 
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name ANON>
                                      var_name: ANON
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {(DQ (${ Id.VSub_Number 1))}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [
                            {<local>}
                            {<Id.Lit_VarLike 'a2='> 
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name ANON>
                                      var_name: ANON
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {(DQ (${ Id.VSub_Number 2))}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ForExpr
                          keyword: <Id.KW_For for>
                          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: 
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name a1>
                                    var_name: a1
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          update: 
                            (arith_expr.UnaryAssign
                              op_id: Id.Node_PostDPlus
                              child: ($ Id.Lit_ArithVarLike i)
                            )
                          body: 
                            (command.DoGroup
                              left: <Id.KW_Do do>
                              children: [
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <_equal>
                                      more_env: []
                                      words: [
                                        {<_equal> <Id.Lit_QMark '?'>}
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Name a1>
                                              var_name: a1
                                              bracket_op: 
                                                (bracket_op.ArrayIndex
                                                  expr: {(${ Id.VSub_Name i)}
                                                )
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Name a2>
                                              var_name: a2
                                              bracket_op: 
                                                (bracket_op.ArrayIndex
                                                  expr: {(${ Id.VSub_Name i)}
                                                )
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <hash_map>
                      pattern: (pat.Words words:[{<hash_map>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [
                            {<local>}
                            {<Id.Lit_VarLike 'hm1='> 
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ANON>
                                  var_name: ANON
                                  bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {<local>}
                            {<Id.Lit_VarLike 'ks1='> 
                              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                <'{!'> (${ Id.VSub_Name hm1) <'[@]}'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <local>
                          more_env: []
                          words: [
                            {<local>}
                            {<Id.Lit_VarLike 'hm2='> 
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ANON>
                                  var_name: ANON
                                  bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 2))})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {<local>}
                            {<Id.Lit_VarLike 'ks2='> 
                              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                <'{!'> (${ Id.VSub_Name hm2) <'[@]}'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ks1>
                                          var_name: ks1
                                          prefix_op: <Id.VSub_Pound '#'>
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ks2>
                                          var_name: ks2
                                          prefix_op: <Id.VSub_Pound '#'>
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.ForEach
                          keyword: <Id.KW_For for>
                          iter_names: [k]
                          iterable: (for_iter.Words words:[{(${ Id.VSub_Name ks1)}])
                          semi_tok: <Id.Op_Semi _>
                          body: 
                            (command.DoGroup
                              left: <Id.KW_Do do>
                              children: [
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [
                                    {<eval>}
                                    {<Id.Lit_VarLike 'v1='> 
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'{'> (${ Id.VSub_Name hm1) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                        (${ Id.VSub_Name k) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <']}'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [
                                    {<eval>}
                                    {<Id.Lit_VarLike 'v2='> 
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'{'> (${ Id.VSub_Name hm2) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                        (${ Id.VSub_Name k) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <']}'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name v1))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name v2))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <_equal>
                                      more_env: []
                                      words: [
                                        {<_equal> <Id.Lit_QMark '?'>}
                                        {(DQ (${ Id.VSub_Name v1))}
                                        {(DQ (${ Id.VSub_Name v2))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Number 1))}
                              right: {(DQ (${ Id.VSub_Number 2))}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__nil='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__nil='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__nil='> name:__nil)
              op: assign_op.Equal
              rhs: {<_nil_0>}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__true='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__true='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__true='> name:__true)
              op: assign_op.Equal
              rhs: {<true_0>}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '__false='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__false='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__false='> name:__false)
              op: assign_op.Equal
              rhs: {<fals_0>}
            )
          ]
          redirects: []
        )
        (command.ShFunction
          name_tok: <_nil>
          name: '_nil?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <_nil_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_true>
          name: '_true?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <true_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_false>
          name: '_false?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <fals_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_symbol>
          name: _symbol
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <symb_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Number 1>
                              var_name: 1
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: 
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\*'>
                                        ch: '*'
                                      )
                                    }
                                  replace: {<__STAR__>}
                                  replace_mode: Id.Lit_Slash
                                  slash_tok: <Id.VOp2_Slash _>
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_symbol>
          name: '_symbol?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <symb_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_keyword>
          name: _keyword
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'k='> (DQ (${ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <strn_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  children: [
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobEqual
                                          left: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Number 1>
                                                  var_name: 1
                                                  suffix_op: 
                                                    (suffix_op.Slice
                                                      begin: {<Id.Lit_Digits 0>}
                                                      length: {<Id.Lit_Digits 1>}
                                                    )
                                                  right: <Id.Arith_RBrace _>
                                                )
                                              )
                                            }
                                          right: {(DQ (${ Id.VSub_Name __keyw))}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobEqual
                                          left: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Number 1>
                                                  var_name: 1
                                                  suffix_op: 
                                                    (suffix_op.Slice
                                                      begin: {<Id.Lit_Digits 0>}
                                                      length: {<Id.Lit_Digits 2>}
                                                    )
                                                  right: <Id.Arith_RBrace _>
                                                )
                                              )
                                            }
                                          right: {(DQ (${ Id.VSub_Name __keyw))}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [1240 1291]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'k='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'k='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name __keyw) (${ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name k>
                              var_name: k
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: 
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\*'>
                                        ch: '*'
                                      )
                                    }
                                  replace: {<__STAR__>}
                                  replace_mode: Id.Lit_Slash
                                  slash_tok: <Id.VOp2_Slash _>
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_keyword>
          name: '_keyword?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.AndOr
                  children: [
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <strn_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 's='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name s>
                                  var_name: s
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {<Id.Lit_Digits 0>}
                                      length: {<Id.Lit_Digits 1>}
                                    )
                                  right: <Id.Arith_RBrace _>
                                )
                              )
                            }
                          right: {(DQ (${ Id.VSub_Name __keyw))}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name s>
                                  var_name: s
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {<Id.Lit_Digits 0>}
                                      length: {<Id.Lit_Digits 2>}
                                    )
                                  right: <Id.Arith_RBrace _>
                                )
                              )
                            }
                          right: {(DQ (${ Id.VSub_Name __keyw))}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_number>
          name: _number
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <numb_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_number>
          name: '_number?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <numb_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_string>
          name: _string
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <strn_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Number 1>
                              var_name: 1
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: 
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\*'>
                                        ch: '*'
                                      )
                                    }
                                  replace: {<__STAR__>}
                                  replace_mode: Id.Lit_Slash
                                  slash_tok: <Id.VOp2_Slash _>
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_string>
          name: '_string?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <strn_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_function>
          name: _function
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [
                    {<eval>}
                    {
                      (DQ <'function '> (${ Id.VSub_Name __obj_magic) <_func_> (${ Id.VSub_Name r) 
                        <' () { '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Number 1>
                          var_name: 1
                          suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<';'>})
                          right: <Id.Right_DollarBrace '}'>
                        ) <' ; }'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <func_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 2))})
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_ArrayLhsOpen 'ANON['>
                              lhs: 
                                (sh_lhs_expr.IndexedName
                                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                                  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)
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1633 1646]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'ANON['>
                              name: ANON
                              index: {(DQ (${ Id.VSub_Name r))}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name __obj_magic) <_> (${ Id.VSub_Name r))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_function>
          name: '_function?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <func_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_list>
          name: _list
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <list_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Star '*'))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_list>
          name: '_list?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <list_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_vector>
          name: _vector
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <vector_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Star '*'))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_vector>
          name: '_vector?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <vector_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_hash_map>
          name: _hash_map
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'name='> (DQ <hmap_> (${ Id.VSub_Name r))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'obj='> 
                      (DQ (${ Id.VSub_Name __obj_magic) <_> (${ Id.VSub_Name name))
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <declare>
                      more_env: []
                      words: [{<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [{<eval>} {(DQ (${ Id.VSub_Name obj) <'=()'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name name))}
                        )
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name obj))}
                    )
                  ]
                  redirects: []
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                                ch: '"'
                              ) 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name ANON>
                                var_name: ANON
                                bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                                right: <Id.Right_DollarBrace '}'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <Id.Lit_ArrayLhsClose ']='> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                                ch: '"'
                              ) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name name))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_hash_map>
          name: '_hash_map?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <hmap_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_contains>
          name: '_contains?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'obj='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [
                    {<eval>}
                    {<Id.KW_DLeftBracket '[['>}
                    {
                      (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> 
                        (${ Id.VSub_Name obj) <'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Number 2) 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <']+isset}'>
                      )
                    }
                    {<Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_copy_hash_map>
          name: _copy_hash_map
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'orig_obj='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_hash_map>
                  more_env: []
                  words: [{<_hash_map>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Name r))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'obj='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Name name))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'temp='> 
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <typeset>
                            more_env: []
                            words: [{<typeset>} {<-p>} {(${ Id.VSub_Name orig_obj)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [
                    {<eval>}
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name temp>
                        var_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
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name name))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_assoc>
          name: '_assoc!'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'obj='> 
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name ANON>
                            var_name: ANON
                            bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <declare>
                  more_env: []
                  words: [{<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)}]
                  redirects: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                                ch: '"'
                              ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                              <Id.Lit_ArrayLhsClose ']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Number 2) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                                ch: '"'
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_dissoc>
          name: '_dissoc!'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'obj='> 
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name ANON>
                            var_name: ANON
                            bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <declare>
                  more_env: []
                  words: [{<declare>} {<-A>} {<-g>} {(${ Id.VSub_Name obj)}]
                  redirects: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Number 1))})
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {<unset>}
                            {(${ Id.VSub_Name obj) <Id.Lit_LBracket '['> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                                ch: '"'
                              ) (${ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                              <Id.Lit_RBracket ']'>
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_atom>
          name: _atom
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <__new_obj_hash_code>
                  more_env: []
                  words: [{<__new_obj_hash_code>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ <atom_> (${ Id.VSub_Name r))}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Star '*'))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_atom>
          name: '_atom?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(${ Id.VSub_Number 1)}
                          right: {<Id.Lit_Other '^'> <atom_>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_sequential>
          name: '_sequential?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_list>
                      more_env: []
                      words: [{<_list> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <_vector>
                      more_env: []
                      words: [{<_vector> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_nth>
          name: _nth
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'temp='> 
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name ANON>
                              var_name: ANON
                              bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name temp>
                              var_name: temp
                              bracket_op: (bracket_op.ArrayIndex expr:{(${ Id.VSub_Number 2)})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_first>
          name: _first
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'temp='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name temp>
                              var_name: temp
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_DPercent '%%'>
                                  arg_word: {<' '> <Id.Lit_Other '*'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [{<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name r))} {<Id.Lit_RBracket ']'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'r='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'r='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name __nil))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_last>
          name: _last
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'temp='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name temp>
                              var_name: temp
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_DPound '##'>
                                  arg_word: {<Id.Lit_Other '*'> <' '>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_rest>
          name: _rest
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'temp='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_list>
                  more_env: []
                  words: [{<_list>}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Name temp>
                                              var_name: temp
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op: <Id.VOp1_Pound '#'>
                                                  arg_word: {<Id.Lit_Other '*'> <' '>}
                                                )
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                      right: {(DQ (${ Id.VSub_Name temp))}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_ArrayLhsOpen 'ANON['>
                              lhs: 
                                (sh_lhs_expr.IndexedName
                                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                                  name: ANON
                                  index: {(DQ (${ Id.VSub_Name r))}
                                )
                              op: assign_op.Equal
                              rhs: (rhs_word__Empty)
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [2670 2694]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'ANON['>
                              name: ANON
                              index: {(DQ (${ Id.VSub_Name r))}
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name temp>
                                  var_name: temp
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<Id.Lit_Other '*'> <' '>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_empty>
          name: '_empty?'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ANON>
                                  var_name: ANON
                                  bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_conj>
          name: '_conj!'
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<Id.Lit_VarLike 'obj='> (DQ (${ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'obj_data='> 
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name ANON>
                          var_name: ANON
                          bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Name obj))})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name obj))}
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name obj_data>
                              var_name: obj_data
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VTest_ColonPlus _>
                                  arg_word: {(${ Id.VSub_Name obj_data) <' '>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            ) (${ Id.VSub_Star '*')
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_count>
          name: _count
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <_nil>
                                  more_env: []
                                  words: [{<_nil> <Id.Lit_QMark '?'>} {(DQ (${ Id.VSub_Number 1))}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'r='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'r='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                              op: assign_op.Equal
                              rhs: {(DQ <0>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [2865 2877]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'temp='> 
                          (ShArrayLiteral
                            left: <Id.Op_LParen _>
                            words: [
                              {
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name ANON>
                                  var_name: ANON
                                  bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              }
                            ]
                            right: <Id.Right_ShArrayLiteral _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'r='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'r='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name temp>
                                var_name: temp
                                prefix_op: <Id.VSub_Pound '#'>
                                bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_slice>
          name: _slice
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<Id.Lit_VarLike 'temp='> 
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name ANON>
                              var_name: ANON
                              bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <__new_obj_like>
                  more_env: []
                  words: [{<__new_obj_like>} {(DQ (${ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_ArrayLhsOpen 'ANON['>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_ArrayLhsOpen 'ANON['>
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          left: <Id.Lit_ArrayLhsOpen 'ANON['>
                          name: ANON
                          index: {(DQ (${ Id.VSub_Name r))}
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name temp>
                              var_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)}
                                )
                              right: <Id.Arith_RBrace _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_map_with_type>
          name: _map_with_type
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<Id.Lit_VarLike 'constructor='> (DQ (${ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<Id.Lit_VarLike 'f='> (DQ (${ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'items='> 
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name ANON>
                              var_name: ANON
                              bracket_op: (bracket_op.ArrayIndex expr:{(DQ (${ Id.VSub_Number 1))})
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {(DQ (${ Id.VSub_Name constructor))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'new_seq='> (DQ (${ Id.VSub_Name r))}]
                  redirects: []
                  do_fork: T
                )
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [v]
                  iterable: (for_iter.Words words:[{(${ Id.VSub_Name items)}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name f>
                                var_name: f
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_DPercent '%%'>
                                    arg_word: {<Id.Lit_Other '@'> <Id.Lit_Other '*'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {(DQ (${ Id.VSub_Name v))}
                            {(DQ (${ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: (bool_expr.WordTest w:{(DQ (${ Id.VSub_Name __ERROR))})
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'r='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'r='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.Simple
                          blame_tok: <_conj>
                          more_env: []
                          words: [
                            {<_conj> <Id.KW_Bang '!'>}
                            {(DQ (${ Id.VSub_Name new_seq))}
                            {(DQ (${ Id.VSub_Name r))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'r='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'r='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name new_seq))}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.ShFunction
          name_tok: <_map>
          name: _map
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <_map_with_type>
                  more_env: []
                  words: [{<_map_with_type>} {<_list>} {(DQ (${ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
      ]
      spids: [10 25]
    )
  ]
  else_action: []
  fi_kw: <Id.KW_Fi fi>
  redirects: []
)