(command.CommandList
  children: [
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <err_exit>
      name: err_exit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <print>
              more_env: []
              words: [{<print>} {<-u2>} {<-n>} {(DQ <Id.Lit_BadBackslash '\\'> <t>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <print>
              more_env: []
              words: [
                {<print>}
                {<-u2>}
                {<-r>}
                {(${ Id.VSub_Name Command) <Id.Lit_LBracket '['> ($ Id.VSub_Number 1) 
                  <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'>
                }
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_At '@'>
                      var_name: '@'
                      suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>})
                      right: <Id.Arith_RBrace _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <let>
              more_env: []
              words: [{<let>} {<Id.Lit_VarLike 'Errors+='> <1>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'err_exit='> (SQ <'err_exit $LINENO'>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'Command='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'Command='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Command='> name:Command)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Number 0>
                var_name: 0
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VOp1_DPound '##'>
                    arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <integer>
      more_env: []
      words: [{<integer>} {<Id.Lit_VarLike 'Errors='> <0>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'tmp='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'tmp='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <mktemp>
                        more_env: []
                        words: [{<mktemp>} {<-dt>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          ]
          redirects: []
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {<mktemp>} {<-dt>} {<failed>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(DQ <'cd /; rm -rf '> ($ Id.VSub_DollarName tmp))} {<EXIT>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'foo='> (SQ <'print hello'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <foo>
                                more_env: []
                                words: [{<foo>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<hello>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'foo, where foo is alias for "print hello" failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [172 186]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <foo>
                                more_env: []
                                words: [{<foo>} {<world>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'hello world'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'foo world, where foo is alias for "print hello" failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [196 214]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'foo='> (SQ <'print hello '>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'bar='> <world>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <foo>
                                more_env: []
                                words: [{<foo>} {<bar>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'hello world'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'foo bar, where foo is alias for "print hello " failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [236 254]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <foo>
                                more_env: []
                                words: [
                                  {<foo>}
                                  {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\b'> ch:b) 
                                    <ar>
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'hello bar'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'foo \\bar, where foo is alias for "print hello " failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [264 283]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'bar='> (SQ <'foo world'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <bar>
                                more_env: []
                                words: [{<bar>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'hello world'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'bar, where bar is alias for "foo world" failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [300 316]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <alias>
                                more_env: []
                                words: [{<alias>} {<bar>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(DQ <'bar=\'foo world\''>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'alias bar, where bar is alias for "foo world" failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [326 344]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <unalias>
          more_env: []
          words: [{<unalias>} {<foo>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'unalias foo failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <alias>
          more_env: []
          words: [{<alias>} {<foo>}]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'alias for non-existent alias foo returns true'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<bar>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'bar='> (DQ <'print foo'> ($ Id.VSub_DollarName bar))}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'bar='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'bar='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bar='> name:bar)
          op: assign_op.Equal
          rhs: {<bar>}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <bar>
                                more_env: []
                                words: [{<bar>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<foo>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'alias bar, where bar is alias for "print foo$bar" failed'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [397 411]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<bar>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'bar='> (SQ <'print hello'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName bar)}
                      right: {(SQ )}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'alias bar cause variable bar to be set'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [432 445]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.KW_Bang '!'> <Id.KW_Bang '!'> <Id.Lit_Equals '='> <print>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <Id.KW_Bang '!'>
                                more_env: []
                                words: [{<Id.KW_Bang '!'> <Id.KW_Bang '!'>} {<hello>}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<hello>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'alias for !!=print not working'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [462 482]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'foo='> <echo>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <print>
                                more_env: []
                                words: [
                                  {<print>}
                                  {
                                    (DQ 
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <foo>
                                            more_env: []
                                            words: [{<foo>} {<bar>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    )
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<bar>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'alias in command substitution not working'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [497 520]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Subshell
      left: <Id.Op_LParen _>
      child: 
        (command.Simple
          blame_tok: <unalias>
          more_env: []
          words: [{<unalias>} {<foo>}]
          redirects: []
          do_fork: T
        )
      right: <Id.Right_Subshell _>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <foo>
                                more_env: []
                                words: [{<foo>} {<bar>}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<bar>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'alias not working after unalias in subshell'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [537 557]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <builtin>
      more_env: []
      words: [{<builtin>} {<-d>} {<rm>}]
      redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <whence>
                  more_env: []
                  words: [{<whence>} {<rm>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.LogicalNot
                      child: 
                        (bool_expr.WordTest
                          w: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <alias>
                                        more_env: []
                                        words: [{<alias>} {<-t>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<Id.Lit_VarLike 'rm='>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {(SQ <'tracked alias not set'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PATH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PATH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName PATH)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.WordTest
                      w: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <alias>
                                    more_env: []
                                    words: [{<alias>} {<-t>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <grep>
                                    more_env: []
                                    words: [{<grep>} {<Id.Lit_VarLike 'rm='>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {(SQ <'tracked alias not cleared'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          spids: [577 587]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <hash>
                      more_env: []
                      words: [{<hash>} {<-r>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.LogicalNot
                          child: 
                            (bool_expr.WordTest
                              w: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <hash>
                                        more_env: []
                                        words: [{<hash>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PATH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PATH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName tmp) <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> 
                      <'/usr/bin'>
                    }
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: (for_iter.Words words:[{<foo>} {<-foo>} {<-->}])
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <print>
                      more_env: []
                      words: [{<print>} {(SQ <':'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName tmp) <'/'> ($ Id.VSub_DollarName i)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <chmod>
                      more_env: []
                      words: [
                        {<chmod>}
                        {<Id.Lit_Other '+'> <x>}
                        {($ Id.VSub_DollarName tmp) <'/'> ($ Id.VSub_DollarName i)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <hash>
                          more_env: []
                          words: [{<hash>} {<-r>} {<-->} {($ Id.VSub_DollarName i)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <err_exit>
                          more_env: []
                          words: [
                            {<err_exit>}
                            {(DQ <'hash -r -- '> ($ Id.VSub_DollarName i) <' failed'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <hash>
                                        more_env: []
                                        words: [{<hash>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              right: 
                                {($ Id.VSub_DollarName i) <Id.BoolBinary_GlobEqual '='> 
                                  ($ Id.VSub_DollarName tmp) <'/'> ($ Id.VSub_DollarName i)
                                }
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <err_exit>
                          more_env: []
                          words: [
                            {<err_exit>}
                            {
                              (DQ <'hash -r -- '> ($ Id.VSub_DollarName i) <' failed, expected '> 
                                ($ Id.VSub_DollarName i) <'='> ($ Id.VSub_DollarName tmp) <'/'> ($ Id.VSub_DollarName i) <', got '> 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <hash>
                                      more_env: []
                                      words: [{<hash>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          spids: [648 669]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'hash -r failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.Simple
              blame_tok: <alias>
              more_env: []
              words: [{<alias>} {<Id.Lit_Colon ':'> <Id.Lit_VarLike 'pr='> <print>}]
              redirects: []
              do_fork: T
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'alias beginning with : fails'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.Simple
              blame_tok: <alias>
              more_env: []
              words: [{<alias>} {<p> <Id.Lit_Colon ':'> <Id.Lit_VarLike 'r='> <print>}]
              redirects: []
              do_fork: T
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'alias with : in name fails'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <unalias>
          more_env: []
          words: [{<unalias>} {<no_such_alias>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'unalias should return non-zero for unknown alias'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ControlFlow
      keyword: <Id.ControlFlow_Exit exit>
      arg_word: 
        {
          (word_part.ArithSub
            left: <Id.Left_DollarDParen '$(('>
            anode: 
              (arith_expr.TernaryOp
                cond: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Less
                    left: ($ Id.Lit_ArithVarLike Errors)
                    right: {<Id.Lit_Digits 125>}
                  )
                true_expr: ($ Id.Lit_ArithVarLike Errors)
                false_expr: {<Id.Lit_Digits 125>}
              )
            right: <Id.Right_DollarDParen _>
          )
        }
    )
  ]
)