(CommandList
  children: [
    (FuncDef
      name: test_columnized
      body: 
        (BraceGroup
          children: [
            (FuncDef
              name: do_one
              body: 
                (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") (")"))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_DEqual
                                      left: (ArithWord w:{($ VSub_Pound "$#")})
                                      right: (ArithWord w:{(Lit_Digits 3)})
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(columnize)} {(DQ ($ VSub_Number "$2"))} {(DQ ($ VSub_Number "$3"))})
                          ]
                          spids: [-1 78]
                        )
                      ]
                      else_action: [(C {(columnize)} {(DQ ($ VSub_Number "$2"))})]
                      spids: [92 102]
                    )
                    (C {(typeset)} 
                      {(Lit_VarLike "size=") 
                        (BracedVarSub
                          token: <VSub_Name columnized>
                          prefix_op: VSub_Pound
                          bracket_op: (WholeArray op_id:Lit_At)
                          spids: [108 114]
                        )
                      }
                    )
                    (C {(assertEquals)} {(DQ ($ VSub_Name "$cols"))} {(DQ ($ VSub_Name "$size"))})
                    (C {(assertEquals)} {(DQ ($ VSub_Name "$last_line"))} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name columnized>
                            bracket_op: 
                              (ArrayIndex
                                expr: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name "$size")})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                              )
                            spids: [147 154]
                          )
                        )
                      }
                    )
                  ]
                  spids: [17]
                )
              spids: [13 16]
            )
            (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)}
            )
          ]
          spids: [10]
        )
      spids: [6 9]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(SQ </src/external-vcs/sourceforge/bashdb>)} {(Lit_Other "=")} {(SQ )} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("Something is wrong abs_top_srcdir is not set."))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 251]
        )
      ]
      spids: [-1 265]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:abs_top_srcdir)
          op: Equal
          rhs: {(/src/external-vcs/sourceforge/bashdb)}
          spids: [267]
        )
      ]
      spids: [267]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:abs_top_srcdir)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name abs_top_srcdir>
                suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(Lit_Slash /)})
                spids: [274 278]
              ) (/)
            }
          spids: [273]
        )
      ]
      spids: [273]
    )
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (test/unit/helper.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/columnize.sh)})
    (C {(set)} {(--)})
    (AndOr
      children: [
        (DBracket
          expr: 
            (BoolBinary
              op_id: BoolBinary_GlobDEqual
              left: {($ VSub_Number "$0")}
              right: {(${ VSub_Name BASH_SOURCE)}
            )
        )
        (C {(.)} {(${ VSub_Name shunit_file)})
      ]
      op_id: Op_DAmp
    )
  ]
)