(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ ('sftp commands'))} spids:[17])]
      spids: [17]
    )
    (ForEach
      iter_name: i
      iter_words: [
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Subshell
                    child: 
                      (CommandList
                        children: [
                          (Sentence
                            child: (C {(cd)} {(/bin)})
                            terminator: <Op_Semi ';'>
                          )
                          (C {(echo)} {(l) (Lit_Other '*')})
                        ]
                      )
                    spids: [33 42]
                  )
                ]
              )
            left_token: <Left_Backtick '`'>
            spids: [32 43]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-r)} {($ VSub_Name '$i')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GLOBFILES)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$GLOBFILES') (' ') ($ VSub_Name '$i'))}
                          spids: [62]
                        )
                      ]
                      spids: [62]
                    )
                  ]
                  spids: [-1 59]
                )
              ]
              spids: [-1 70]
            )
          ]
          spids: [45 72]
        )
      spids: [31 -1]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:QUOTECOPY)
          op: Equal
          rhs: 
            {(${ VSub_Name COPY) 
              (DQ (.) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (blah) 
                (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
              )
            }
          spids: [78]
        )
      ]
      spids: [78]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:QUOTECOPY_ARG)
          op: Equal
          rhs: {(${ VSub_Name COPY) (SQ <'.\\"blah\\"'>)}
          spids: [89]
        )
      ]
      spids: [89]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SPACECOPY)
          op: Equal
          rhs: {(DQ (${ VSub_Name COPY) (' this has spaces.txt'))}
          spids: [100]
        )
      ]
      spids: [100]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SPACECOPY_ARG)
          op: Equal
          rhs: 
            {
              (DQ (${ VSub_Name COPY) (EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (this) 
                (EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (has) (EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (spaces.txt)
              )
            }
          spids: [108]
        )
      ]
      spids: [108]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GLOBMETACOPY)
          op: Equal
          rhs: {(DQ (${ VSub_Name COPY) (' [metachar].txt'))}
          spids: [124]
        )
      ]
      spids: [124]
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name COPY)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)} 
      {(${ VSub_Name COPY) (.dd)} {(${ VSub_Name COPY) (.dd2)}
    )
    (C {(mkdir)} {(${ VSub_Name COPY) (.dd)})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': lls'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('lcd ') (${ VSub_Name OBJ))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(echo)} {(DQ (lls))})
                  ]
                )
              spids: [176 193]
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[207])]
            )
            (SimpleCommand
              words: [{(grep)} {(copy.dd)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[218])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[221])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('lls failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': lls w/path'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('lls ') (${ VSub_Name OBJ))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[261])]
            )
            (SimpleCommand
              words: [{(grep)} {(copy.dd)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[272])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[275])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('lls w/path failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': ls'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('ls ') (${ VSub_Name OBJ))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[315])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[318])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('ls failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': shell'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('!echo hi there'))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[360])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[363])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('shell failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': pwd'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ (pwd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[405])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[408])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('pwd failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': lpwd'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ (lpwd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[450])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[453])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('lpwd failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': quit'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ (quit))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[495])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[498])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('quit failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': help'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ (help))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[540])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[543])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('help failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('get ') ($ VSub_Name '$DATA') (' ') ($ VSub_Name '$COPY'))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[596])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[599])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY)})
        (C {(fail)} {(DQ ('corrupted copy after get'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get quoted'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} 
              {
                (DQ ('get ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$DATA') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_Name '$COPY')
                )
              }
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[667])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[670])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY)})
        (C {(fail)} {(DQ ('corrupted copy after get'))})
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$os'))} {(KW_Bang '!') (Lit_Other '=')} 
                  {(DQ (cygwin))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(rm)} {(-f)} {(${ VSub_Name QUOTECOPY)})
            (C {(cp)} {($ VSub_Name '$DATA')} {(${ VSub_Name QUOTECOPY)})
            (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get filename with quotes'))})
            (AndOr
              children: [
                (Pipeline
                  children: [
                    (C {(echo)} 
                      {
                        (DQ ('get ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          ($ VSub_Name '$QUOTECOPY_ARG') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') (${ VSub_Name COPY)
                        )
                      }
                    )
                    (SimpleCommand
                      words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(/dev/null)}
                          spids: [768]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [771]
                        )
                      ]
                    )
                  ]
                  negated: False
                )
                (C {(fail)} {(DQ ('get failed'))})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(cmp)} {(${ VSub_Name COPY)} {(${ VSub_Name QUOTECOPY)})
                (C {(fail)} {(DQ ('corrupted copy after get with quotes'))})
              ]
              op_id: Op_DPipe
            )
            (C {(rm)} {(-f)} {(${ VSub_Name QUOTECOPY)} {(${ VSub_Name COPY)})
          ]
          spids: [-1 718]
        )
      ]
      spids: [-1 814]
    )
    (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$SPACECOPY'))} {(${ VSub_Name COPY)})
    (C {(cp)} {($ VSub_Name '$DATA')} {(DQ ($ VSub_Name '$SPACECOPY'))})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get filename with spaces'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('get ') (${ VSub_Name SPACECOPY_ARG) (' ') (${ VSub_Name COPY))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[869])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[872])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {(${ VSub_Name COPY)} {(DQ ($ VSub_Name '$SPACECOPY'))})
        (C {(fail)} {(DQ ('corrupted copy after get with spaces'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GLOBMETACOPY'))} {(${ VSub_Name COPY)})
    (C {(cp)} {($ VSub_Name '$DATA')} {(DQ ($ VSub_Name '$GLOBMETACOPY'))})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get filename with glob metacharacters'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} 
              {
                (DQ ('get ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                  (${ VSub_Name GLOBMETACOPY) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') (${ VSub_Name COPY)
                )
              }
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[960])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[963])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {(${ VSub_Name COPY)} {(DQ ($ VSub_Name '$GLOBMETACOPY'))})
        (C {(fail)} {(DQ ('corrupted copy after get with glob metacharacters'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get to directory'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('get ') ($ VSub_Name '$DATA') (' ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1036])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1039])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$DATANAME')})
        (C {(fail)} {(DQ ('corrupted copy after get'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': glob get to directory'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('get /bin/l* ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1110])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1113])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (ForEach
      iter_name: x
      iter_words: [{($ VSub_Name '$GLOBFILES')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (C {(cmp)} {(/bin/) ($ VSub_Name '$x')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$x')})
                (C {(fail)} {(DQ ('corrupted copy after get'))})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [1135 1157]
        )
      spids: [1131 1133]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': get to local dir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('lcd ') (${ VSub_Name COPY) (.dd))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(echo)} {(DQ ('get ') ($ VSub_Name '$DATA'))})
                  ]
                )
              spids: [1177 1196]
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1210])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1213])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$DATANAME')})
        (C {(fail)} {(DQ ('corrupted copy after get'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': glob get to local dir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('lcd ') (${ VSub_Name COPY) (.dd))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(echo)} {(DQ ('get /bin/l*'))})
                  ]
                )
              spids: [1262 1279]
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1293])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1296])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('get failed'))})
      ]
      op_id: Op_DPipe
    )
    (ForEach
      iter_name: x
      iter_words: [{($ VSub_Name '$GLOBFILES')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (C {(cmp)} {(/bin/) ($ VSub_Name '$x')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$x')})
                (C {(fail)} {(DQ ('corrupted copy after get'))})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [1318 1340]
        )
      spids: [1314 1316]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': put'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('put ') ($ VSub_Name '$DATA') (' ') ($ VSub_Name '$COPY'))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1381])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1384])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('put failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY)})
        (C {(fail)} {(DQ ('corrupted copy after put'))})
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$os'))} {(KW_Bang '!') (Lit_Other '=')} 
                  {(DQ (cygwin))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(rm)} {(-f)} {(${ VSub_Name QUOTECOPY)})
            (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': put filename with quotes'))})
            (AndOr
              children: [
                (Pipeline
                  children: [
                    (C {(echo)} 
                      {
                        (DQ ('put ') ($ VSub_Name '$DATA') (' ') 
                          (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$QUOTECOPY_ARG') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                        )
                      }
                    )
                    (SimpleCommand
                      words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(/dev/null)}
                          spids: [1472]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [1475]
                        )
                      ]
                    )
                  ]
                  negated: False
                )
                (C {(fail)} {(DQ ('put failed'))})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name QUOTECOPY)})
                (C {(fail)} {(DQ ('corrupted copy after put with quotes'))})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [-1 1430]
        )
      ]
      spids: [-1 1502]
    )
    (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$SPACECOPY'))})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': put filename with spaces'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('put ') ($ VSub_Name '$DATA') (' ') (${ VSub_Name SPACECOPY_ARG))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1545])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1548])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('put failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(DQ ($ VSub_Name '$SPACECOPY'))})
        (C {(fail)} {(DQ ('corrupted copy after put with spaces'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': put to directory'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('put ') ($ VSub_Name '$DATA') (' ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1617])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1620])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('put failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$DATANAME')})
        (C {(fail)} {(DQ ('corrupted copy after put'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': glob put to directory'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('put /bin/l? ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1691])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1694])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('put failed'))})
      ]
      op_id: Op_DPipe
    )
    (ForEach
      iter_name: x
      iter_words: [{($ VSub_Name '$GLOBFILES')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (C {(cmp)} {(/bin/) ($ VSub_Name '$x')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$x')})
                (C {(fail)} {(DQ ('corrupted copy after put'))})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [1716 1738]
        )
      spids: [1712 1714]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': put to local dir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('cd ') (${ VSub_Name COPY) (.dd))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(echo)} {(DQ ('put ') ($ VSub_Name '$DATA'))})
                  ]
                )
              spids: [1758 1776]
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1790])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1793])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('put failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$DATANAME')})
        (C {(fail)} {(DQ ('corrupted copy after put'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.dd/) (Lit_Other '*')})
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': glob put to local dir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('cd ') (${ VSub_Name COPY) (.dd))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(echo)} {(DQ ('put /bin/l?'))})
                  ]
                )
              spids: [1842 1859]
            )
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1873])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1876])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('put failed'))})
      ]
      op_id: Op_DPipe
    )
    (ForEach
      iter_name: x
      iter_words: [{($ VSub_Name '$GLOBFILES')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (C {(cmp)} {(/bin/) ($ VSub_Name '$x')} {(${ VSub_Name COPY) (.dd/) ($ VSub_Name '$x')})
                (C {(fail)} {(DQ ('corrupted copy after put'))})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [1898 1920]
        )
      spids: [1894 1896]
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': rename'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('rename ') ($ VSub_Name '$COPY') (' ') (${ VSub_Name COPY) (.1))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1954])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1957])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('rename failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-f)} {(${ VSub_Name COPY) (.1)})
        (C {(fail)} {(DQ ('missing file after rename'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(cmp)} {($ VSub_Name '$DATA')} {(${ VSub_Name COPY) (.1)}]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1996])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1999])
          ]
        )
        (C {(fail)} {(DQ ('corrupted copy after rename'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': rename directory'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('rename ') (${ VSub_Name COPY) ('.dd ') (${ VSub_Name COPY) (.dd2))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2046])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2049])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('rename directory failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-d)} {(${ VSub_Name COPY) (.dd)})
        (C {(fail)} {(DQ ('oldname exists after rename directory'))})
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (C {(test)} {(-d)} {(${ VSub_Name COPY) (.dd2)})
        (C {(fail)} {(DQ ('missing newname after rename directory'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': ln'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('ln ') (${ VSub_Name COPY) ('.1 ') (${ VSub_Name COPY) (.2))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2130])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2133])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('ln failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-f)} {(${ VSub_Name COPY) (.2)})
        (C {(fail)} {(DQ ('missing file after ln'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(cmp)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)})
        (C {(fail)} {(DQ ('created file is not equal after ln'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': ln -s'))})
    (C {(rm)} {(-f)} {(${ VSub_Name COPY) (.2)})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('ln -s ') (${ VSub_Name COPY) ('.1 ') (${ VSub_Name COPY) (.2))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2224])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2227])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('ln -s failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-h)} {(${ VSub_Name COPY) (.2)})
        (C {(fail)} {(DQ ('missing file after ln -s'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': mkdir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('mkdir ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2285])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2288])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('mkdir failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-d)} {(${ VSub_Name COPY) (.dd)})
        (C {(fail)} {(DQ ('missing directory after mkdir'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': chdir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('chdir ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2351])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2354])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('chdir failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': rmdir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('rmdir ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2397])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2400])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('rmdir failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-d)} {(${ VSub_Name COPY) (.1)})
        (C {(fail)} {(DQ ('present directory after rmdir'))})
      ]
      op_id: Op_DAmp
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': lmkdir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('lmkdir ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2460])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2463])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('lmkdir failed'))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(test)} {(-d)} {(${ VSub_Name COPY) (.dd)})
        (C {(fail)} {(DQ ('missing directory after lmkdir'))})
      ]
      op_id: Op_DPipe
    )
    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': lchdir'))})
    (AndOr
      children: [
        (Pipeline
          children: [
            (C {(echo)} {(DQ ('lchdir ') (${ VSub_Name COPY) (.dd))})
            (SimpleCommand
              words: [{(${ VSub_Name SFTP)} {(-D)} {(${ VSub_Name SFTPSERVER)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2526])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2529])
              ]
            )
          ]
          negated: False
        )
        (C {(fail)} {(DQ ('lchdir failed'))})
      ]
      op_id: Op_DPipe
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name COPY)} {(${ VSub_Name COPY) (.1)} {(${ VSub_Name COPY) (.2)} 
      {(${ VSub_Name COPY) (.dd)} {(${ VSub_Name COPY) (.dd2)}
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name QUOTECOPY)} {(DQ ($ VSub_Name '$SPACECOPY'))} 
      {(DQ ($ VSub_Name '$GLOBMETACOPY'))}
    )
  ]
)