(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ ('sftp batchfile'))} spids:[7])]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BATCH)
          op: Equal
          rhs: {(${ VSub_Name OBJ) (/sftp.bb)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name COPY)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)} 
      {(${ VSub_Name COPY) (.dd)} {(${ VSub_Name BATCH) (.) (Lit_Other '*')}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('\tget ') ($ VSub_Name '$DATA') (' ') ($ VSub_Name '$COPY') ('\n') ('\tput ') 
                (${ VSub_Name COPY) (' ') (${ VSub_Name COPY) ('.1\n') ('\trm ') (${ VSub_Name COPY) ('\n') ('\t-put ') (${ VSub_Name COPY) (' ') 
                (${ VSub_Name COPY) ('.2\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [52]
        )
        (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name BATCH) (.pass.1)} spids:[56])
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('\t# This is a comment\n') ('\n') ('\t# That was a blank line\n') ('\tls\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [95]
        )
        (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name BATCH) (.pass.2)} spids:[99])
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('\tget ') ($ VSub_Name '$DATA') (' ') ($ VSub_Name '$COPY') ('\n') ('\tput ') 
                (${ VSub_Name COPY) (' ') (${ VSub_Name COPY) ('.3\n') ('\trm ') (${ VSub_Name COPY) ('.*\n') 
                ('\t# The next command should fail\n') ('\tput ') (${ VSub_Name COPY) ('.3 ') (${ VSub_Name COPY) ('.4\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [114]
        )
        (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name BATCH) (.fail.1)} spids:[118])
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('\t# The next command should fail\n') ('\tjajajajaja\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [158]
        )
        (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name BATCH) (.fail.2)} spids:[162])
      ]
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': good commands'))})
    (AndOr
      children: [
        (SimpleCommand
          words: [
            {(${ VSub_Name SFTP)}
            {(-b)}
            {(${ VSub_Name BATCH) (.pass.1)}
            {(-D)}
            {(${ VSub_Name SFTPSERVER)}
          ]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[197])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[200])
          ]
        )
        (C {(fail)} {(DQ ('good commands failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': bad commands'))})
    (AndOr
      children: [
        (SimpleCommand
          words: [
            {(${ VSub_Name SFTP)}
            {(-b)}
            {(${ VSub_Name BATCH) (.fail.1)}
            {(-D)}
            {(${ VSub_Name SFTPSERVER)}
          ]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[238])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[241])
          ]
        )
        (C {(fail)} {(DQ ('bad commands succeeded'))})
      ]
      op_id: Op_DAmp
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': comments and blanks'))})
    (AndOr
      children: [
        (SimpleCommand
          words: [
            {(${ VSub_Name SFTP)}
            {(-b)}
            {(${ VSub_Name BATCH) (.pass.2)}
            {(-D)}
            {(${ VSub_Name SFTPSERVER)}
          ]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[279])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[282])
          ]
        )
        (C {(fail)} {(DQ ('comments & blanks failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': junk command'))})
    (AndOr
      children: [
        (SimpleCommand
          words: [
            {(${ VSub_Name SFTP)}
            {(-b)}
            {(${ VSub_Name BATCH) (.fail.2)}
            {(-D)}
            {(${ VSub_Name SFTPSERVER)}
          ]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[320])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[323])
          ]
        )
        (C {(fail)} {(DQ ('junk command succeeded'))})
      ]
      op_id: Op_DAmp
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name COPY)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)} 
      {(${ VSub_Name COPY) (.dd)} {(${ VSub_Name BATCH) (.) (Lit_Other '*')}
    )
  ]
)