(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'sftp commands'>)}
          spids: [17]
        )
      ]
    )
    (command.ForEach
      iter_name: i
      iter_words: [
        {
          (command_sub
            left_token: <Id.Left_Backtick '`'>
            child: 
              (command.Subshell
                child: 
                  (command.CommandList
                    children: [
                      (command.Sentence
                        child: (C {<cd>} {<'/bin'>})
                        terminator: <Id.Op_Semi _>
                      )
                      (C {<echo>} {<l> <Id.Lit_Star '*'>})
                    ]
                  )
              )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-r>} {($ Id.VSub_DollarName '$i')} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GLOBFILES)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$GLOBFILES') <' '> ($ Id.VSub_DollarName '$i'))
                            }
                          spids: [64]
                        )
                      ]
                    )
                  ]
                  spids: [50 61]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:QUOTECOPY)
          op: assign_op.Equal
          rhs: 
            {(${ Id.VSub_Name COPY) 
              (DQ <.> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <blah> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
              )
            }
          spids: [80]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:QUOTECOPY_ARG)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name COPY) (SQ <'.\\"blah\\"'>)}
          spids: [91]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SPACECOPY)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name COPY) <' this has spaces.txt'>)}
          spids: [102]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SPACECOPY_ARG)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (${ Id.VSub_Name COPY) <Id.Lit_BadBackslash '\\'> <' this'> <Id.Lit_BadBackslash '\\'> 
                <' has'> <Id.Lit_BadBackslash '\\'> <' spaces.txt'>
              )
            }
          spids: [110]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GLOBMETACOPY)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name COPY) <' [metachar].txt'>)}
          spids: [126]
        )
      ]
    )
    (C {<rm>} {<-rf>} {(${ Id.VSub_Name COPY)} {(${ Id.VSub_Name COPY) <.1>} {(${ Id.VSub_Name COPY) <.2>} 
      {(${ Id.VSub_Name COPY) <.dd>} {(${ Id.VSub_Name COPY) <.dd2>}
    )
    (C {<mkdir>} {(${ Id.VSub_Name COPY) <.dd>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': lls'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<echo>} {(DQ <'lcd '> (${ Id.VSub_Name OBJ))})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} {(DQ <lls>)})
                  ]
                )
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (command.Simple
              words: [{<grep>} {<copy.dd>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'lls failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': lls w/path'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'lls '> (${ Id.VSub_Name OBJ))})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (command.Simple
              words: [{<grep>} {<copy.dd>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'lls w/path failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': ls'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'ls '> (${ Id.VSub_Name OBJ))})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'ls failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': shell'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'!echo hi there'>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'shell failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': pwd'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <pwd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'pwd failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': lpwd'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <lpwd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'lpwd failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': quit'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <quit>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'quit failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': help'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <help>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'help failed'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {(DQ <'get '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))}
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} {(${ Id.VSub_Name COPY)})
        (C {<fail>} {(DQ <'corrupted copy after get'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get quoted'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {
                (DQ <'get '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                  ($ Id.VSub_DollarName '$DATA') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> ($ Id.VSub_DollarName '$COPY')
                )
              }
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} {(${ Id.VSub_Name COPY)})
        (C {<fail>} {(DQ <'corrupted copy after get'>)})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$os'))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <cygwin>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<rm>} {<-f>} {(${ Id.VSub_Name QUOTECOPY)})
            (C {<cp>} {($ Id.VSub_DollarName '$DATA')} {(${ Id.VSub_Name QUOTECOPY)})
            (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get filename with quotes'>)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} 
                      {
                        (DQ <'get '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                          ($ Id.VSub_DollarName '$QUOTECOPY_ARG') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (${ Id.VSub_Name COPY)
                        )
                      }
                    )
                    (command.Simple
                      words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  negated: F
                )
                (C {<fail>} {(DQ <'get failed'>)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cmp>} {(${ Id.VSub_Name COPY)} {(${ Id.VSub_Name QUOTECOPY)})
                (C {<fail>} {(DQ <'corrupted copy after get with quotes'>)})
              ]
            )
            (C {<rm>} {<-f>} {(${ Id.VSub_Name QUOTECOPY)} {(${ Id.VSub_Name COPY)})
          ]
          spids: [702 720]
        )
      ]
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$SPACECOPY'))} {(${ Id.VSub_Name COPY)})
    (C {<cp>} {($ Id.VSub_DollarName '$DATA')} {(DQ ($ Id.VSub_DollarName '$SPACECOPY'))})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get filename with spaces'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'get '> (${ Id.VSub_Name SPACECOPY_ARG) <' '> (${ Id.VSub_Name COPY))})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {(${ Id.VSub_Name COPY)} {(DQ ($ Id.VSub_DollarName '$SPACECOPY'))})
        (C {<fail>} {(DQ <'corrupted copy after get with spaces'>)})
      ]
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$GLOBMETACOPY'))} {(${ Id.VSub_Name COPY)})
    (C {<cp>} {($ Id.VSub_DollarName '$DATA')} {(DQ ($ Id.VSub_DollarName '$GLOBMETACOPY'))})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get filename with glob metacharacters'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {
                (DQ <'get '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                  (${ Id.VSub_Name GLOBMETACOPY) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (${ Id.VSub_Name COPY)
                )
              }
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {(${ Id.VSub_Name COPY)} {(DQ ($ Id.VSub_DollarName '$GLOBMETACOPY'))})
        (C {<fail>} {(DQ <'corrupted copy after get with glob metacharacters'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get to directory'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {(DQ <'get '> ($ Id.VSub_DollarName '$DATA') <' '> (${ Id.VSub_Name COPY) <.dd>)}
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} 
          {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$DATANAME')}
        )
        (C {<fail>} {(DQ <'corrupted copy after get'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': glob get to directory'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'get /bin/l* '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{($ Id.VSub_DollarName '$GLOBFILES')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cmp>} {<'/bin/'> ($ Id.VSub_DollarName '$x')} 
                  {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$x')}
                )
                (C {<fail>} {(DQ <'corrupted copy after get'>)})
              ]
            )
          ]
        )
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': get to local dir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<echo>} {(DQ <'lcd '> (${ Id.VSub_Name COPY) <.dd>)})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} {(DQ <'get '> ($ Id.VSub_DollarName '$DATA'))})
                  ]
                )
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} 
          {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$DATANAME')}
        )
        (C {<fail>} {(DQ <'corrupted copy after get'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': glob get to local dir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<echo>} {(DQ <'lcd '> (${ Id.VSub_Name COPY) <.dd>)})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} {(DQ <'get /bin/l*'>)})
                  ]
                )
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'get failed'>)})
      ]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{($ Id.VSub_DollarName '$GLOBFILES')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cmp>} {<'/bin/'> ($ Id.VSub_DollarName '$x')} 
                  {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$x')}
                )
                (C {<fail>} {(DQ <'corrupted copy after get'>)})
              ]
            )
          ]
        )
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': put'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {(DQ <'put '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))}
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'put failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} {(${ Id.VSub_Name COPY)})
        (C {<fail>} {(DQ <'corrupted copy after put'>)})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$os'))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <cygwin>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<rm>} {<-f>} {(${ Id.VSub_Name QUOTECOPY)})
            (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': put filename with quotes'>)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} 
                      {
                        (DQ <'put '> ($ Id.VSub_DollarName '$DATA') <' '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) ($ Id.VSub_DollarName '$QUOTECOPY_ARG') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                        )
                      }
                    )
                    (command.Simple
                      words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  negated: F
                )
                (C {<fail>} {(DQ <'put failed'>)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} {(${ Id.VSub_Name QUOTECOPY)})
                (C {<fail>} {(DQ <'corrupted copy after put with quotes'>)})
              ]
            )
          ]
          spids: [1414 1432]
        )
      ]
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$SPACECOPY'))})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': put filename with spaces'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {(DQ <'put '> ($ Id.VSub_DollarName '$DATA') <' '> (${ Id.VSub_Name SPACECOPY_ARG))}
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'put failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} {(DQ ($ Id.VSub_DollarName '$SPACECOPY'))})
        (C {<fail>} {(DQ <'corrupted copy after put with spaces'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': put to directory'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {(DQ <'put '> ($ Id.VSub_DollarName '$DATA') <' '> (${ Id.VSub_Name COPY) <.dd>)}
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'put failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} 
          {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$DATANAME')}
        )
        (C {<fail>} {(DQ <'corrupted copy after put'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': glob put to directory'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'put /bin/l? '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'put failed'>)})
      ]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{($ Id.VSub_DollarName '$GLOBFILES')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cmp>} {<'/bin/'> ($ Id.VSub_DollarName '$x')} 
                  {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$x')}
                )
                (C {<fail>} {(DQ <'corrupted copy after put'>)})
              ]
            )
          ]
        )
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': put to local dir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<echo>} {(DQ <'cd '> (${ Id.VSub_Name COPY) <.dd>)})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} {(DQ <'put '> ($ Id.VSub_DollarName '$DATA'))})
                  ]
                )
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'put failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {($ Id.VSub_DollarName '$DATA')} 
          {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$DATANAME')}
        )
        (C {<fail>} {(DQ <'corrupted copy after put'>)})
      ]
    )
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <'.dd/'> <Id.Lit_Star '*'>})
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': glob put to local dir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<echo>} {(DQ <'cd '> (${ Id.VSub_Name COPY) <.dd>)})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} {(DQ <'put /bin/l?'>)})
                  ]
                )
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'put failed'>)})
      ]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{($ Id.VSub_DollarName '$GLOBFILES')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cmp>} {<'/bin/'> ($ Id.VSub_DollarName '$x')} 
                  {(${ Id.VSub_Name COPY) <'.dd/'> ($ Id.VSub_DollarName '$x')}
                )
                (C {<fail>} {(DQ <'corrupted copy after put'>)})
              ]
            )
          ]
        )
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': rename'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {(DQ <'rename '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)}
            )
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'rename failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {(${ Id.VSub_Name COPY) <.1>})
        (C {<fail>} {(DQ <'missing file after rename'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<cmp>} {($ Id.VSub_DollarName '$DATA')} {(${ Id.VSub_Name COPY) <.1>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
          do_fork: T
        )
        (C {<fail>} {(DQ <'corrupted copy after rename'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': rename directory'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'rename '> (${ Id.VSub_Name COPY) <'.dd '> (${ Id.VSub_Name COPY) <.dd2>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'rename directory failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-d>} {(${ Id.VSub_Name COPY) <.dd>})
        (C {<fail>} {(DQ <'oldname exists after rename directory'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-d>} {(${ Id.VSub_Name COPY) <.dd2>})
        (C {<fail>} {(DQ <'missing newname after rename directory'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': ln'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'ln '> (${ Id.VSub_Name COPY) <'.1 '> (${ Id.VSub_Name COPY) <.2>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'ln failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {(${ Id.VSub_Name COPY) <.2>})
        (C {<fail>} {(DQ <'missing file after ln'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cmp>} {(${ Id.VSub_Name COPY) <.1>} {(${ Id.VSub_Name COPY) <.2>})
        (C {<fail>} {(DQ <'created file is not equal after ln'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': ln -s'>)})
    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY) <.2>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'ln -s '> (${ Id.VSub_Name COPY) <'.1 '> (${ Id.VSub_Name COPY) <.2>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'ln -s failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-h>} {(${ Id.VSub_Name COPY) <.2>})
        (C {<fail>} {(DQ <'missing file after ln -s'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': mkdir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'mkdir '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'mkdir failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-d>} {(${ Id.VSub_Name COPY) <.dd>})
        (C {<fail>} {(DQ <'missing directory after mkdir'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': chdir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'chdir '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'chdir failed'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': rmdir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'rmdir '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'rmdir failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-d>} {(${ Id.VSub_Name COPY) <.1>})
        (C {<fail>} {(DQ <'present directory after rmdir'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': lmkdir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'lmkdir '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'lmkdir failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-d>} {(${ Id.VSub_Name COPY) <.dd>})
        (C {<fail>} {(DQ <'missing directory after lmkdir'>)})
      ]
    )
    (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': lchdir'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} {(DQ <'lchdir '> (${ Id.VSub_Name COPY) <.dd>)})
            (command.Simple
              words: [{(${ Id.VSub_Name SFTP)} {<-D>} {(${ Id.VSub_Name SFTPSERVER)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (C {<fail>} {(DQ <'lchdir failed'>)})
      ]
    )
    (C {<rm>} {<-rf>} {(${ Id.VSub_Name COPY)} {(${ Id.VSub_Name COPY) <.1>} {(${ Id.VSub_Name COPY) <.2>} 
      {(${ Id.VSub_Name COPY) <.dd>} {(${ Id.VSub_Name COPY) <.dd2>}
    )
    (C {<rm>} {<-rf>} {(${ Id.VSub_Name QUOTECOPY)} {(DQ ($ Id.VSub_DollarName '$SPACECOPY'))} 
      {(DQ ($ Id.VSub_DollarName '$GLOBMETACOPY'))}
    )
  ]
)