(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ ('broken pipe test'))} spids:[7])]
      spids: [7]
    )
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('protocol ') ($ VSub_Name '$p'))})
            (ForEach
              iter_name: i
              iter_words: [{(1)} {(2)} {(3)} {(4)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(${ VSub_Name SSH)}
                            {(-) ($ VSub_Name '$p')}
                            {(-F)}
                            {($ VSub_Name '$OBJ') (/ssh_config_config)}
                            {(nexthost)}
                            {(echo)}
                            {($ VSub_Name '$i')}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [71]
                            )
                          ]
                        )
                        (C {(true)})
                      ]
                      negated: False
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:r)
                          op: Equal
                          rhs: {($ VSub_QMark '$?')}
                          spids: [80]
                        )
                      ]
                      spids: [80]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} 
                              {
                                (DQ ('broken pipe returns ') ($ VSub_Name '$r') (' for protocol ') 
                                  ($ VSub_Name '$p')
                                )
                              }
                            )
                          ]
                          spids: [-1 97]
                        )
                      ]
                      spids: [-1 110]
                    )
                  ]
                  spids: [50 113]
                )
              spids: [40 48]
            )
          ]
          spids: [24 115]
        )
      spids: [18 22]
    )
  ]
)