(command.CommandList
  children: [
    (command.ShFunction
      name: test_require
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<require_me>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:require_me)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [21]
                )
              ]
            )
            (C {<require>} {<'./require_me.sh'>})
            (C {<assertEquals>} {(DQ <'Should have been required'>)} {<1>} 
              {($ Id.VSub_DollarName '$require_me')}
            )
            (C {<typeset>} {<-i>} {<requires_size>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:requires_size)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name _Dbg_requires>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                  spids: [49]
                )
              ]
            )
            (C {<require>} {<'./require_me.sh'>})
            (C {<assertEquals>} {(DQ <'Should not have required a second time'>)} {<1>} 
              {($ Id.VSub_DollarName '$require_me')}
            )
            (C {<assertEquals>} {($ Id.VSub_DollarName '$requires_size')} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name _Dbg_requires>
                  prefix_op: (Id.VSub_Pound)
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              }
            )
            (C {<require>} {<require_me.sh>})
            (C {<assertEquals>} {(DQ <'Should not have required under another name'>)} {<1>} 
              {($ Id.VSub_DollarName '$require_me')}
            )
            (C {<assertEquals>} {($ Id.VSub_DollarName '$requires_size')} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name _Dbg_requires>
                  prefix_op: (Id.VSub_Pound)
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              }
            )
          ]
        )
    )
    (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: [119]
        )
      ]
    )
    (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: [125]
        )
      ]
    )
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'test/unit/helper.sh'>})
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'init/require.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)})
      ]
    )
  ]
)