(command.CommandList
  children: [
    (command.ShFunction
      name: test_action
      body: 
        (BraceGroup
          children: [
            (command.ShFunction
              name: _Dbg_errmsg
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:errmsgs)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [{(DQ ($ Id.VSub_At '$@'))}]
                              )
                            }
                          spids: [28]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShFunction
              name: _Dbg_msg
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:msgs)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [{(DQ ($ Id.VSub_At '$@'))}]
                              )
                            }
                          spids: [46]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShFunction
              name: _Dbg_msg_nocr
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:msgs)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [{(DQ ($ Id.VSub_At '$@'))}]
                              )
                            }
                          spids: [64]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShFunction
              name: _Dbg_adjust_filename
              body: (BraceGroup children:[(C {<echo>} {($ Id.VSub_Star '$*')})])
            )
            (command.ShFunction
              name: _Dbg_expand_filename
              body: (BraceGroup children:[(C {<echo>} {($ Id.VSub_Star '$*')})])
            )
            (C {<_Dbg_readin>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))})
            (C {<typeset>} {<-a>} {<msgs>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:msgs)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [121]
                )
              ]
            )
            (C {<_Dbg_set_action>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<_Dbg_set_action>} {<1>} {<2>} {<3>} {<4>} {<5>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<_Dbg_set_action>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))} 
              {<Id.Lit_VarLike 'x='> <1>} {<5>}
            )
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<assertEquals>} {<0>} {($ Id.VSub_DollarName '$_Dbg_action_count')})
            (C {<_Dbg_set_action>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))} {<5>} 
              {<Id.Lit_VarLike 'x='> <1>}
            )
            (C {<assertEquals>} 
              {(DQ <'Action 1 set in file '> ($ Id.VSub_DollarName '$shunit_file') <', line 5.'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name msgs>
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                  )
                )
              }
            )
            (C {<assertEquals>} {<1>} {($ Id.VSub_DollarName '$_Dbg_action_count')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:msgs)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [244]
                )
              ]
            )
            (C {<_Dbg_unset_action>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<_Dbg_unset_action>} {<1>} {<2>} {<3>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<_Dbg_unset_action>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))} {<foo>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<_Dbg_unset_action>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))} {<6>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:rc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [323]
                )
              ]
            )
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_DollarName '$rc'))})
            (C {<assertEquals>} 
              {(DQ <'No action found in file '> ($ Id.VSub_DollarName '$shunit_file') <', line 6.'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name errmsgs>
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                  )
                )
              }
            )
            (C {<assertEquals>} {<1>} {($ Id.VSub_DollarName '$_Dbg_action_count')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:msgs)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [367]
                )
              ]
            )
            (C {<_Dbg_unset_action>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))} {<5>})
            (C {<assertEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<assertEquals>} {(SQ <0>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name msgs>
                    prefix_op: (Id.VSub_Pound)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              }
            )
            (C {<assertEquals>} {<0>} {($ Id.VSub_DollarName '$_Dbg_action_count')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:errmsgs)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [425]
                )
              ]
            )
            (C {<_Dbg_unset_action>} {(DQ ($ Id.VSub_DollarName '$shunit_file'))} {<5>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<assertEquals>} 
              {(DQ <'No action found in file '> ($ Id.VSub_DollarName '$shunit_file') <', line 5.'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name errmsgs>
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                  )
                )
              }
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:msgs)
                      op: assign_op.Equal
                      rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                      spids: [469]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:errmsgs)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [474]
                )
              ]
            )
            (C {<_Dbg_set_action>} {($ Id.VSub_DollarName '$shunit_file')} {<6>} 
              {<Id.Lit_VarLike 'x='> <1>}
            )
            (C {<assertEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<assertEquals>} {(SQ <1>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name msgs>
                    prefix_op: (Id.VSub_Pound)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              }
            )
            (C {<assertEquals>} 
              {(DQ <'Action 2 set in file '> ($ Id.VSub_DollarName '$shunit_file') <', line 6.'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name msgs>
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                  )
                )
              }
            )
            (C {<assertEquals>} {<1>} {($ Id.VSub_DollarName '$_Dbg_action_count')})
            (C {<_Dbg_do_clear_action>} {<1>} {<2>} {<3>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (C {<_Dbg_do_clear_action>} {(${ Id.VSub_Name shunit_file)} {<bogus>})
            (C {<assertNotEquals>} {(SQ <0>)} {(DQ ($ Id.VSub_QMark '$?'))})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:msgs)
                      op: assign_op.Equal
                      rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                      spids: [590]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:errmsgs)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [595]
                )
              ]
            )
            (C {<_Dbg_do_clear_action>} {(${ Id.VSub_Name shunit_file) <Id.Lit_Colon ':'> <6>})
            (C {<assertEquals>} {<0>} {($ Id.VSub_DollarName '$_Dbg_action_count')})
            (C {<assertEquals>} {(SQ <1>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name msgs>
                    prefix_op: (Id.VSub_Pound)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              }
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(SQ <'/src/external-vcs/sourceforge/bashdb'>)} 
                      {<Id.Lit_Equals '='>} {(SQ )} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Something is wrong abs_top_srcdir is not set.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [635 652]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:abs_top_srcdir)
          op: assign_op.Equal
          rhs: {<'/src/external-vcs/sourceforge/bashdb'>}
          spids: [669]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:abs_top_srcdir)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name abs_top_srcdir>
                suffix_op: (suffix_op.Unary tok:<Id.VOp1_DPercent '%%'> arg_word:{<Id.Lit_Slash '/'>})
              ) <'/'>
            }
          spids: [675]
        )
      ]
    )
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'test/unit/helper.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'init/pre.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'init/vars.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/action.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/file.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/filecache.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/fns.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/journal.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/validate.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/alias.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'lib/help.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'command/action.sh'>})
    (C {<set>} {<-->})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_Number '$0')}
              right: {(${ Id.VSub_Name BASH_SOURCE)}
            )
        )
        (C {<.>} {(${ Id.VSub_Name shunit_file)})
      ]
    )
  ]
)