(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'environment passing'>)}
          spids: [7]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 34
              stdin_parts: [<'Host test-sendenv-confparse-bug\n'> <'\tSendEnv *\n'>]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>}
        )
      ]
      do_fork: T
    )
    (C {<trace>} {(DQ <'pass env, don\'t accept'>)})
    (C {<verbose>} {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': pass env, don\'t accept'>)})
    (command.Simple
      words: [
        {(${ Id.VSub_Name SSH)}
        {<-oSendEnv> <Id.Lit_Equals '='> (DQ <'*'>)}
        {<-F>}
        {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>}
        {<otherhost>}
        {<sh>}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 91
              stdin_parts: [<'\ttest -z "$_TEST_ENV"\n'>]
            )
        )
      ]
      more_env: [(env_pair name:_TEST_ENV val:{<blah>} spids:[60])]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:r)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [92]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<fail>} {(DQ <'environment found'>)})]
          spids: [95 108]
        )
      ]
    )
    (C {<trace>} {(DQ <'don\'t pass env, accept'>)})
    (C {<verbose>} {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': don\'t pass env, accept'>)})
    (command.Simple
      words: [
        {(${ Id.VSub_Name SSH)}
        {<-F>}
        {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>}
        {<otherhost>}
        {<sh>}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 162
              stdin_parts: [<'\ttest -z "$_XXX_TEST_A" && test -z "$_XXX_TEST_B"\n'>]
            )
        )
      ]
      more_env: [
        (env_pair name:_XXX_TEST_A val:{<1>} spids:[134])
        (env_pair name:_XXX_TEST_B val:{<2>} spids:[137])
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:r)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [163]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<fail>} {(DQ <'environment found'>)})]
          spids: [166 179]
        )
      ]
    )
    (C {<trace>} {(DQ <'pass single env, accept single env'>)})
    (C {<verbose>} 
      {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': pass single env, accept single env'>)}
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name SSH)}
        {<-oSendEnv> <Id.Lit_Equals '='> (DQ <_XXX_TEST>)}
        {<-F>}
        {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>}
        {<otherhost>}
        {<sh>}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 236
              stdin_parts: [<'\ttest X"$_XXX_TEST" = X"blah"\n'>]
            )
        )
      ]
      more_env: [(env_pair name:_XXX_TEST val:{<blah>} spids:[205])]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:r)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [237]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<fail>} {(DQ <'environment not found'>)})]
          spids: [240 253]
        )
      ]
    )
    (C {<trace>} {(DQ <'pass multiple env, accept multiple env'>)})
    (C {<verbose>} 
      {(DQ <'test '> ($ Id.VSub_DollarName '$tid') <': pass multiple env, accept multiple env'>)}
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name SSH)}
        {<-oSendEnv> <Id.Lit_Equals '='> (DQ <'_XXX_TEST_*'>)}
        {<-F>}
        {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>}
        {<otherhost>}
        {<sh>}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 315
              stdin_parts: [<'\ttest X"$_XXX_TEST_A" = X"1" -a X"$_XXX_TEST_B" = X"2"\n'>]
            )
        )
      ]
      more_env: [
        (env_pair name:_XXX_TEST_A val:{<1>} spids:[279])
        (env_pair name:_XXX_TEST_B val:{<2>} spids:[282])
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:r)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [316]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<fail>} {(DQ <'environment not found'>)})]
          spids: [319 332]
        )
      ]
    )
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_envpass'>})
  ]
)