(command.CommandList
  children: [
    (command.ShFunction
      name: test_columnized
      body: 
        (BraceGroup
          children: [
            (command.ShFunction
              name: do_one
              body: 
                (BraceGroup
                  children: [
                    (C {<typeset>} {<Id.Lit_VarLike 'cols='> (DQ ($ Id.VSub_Number '$1'))})
                    (C {<shift>})
                    (C {<typeset>} {<Id.Lit_VarLike 'last_line='> (DQ ($ Id.VSub_Number '$1'))})
                    (C {<shift>})
                    (C {<typeset>} {<-a>} {<columnized>})
                    (C {<typeset>} {<-a>} {<list>})
                    (C {<eval>} {(DQ <'list=('> ($ Id.VSub_Number '$1') <')'>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_Pound '$#')}
                                          right: {<Id.Lit_Digits 3>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<columnize>} {(DQ ($ Id.VSub_Number '$2'))} 
                              {(DQ ($ Id.VSub_Number '$3'))}
                            )
                          ]
                          spids: [65 78]
                        )
                      ]
                      else_action: [(C {<columnize>} {(DQ ($ Id.VSub_Number '$2'))})]
                    )
                    (C {<typeset>} 
                      {<Id.Lit_VarLike 'size='> 
                        (braced_var_sub
                          token: <Id.VSub_Name columnized>
                          prefix_op: (Id.VSub_Pound)
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        )
                      }
                    )
                    (C {<assertEquals>} {(DQ ($ Id.VSub_DollarName '$cols'))} 
                      {(DQ ($ Id.VSub_DollarName '$size'))}
                    )
                    (C {<assertEquals>} {(DQ ($ Id.VSub_DollarName '$last_line'))} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name columnized>
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: {($ Id.VSub_DollarName '$size')}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                              )
                          )
                        )
                      }
                    )
                  ]
                )
            )
            (C {<do_one>} {<1>} {(SQ <'<empty>'>)} {(SQ )})
            (C {<do_one>} {<1>} {(SQ <'a,2,c'>)} {(SQ <'a 2 c'>)} {<10>} {(SQ <','>)})
            (C {<do_one>} {<4>} {(SQ <'for    8  '>)} 
              {(SQ <' 1   two three\n'> <'  for 5   six\n'> <'  7   8'>)} {<12>}
            )
            (C {<do_one>} {<3>} {(SQ <'3    six'>)} 
              {(SQ <' 1   two 3\n'> <'  for 5   six\n'> <'  7   8'>)} {<12>}
            )
          ]
        )
    )
    (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: [234 251]
        )
      ]
    )
    (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: [267]
        )
      ]
    )
    (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: [273]
        )
      ]
    )
    (C {<.>} {(${ Id.VSub_Name abs_top_srcdir) <'test/unit/helper.sh'>})
    (C {<.>} {($ Id.VSub_DollarName '$abs_top_srcdir') <'/lib/columnize.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)})
      ]
    )
  ]
)