(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'reexec tests'>)}
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SSHD_ORIG)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$SSHD')}
          spids: [13]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SSHD_COPY)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$OBJ') <'/sshd'>}
          spids: [16]
        )
      ]
    )
    (command.ShFunction
      name: start_sshd_copy
      body: 
        (BraceGroup
          children: [
            (C {<cp>} {($ Id.VSub_DollarName '$SSHD_ORIG')} {($ Id.VSub_DollarName '$SSHD_COPY')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SSHD)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$SSHD_COPY')}
                  spids: [39]
                )
              ]
            )
            (C {<start_sshd>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SSHD)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$SSHD_ORIG')}
                  spids: [46]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: copy_tests
      body: 
        (BraceGroup
          children: [
            (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)})
            (command.ForEach
              iter_name: p
              iter_words: [{(${ Id.VSub_Name SSH_PROTOCOLS)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<verbose>} 
                      {(DQ ($ Id.VSub_DollarName '$tid') <': proto '> ($ Id.VSub_DollarName '$p'))}
                    )
                    (command.Simple
                      words: [
                        {(${ Id.VSub_Name SSH)}
                        {<-nqo>}
                        {(DQ <'Protocol='> ($ Id.VSub_DollarName '$p'))}
                        {<-F>}
                        {($ Id.VSub_DollarName '$OBJ') <'/ssh_config'>}
                        {<somehost>}
                        {<cat>}
                        {(${ Id.VSub_Name DATA)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name COPY)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<fail>} {(DQ <'ssh cat '> ($ Id.VSub_DollarName '$DATA') <' failed'>)})
                          ]
                          spids: [129 142]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<cmp>} {(${ Id.VSub_Name DATA)} {(${ Id.VSub_Name COPY)})
                        (C {<fail>} {(DQ <'corrupted copy'>)})
                      ]
                    )
                    (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)})
                  ]
                )
            )
          ]
        )
    )
    (C {<verbose>} {(DQ <'test config passing'>)})
    (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} 
      {($ Id.VSub_DollarName '$OBJ') <'/sshd_config.orig'>}
    )
    (C {<start_sshd>})
    (command.Simple
      words: [{<echo>} {(DQ <'InvalidXXX=no'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>}
        )
      ]
      do_fork: T
    )
    (C {<copy_tests>})
    (C {<stop_sshd>})
    (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config.orig'>} 
      {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>}
    )
    (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 {<verbose>} {(DQ <'test reexec fallback'>)})
            (C {<start_sshd_copy>})
            (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$SSHD_COPY')})
            (C {<copy_tests>})
            (C {<stop_sshd>})
            (C {<verbose>} {(DQ <'test reexec fallback without privsep'>)})
            (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config.orig'>} 
              {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>}
            )
            (command.Simple
              words: [{<echo>} {(DQ <'UsePrivilegeSeparation=no'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>}
                )
              ]
              do_fork: T
            )
            (C {<start_sshd_copy>})
            (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$SSHD_COPY')})
            (C {<copy_tests>})
            (C {<stop_sshd>})
          ]
          spids: [237 255]
        )
      ]
    )
  ]
)