(CommandList
  children: [
    (AndOr
      children: [
        (DParen
          child: 
            (ArithBinary
              op_id: Arith_GreatEqual
              left: (ArithWord w:{($ VSub_Pound "$#")})
              right: (ArithWord w:{(Lit_Digits 3)})
            )
        )
        (BraceGroup
          children: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [
                    {(echo)}
                    {
                      (DQ ("Usage: ") ($ VSub_Number "$0") 
                        (" <unittest.bash dir> <singlejar> <jartool>")
                      )
                    }
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[87])]
                )
              terminator: <Op_Semi ";">
            )
            (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ";">)
          ]
          spids: [77]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(source)} {($ VSub_Number "$1") (/unittest.bash)})
        (BraceGroup
          children: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(echo)} {(DQ ("unittest.bash not found!"))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[119])]
                )
              terminator: <Op_Semi ";">
            )
            (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ";">)
          ]
          spids: [111]
        )
      ]
      op_id: Op_DPipe
    )
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_Declare
      flags: ["'-r'"]
      pairs: [
        (assign_pair
          lhs: (LhsName name:singlejar)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$2"))}
          spids: [139]
        )
      ]
      spids: [135]
    )
    (Assignment
      keyword: Assign_Declare
      flags: ["'-r'"]
      pairs: [
        (assign_pair
          lhs: (LhsName name:jartool)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$3"))}
          spids: [148]
        )
      ]
      spids: [144]
    )
    (FuncDef
      name: test_65Kentries
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              flags: ["'-r'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:top)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$TEST_TMPDIR") (/65Kentries))}
                  spids: [171]
                )
              ]
              spids: [167]
            )
            (C {(date)})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$top"))})
            (C {(dd)} {(Lit_VarLike "if=") (/dev/zero)} 
              {(Lit_VarLike "of=") (DQ ($ VSub_Name "$top") (/file))} {(Lit_VarLike "bs=") (256)} {(Lit_VarLike "count=") (1)}
            )
            (ForEach
              iter_name: dir
              iter_words: [{(Lit_LBrace "{") (1..256) (Lit_RBrace "}")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dirpath)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$top") (/dir) ($ VSub_Name "$dir"))}
                          spids: [228]
                        )
                      ]
                      spids: [226]
                    )
                    (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$dirpath"))})
                    (C {(split)} {(-b)} {(1)} {(DQ ($ VSub_Name "$top") (/file))} 
                      {(DQ ($ VSub_Name "$dirpath") (/x.))}
                    )
                  ]
                  spids: [219 262]
                )
              spids: [213 217]
            )
            (Assignment
              keyword: Assign_Local
              flags: ["'-r'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:inzip)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$TEST_TMPDIR") (/in65K.zip))}
                  spids: [277]
                )
              ]
              spids: [273]
            )
            (Assignment
              keyword: Assign_Local
              flags: ["'-r'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:outzip)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$TEST_TMPDIR") (/out65K.zip))}
                  spids: [288]
                )
              ]
              spids: [284]
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$inzip"))} {(DQ ($ VSub_Name "$outzip"))})
            (C {(DQ ($ VSub_Name "$jartool"))} {(-cf)} {(DQ ($ VSub_Name "$inzip"))} 
              {(DQ ($ VSub_Name "$top"))}
            )
            (C {(DQ ($ VSub_Name "$singlejar"))} {(--output)} {(DQ ($ VSub_Name "$outzip"))} 
              {(--sources)} {(DQ ($ VSub_Name "$inzip"))}
            )
            (Assignment
              keyword: Assign_Local
              flags: ["'-ir'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:n_entries)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(DQ ($ VSub_Name "$jartool"))} {(-tf)} 
                                    {(DQ ($ VSub_Name "$outzip"))}
                                  )
                                  (C {(wc)} {(-l)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [350 366]
                      )
                    }
                  spids: [349]
                )
              ]
              spids: [345]
            )
            (AndOr
              children: [
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_Great
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name n_entries>
                                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)})
                                spids: [370 374]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 65536)})
                    )
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(echo)}
                            {(Expected)}
                            {(65536)}
                            {(entries) (Lit_Comma ",")}
                            {(got)}
                            {(DQ ($ VSub_Name "$n_entries"))}
                          ]
                          redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[403])]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ";">)
                  ]
                  spids: [386]
                )
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [164]
        )
      spids: [158 163]
    )
    (C {(run_suite)} {(DQ ("singlejar Zip64 handling"))})
  ]
)