(command.CommandList
  children: [
    (command.ShFunction
      name: test_columnized
      body: 
        (command.BraceGroup
          children: [
            (command.ShFunction
              name: do_one
              body: 
                (command.BraceGroup
                  children: [
                    (C {(typeset)} {(Lit_VarLike 'cols=') (DQ ($ VSub_Number '$1'))})
                    (C {(shift)})
                    (C {(typeset)} {(Lit_VarLike 'last_line=') (DQ ($ VSub_Number '$1'))})
                    (C {(shift)})
                    (C {(typeset)} {(-a)} {(columnized)})
                    (C {(typeset)} {(-a)} {(list)})
                    (C {(eval)} {(DQ ('list=(') ($ VSub_Number '$1') (')'))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Arith_DEqual
                                      left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                                      right: (arith_expr.ArithWord w:{(Lit_Digits 3)})
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(columnize)} {(DQ ($ VSub_Number '$2'))} {(DQ ($ VSub_Number '$3'))})
                          ]
                        )
                      ]
                      else_action: [(C {(columnize)} {(DQ ($ VSub_Number '$2'))})]
                    )
                    (C {(typeset)} 
                      {(Lit_VarLike 'size=') 
                        (braced_var_sub
                          token: <VSub_Name columnized>
                          prefix_op: VSub_Pound
                          bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                        )
                      }
                    )
                    (C {(assertEquals)} {(DQ ($ VSub_DollarName '$cols'))} 
                      {(DQ ($ VSub_DollarName '$size'))}
                    )
                    (C {(assertEquals)} {(DQ ($ VSub_DollarName '$last_line'))} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <VSub_Name columnized>
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: 
                                  (arith_expr.Binary
                                    op_id: Arith_Minus
                                    left: (arith_expr.ArithWord w:{($ VSub_DollarName '$size')})
                                    right: (arith_expr.ArithWord w:{(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: [
            (command.Sentence
              child: 
                (C {(Lit_LBracket '[')} {(SQ </src/external-vcs/sourceforge/bashdb>)} {(Lit_Equals '=')} {(SQ )} 
                  {(Lit_RBracket ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Something is wrong abs_top_srcdir is not set.'))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:abs_top_srcdir)
          op: Equal
          rhs: {(/src/external-vcs/sourceforge/bashdb)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:abs_top_srcdir)
          op: Equal
          rhs: 
            {
              (braced_var_sub
                token: <VSub_Name abs_top_srcdir>
                suffix_op: (suffix_op.Unary op_id:VOp1_DPercent arg_word:{(Lit_Slash /)})
              ) (/)
            }
        )
      ]
    )
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (test/unit/helper.sh)})
    (C {(.)} {($ VSub_DollarName '$abs_top_srcdir') (/lib/columnize.sh)})
    (C {(KW_Set set)} {(--)})
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: BoolBinary_GlobDEqual
              left: {($ VSub_Number '$0')}
              right: {(${ VSub_Name BASH_SOURCE)}
            )
        )
        (C {(.)} {(${ VSub_Name shunit_file)})
      ]
    )
  ]
)