(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tid)
          op: Equal
          rhs: {(DQ ('basic sftp put/get'))}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SFTPCMDFILE)
          op: Equal
          rhs: {(${ VSub_Name OBJ) (/batch)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$SFTPCMDFILE')}
          spids: [21]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('version\n') ('get ') ($ VSub_Name '$DATA') (' ') (${ VSub_Name COPY) ('.1\n') ('put ') 
                ($ VSub_Name '$DATA') (' ') (${ VSub_Name COPY) ('.2\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [24]
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BUFFERSIZE)
          op: Equal
          rhs: {(DQ ('5 1000 32000 64000'))}
          spids: [44]
        )
      ]
      spids: [44]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:REQUESTS) op:Equal rhs:{(DQ ('1 2 10'))} spids:[49])]
      spids: [49]
    )
    (ForEach
      iter_name: B
      iter_words: [{(${ VSub_Name BUFFERSIZE)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (ForEach
              iter_name: R
              iter_words: [{(${ VSub_Name REQUESTS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(verbose)} 
                      {
                        (DQ ('test ') ($ VSub_Name '$tid') (': buffer_size ') ($ VSub_Name '$B') 
                          (' num_requests ') ($ VSub_Name '$R')
                        )
                      }
                    )
                    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)})
                    (SimpleCommand
                      words: [
                        {(${ VSub_Name SFTP)}
                        {(-D)}
                        {(${ VSub_Name SFTPSERVER)}
                        {(-B)}
                        {($ VSub_Name '$B')}
                        {(-R)}
                        {($ VSub_Name '$R')}
                        {(-b)}
                        {($ VSub_Name '$SFTPCMDFILE')}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(/dev/null)}
                          spids: [134]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [138]
                        )
                      ]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:r)
                          op: Equal
                          rhs: {($ VSub_QMark '$?')}
                          spids: [142]
                        )
                      ]
                      spids: [142]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(fail)} {(DQ ('sftp failed with ') ($ VSub_Name '$r'))})]
                          spids: [16777215 159]
                        )
                      ]
                      else_action: [
                        (AndOr
                          children: [
                            (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.1)})
                            (C {(fail)} {(DQ ('corrupted copy after get'))})
                          ]
                          op_id: Op_DPipe
                        )
                        (AndOr
                          children: [
                            (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.2)})
                            (C {(fail)} {(DQ ('corrupted copy after put'))})
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      spids: [170 210]
                    )
                  ]
                  spids: [80 213]
                )
              spids: [74 78]
            )
          ]
          spids: [66 215]
        )
      spids: [60 64]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)})
    (C {(rm)} {(-f)} {($ VSub_Name '$SFTPCMDFILE')})
  ]
)