(command.CommandList
  children: [
    (command.ShFunction
      name: test_save_restore_IFS_PS4
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<Id.Lit_VarLike '_Dbg_space_IFS='> (SQ <' '>)})
            (C {<typeset>} {<Id.Lit_VarLike 'old_IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))})
            (C {<typeset>} {<Id.Lit_VarLike '_Dbg_old_set_opts='> ($ Id.VSub_Hyphen '$-')})
            (C {<typeset>} {<Id.Lit_VarLike 'new_ifs='> (SQ <' \t'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_set_nullglob)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [50]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$new_ifs'))}
                  spids: [54]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS4)
                  op: assign_op.Equal
                  rhs: {(SQ <123>)}
                  spids: [60]
                )
              ]
            )
            (C {<_Dbg_set_debugger_entry>})
            (C {<assertEquals>} {(DQ ($ Id.VSub_DollarName '$_Dbg_space_IFS'))} 
              {(DQ ($ Id.VSub_DollarName '$IFS'))}
            )
            (C {<assertNotEquals>} {(SQ <123>)} {(DQ ($ Id.VSub_DollarName '$PS4'))})
            (C {<_Dbg_set_to_return_from_debugger>} {<0>})
            (C {<assertNotEquals>} {(DQ ($ Id.VSub_DollarName '$_Dbg_space_IFS'))} 
              {(DQ ($ Id.VSub_DollarName '$IFS'))}
            )
            (C {<assertEquals>} {(DQ ($ Id.VSub_DollarName '$new_ifs'))} 
              {(DQ ($ Id.VSub_DollarName '$IFS'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$old_IFS'))}
                  spids: [118]
                )
              ]
            )
          ]
        )
    )
    (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: [126]
        )
      ]
    )
    (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: [132]
        )
      ]
    )
    (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) <'/lib/journal.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'/lib/filecache.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'/lib/file.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'/lib/save-restore.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)})
      ]
    )
  ]
)