(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'simple connect after reconfigure'>)}
          spids: [7]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$USE_VALGRIND'))} {<Id.Lit_Equals '='>} 
                      {(DQ <x>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$SSHD')}
              arms: [
                (case_arm pat_list:[{<'/'> <Id.Lit_Star '*'>}] spids:[43 45 52 -1])
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SSHD)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$OBJ') <'/'> ($ Id.VSub_DollarName '$SSHD')}
                          spids: [63]
                        )
                      ]
                    )
                  ]
                  spids: [55 56 -1 69]
                )
              ]
            )
          ]
          spids: [16 33]
        )
      ]
    )
    (C {<start_sshd>})
    (C {<trace>} {(DQ <'connect before restart'>)})
    (command.ForEach
      iter_name: p
      iter_words: [{(${ Id.VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(${ Id.VSub_Name SSH)} {<-o>} {(DQ <'Protocol='> ($ Id.VSub_DollarName '$p'))} {<-F>} 
              {($ Id.VSub_DollarName '$OBJ') <'/ssh_config'>} {<somehost>} {<true>}
            )
            (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 connect with protocol '> ($ Id.VSub_DollarName '$p') 
                          <' failed before reconfigure'>
                        )
                      }
                    )
                  ]
                  spids: [119 132]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PID)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {($ Id.VSub_DollarName '$SUDO')} {<cat>} {($ Id.VSub_DollarName '$PIDFILE')})
              )
            }
          spids: [149]
        )
      ]
    )
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$PIDFILE')})
    (C {($ Id.VSub_DollarName '$SUDO')} {<kill>} {<-HUP>} {($ Id.VSub_DollarName '$PID')})
    (C {<trace>} {(DQ <'wait for sshd to restart'>)})
    (command.Sentence
      child: 
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:i)
              op: assign_op.Equal
              rhs: {<0>}
              spids: [181]
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName '$PIDFILE')} 
                  {<-a>} {($ Id.VSub_DollarName '$i')} {<-lt>} {<10>} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<expr>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_Other '+'>} {<1>})
                      )
                    }
                  spids: [209]
                )
              ]
            )
            (C {<sleep>} {($ Id.VSub_DollarName '$i')})
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$PIDFILE')})
        (C {<fatal>} {(DQ <'sshd did not restart'>)})
      ]
    )
    (C {<trace>} {(DQ <'connect after restart'>)})
    (command.ForEach
      iter_name: p
      iter_words: [{(${ Id.VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(${ Id.VSub_Name SSH)} {<-o>} {(DQ <'Protocol='> ($ Id.VSub_DollarName '$p'))} {<-F>} 
              {($ Id.VSub_DollarName '$OBJ') <'/ssh_config'>} {<somehost>} {<true>}
            )
            (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 connect with protocol '> ($ Id.VSub_DollarName '$p') 
                          <' failed after reconfigure'>
                        )
                      }
                    )
                  ]
                  spids: [287 300]
                )
              ]
            )
          ]
        )
    )
  ]
)