(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <_ssh_queries>
      name: _ssh_queries
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY+='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY+='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY+='> name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [
                                    {<compgen>}
                                    {<-W>}
                                    {(DQ <'cipher cipher-auth mac kex key protocol-version'>)}
                                    {<-->}
                                    {(DQ ($ Id.VSub_DollarName cur))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_ssh_query>
      name: _ssh_query
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.Left_DollarBrace '${'>
              more_env: []
              words: [
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<ssh>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {<-Q>}
                {($ Id.VSub_Number 2)}
              ]
              redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_ssh_ciphers>
      name: _ssh_ciphers
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'ciphers='> (SQ <'$( _ssh_query "$1" cipher )'>)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName ciphers)})
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ciphers='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ciphers='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ciphers='> name:ciphers)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'3des-cbc aes128-cbc aes192-cbc aes256-cbc\n'> 
                            <
'        aes128-ctr aes192-ctr aes256-ctr arcfour128 arcfour256 arcfour\n'
                            > <'        blowfish-cbc cast128-cbc'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY+='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY+='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY+='> name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [
                                    {<compgen>}
                                    {<-W>}
                                    {(DQ ($ Id.VSub_DollarName ciphers))}
                                    {<-->}
                                    {(DQ ($ Id.VSub_DollarName cur))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_ssh_macs>
      name: _ssh_macs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'macs='> (SQ <'$( _ssh_query "$1" mac )'>)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName macs)})
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'macs='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'macs='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'macs='> name:macs)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'hmac-md5 hmac-sha1 umac-64@openssh.com hmac-ripemd160\n'> 
                            <'        hmac-sha1-96 hmac-md5-96'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY+='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY+='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY+='> name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [
                                    {<compgen>}
                                    {<-W>}
                                    {(DQ ($ Id.VSub_DollarName macs))}
                                    {<-->}
                                    {(DQ ($ Id.VSub_DollarName cur))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_ssh_options>
      name: _ssh_options
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <compopt>
              more_env: []
              words: [{<compopt>} {<-o>} {<nospace>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [
                                    {<compgen>}
                                    {<-S>}
                                    {<Id.Lit_Equals '='>}
                                    {<-W>}
                                    {
                                      (SQ <'AddressFamily BatchMode BindAddress\n'> 
                                        <
'        ChallengeResponseAuthentication CheckHostIP Cipher Ciphers\n'
                                        > <'        ClearAllForwardings Compression CompressionLevel ConnectionAttempts\n'> 
                                        <
'        ConnectTimeout ControlMaster ControlPath ControlPersist DynamicForward\n'
                                        > <'        EnableSSHKeysign EscapeChar ExitOnForwardFailure ForwardAgent\n'> 
                                        <
'        ForwardX11 ForwardX11Timeout ForwardX11Trusted GatewayPorts\n'
                                        > <'        GlobalKnownHostsFile GSSAPIAuthentication GSSAPIClientIdentity\n'> 
                                        <
'        GSSAPIDelegateCredentials GSSAPIKeyExchange GSSAPIRenewalForcesRekey\n'
                                        > <'        GSSAPIServerIdentity GSSAPITrustDns HashKnownHosts Host\n'> 
                                        <
'        HostbasedAuthentication HostKeyAlgorithms HostKeyAlias HostName\n'
                                        > <'        IdentityFile IdentitiesOnly IPQoS KbdInteractiveDevices KexAlgorithms\n'> 
                                        <'        LocalCommand LocalForward LogLevel MACs\n'> <'        NoHostAuthenticationForLocalhost NumberOfPasswordPrompts\n'> 
                                        <
'        PasswordAuthentication PermitLocalCommand PKCS11Provider Port\n'
                                        > <'        PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication\n'> 
                                        <
'        RekeyLimit RemoteForward RequestTTY RhostsRSAAuthentication\n'
                                        > <'        RSAAuthentication SendEnv ServerAliveCountMax ServerAliveInterval\n'> 
                                        <
'        SmartcardDevice StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice\n'
                                        > <'        UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS\n'> 
                                        <'        VisualHostKey XAuthLocation'>
                                      )
                                    }
                                    {<-->}
                                    {(DQ ($ Id.VSub_DollarName cur))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_ssh_suboption>
      name: _ssh_suboption
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'prev='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<'='> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {<Id.Lit_VarLike 'cur='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_Pound '#'>
                        arg_word: {<Id.Lit_Other '*'> <'='>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName prev)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <BatchMode>
                  pattern: 
                    (pat.Words
                      words: [
                        {<BatchMode>}
                        {<ChallengeResponseAuthentication>}
                        {<CheckHostIP>}
                        {<ClearAllForwardings>}
                        {<ControlPersist>}
                        {<Compression>}
                        {<EnableSSHKeysign>}
                        {<ExitOnForwardFailure>}
                        {<ForwardAgent>}
                        {<ForwardX11>}
                        {<ForwardX11Trusted>}
                        {<GatewayPorts>}
                        {<GSSAPIAuthentication>}
                        {<GSSAPIKeyExchange>}
                        {<GSSAPIDelegateCredentials>}
                        {<GSSAPIRenewalForcesRekey>}
                        {<GSSAPITrustDns>}
                        {<HashKnownHosts>}
                        {<HostbasedAuthentication>}
                        {<IdentitiesOnly>}
                        {<KbdInteractiveAuthentication>}
                        {<KbdInteractiveDevices>}
                        {<NoHostAuthenticationForLocalhost>}
                        {<PasswordAuthentication>}
                        {<PubkeyAuthentication>}
                        {<RhostsRSAAuthentication>}
                        {<RSAAuthentication>}
                        {<StrictHostKeyChecking>}
                        {<TCPKeepAlive>}
                        {<UsePrivilegedPort>}
                        {<VerifyHostKeyDNS>}
                        {<VisualHostKey>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'yes no'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <AddressFamily>
                  pattern: (pat.Words words:[{<AddressFamily>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'any inet inet6'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <BindAddress>
                  pattern: (pat.Words words:[{<BindAddress>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <_ip_addresses>
                      more_env: []
                      words: [{<_ip_addresses>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Cipher>
                  pattern: (pat.Words words:[{<Cipher>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'blowfish des 3des'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <IPQoS>
                  pattern: (pat.Words words:[{<IPQoS>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {
                                              (SQ <'af1{1..4} af2{2..3} af3{1..3} af4{1..3}\n'> 
                                                <
'                cs{0..7} ef lowdelay throughput reliability'
                                                >
                                              )
                                            }
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <HostbasedKeyTypes>
                  pattern: (pat.Words words:[{<HostbasedKeyTypes>} {<HostKeyAlgorithms>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'$( _ssh_query "$2" key )'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <KexAlgorithms>
                  pattern: (pat.Words words:[{<KexAlgorithms>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'$( _ssh_query "$2" kex )'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Protocol>
                  pattern: (pat.Words words:[{<Protocol>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'1 2 1,2 2,1'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <RequestTTY>
                  pattern: (pat.Words words:[{<RequestTTY>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'no yes force auto'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Tunnel>
                  pattern: (pat.Words words:[{<Tunnel>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(SQ <'yes no point-to-point ethernet'>)}
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <PreferredAuthentications>
                  pattern: (pat.Words words:[{<PreferredAuthentications>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {
                                              (SQ <'gssapi-with-mic host-based publickey\n'> 
                                                <'                keyboard-interactive password'>
                                              )
                                            }
                                            {<-->}
                                            {(DQ ($ Id.VSub_DollarName cur))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <MACs>
                  pattern: (pat.Words words:[{<MACs>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <_ssh_macs>
                      more_env: []
                      words: [{<_ssh_macs>} {(DQ ($ Id.VSub_Number 2))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Ciphers>
                  pattern: (pat.Words words:[{<Ciphers>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <_ssh_ciphers>
                      more_env: []
                      words: [{<_ssh_ciphers>} {(DQ ($ Id.VSub_Number 2))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_ssh_suboption_check>
      name: _ssh_suboption_check
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'cureq='> 
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <_get_cword>
                        more_env: []
                        words: [{<_get_cword>} {<Id.Lit_Colon ':'> <Id.Lit_Equals '='>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
                {<Id.Lit_VarLike 'preveq='> 
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <_get_pword>
                        more_env: []
                        words: [{<_get_pword>} {<Id.Lit_Colon ':'> <Id.Lit_Equals '='>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName cureq)}
                                      right: 
                                        {<Id.Lit_Other '*'> <Id.BoolBinary_GlobEqual '='> 
                                          <Id.Lit_Other '*'>
                                        }
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName preveq)}
                                      right: {<Id.BoolUnary_o -o>}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_ssh_suboption>
                      more_env: []
                      words: [
                        {<_ssh_suboption>}
                        {($ Id.VSub_DollarName cureq)}
                        {(DQ ($ Id.VSub_Number 1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  spids: [780 803]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.AndOr
      children: [
        (command.ShFunction
          name_tok: <_ssh>
          name: _ssh
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<cur>} {<prev>} {<words>} {<cword>}]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_init_completion>
                      more_env: []
                      words: [{<_init_completion>} {<-n>} {<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<configfile>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<-a>} {<config>}]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_ssh_suboption_check>
                      more_env: []
                      words: [{<_ssh_suboption_check>} {(DQ ($ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName prev)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <-F>
                      pattern: (pat.Words words:[{<-F>} {<-i>} {<-S>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_filedir>
                          more_env: []
                          words: [{<_filedir>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-c>
                      pattern: (pat.Words words:[{<-c>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_ciphers>
                          more_env: []
                          words: [{<_ssh_ciphers>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-m>
                      pattern: (pat.Words words:[{<-m>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_macs>
                          more_env: []
                          words: [{<_ssh_macs>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-l>
                      pattern: (pat.Words words:[{<-l>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <compgen>
                                              more_env: []
                                              words: [
                                                {<compgen>}
                                                {<-u>}
                                                {<-->}
                                                {(DQ ($ Id.VSub_DollarName cur))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-O>
                      pattern: (pat.Words words:[{<-O>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <compgen>
                                              more_env: []
                                              words: [
                                                {<compgen>}
                                                {<-W>}
                                                {(SQ <'check forward exit stop'>)}
                                                {<-->}
                                                {(DQ ($ Id.VSub_DollarName cur))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-o>
                      pattern: (pat.Words words:[{<-o>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_options>
                          more_env: []
                          words: [{<_ssh_options>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-Q>
                      pattern: (pat.Words words:[{<-Q>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_queries>
                          more_env: []
                          words: [{<_ssh_queries>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-w>
                      pattern: (pat.Words words:[{<-w>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_available_interfaces>
                          more_env: []
                          words: [{<_available_interfaces>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-b>
                      pattern: (pat.Words words:[{<-b>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ip_addresses>
                          more_env: []
                          words: [{<_ip_addresses>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-D>
                      pattern: (pat.Words words:[{<-D>} {<-e>} {<-I>} {<-L>} {<-p>} {<-R>} {<-W>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName cur))}
                                      right: {<-F> <Id.Lit_Other '*'>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'cur='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'cur='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name cur>
                                    var_name: cur
                                    suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<-F>})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <_filedir>
                          more_env: []
                          words: [{<_filedir>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name COMPREPLY>
                                            var_name: COMPREPLY
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {<-F>}
                                                replace_mode: Id.Lit_Pound
                                                slash_tok: <Id.VOp2_Slash _>
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'cur='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'cur='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur)
                              op: assign_op.Equal
                              rhs: {<-F> ($ Id.VSub_DollarName cur)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1111 1127]
                    )
                    (IfArm
                      keyword: <Id.KW_Elif elif>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName cur))}
                                      right: {<-> <Id.Lit_Other '*'>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <compgen>
                                              more_env: []
                                              words: [
                                                {<compgen>}
                                                {<-W>}
                                                {(SQ <'$( _parse_usage "$1" )'>)}
                                                {<-->}
                                                {(DQ ($ Id.VSub_DollarName cur))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1172 1188]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [
                        {<set>}
                        {<-->}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name words>
                              var_name: words
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_gt
                                      left: {($ Id.VSub_Pound '#')}
                                      right: {<0>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: {($ Id.VSub_Number 1)}
                                                  right: {<-F> <Id.Lit_Other '*'>}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      left: <Id.KW_DLeftBracket '[['>
                                                      expr: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_gt
                                                          left: 
                                                            {
                                                              (BracedVarSub
                                                                left: <Id.Left_DollarBrace '${'>
                                                                token: <Id.VSub_Number 1>
                                                                var_name: 1
                                                                prefix_op: <Id.VSub_Pound '#'>
                                                                right: <Id.Right_DollarBrace '}'>
                                                              )
                                                            }
                                                          right: {<2>}
                                                        )
                                                      right: <Id.Lit_DRightBracket ']]'>
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'configfile='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'configfile='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'configfile='>
                                                      name: configfile
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <dequote>
                                                              more_env: []
                                                              words: [
                                                                {<dequote>}
                                                                {
                                                                  (DQ 
                                                                    (BracedVarSub
                                                                      left: 
                                                                        <Id.Left_DollarBrace '${'>
                                                                      token: <Id.VSub_Number 1>
                                                                      var_name: 1
                                                                      suffix_op: 
                                                                        (suffix_op.Slice
                                                                          begin: {<Id.Lit_Digits 2>}
                                                                        )
                                                                      right: <Id.Arith_RBrace _>
                                                                    )
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [1269 1285]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.Simple
                                          blame_tok: <shift>
                                          more_env: []
                                          words: [{<shift>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.AndOr
                                          children: [
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)})
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'configfile='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'configfile='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'configfile='>
                                                      name: configfile
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <dequote>
                                                              more_env: []
                                                              words: [
                                                                {<dequote>}
                                                                {(DQ ($ Id.VSub_Number 1))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _>]
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [1252 1266]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <_known_hosts_real>
                      more_env: []
                      words: [
                        {<_known_hosts_real>}
                        {<-a>}
                        {<-F>}
                        {(DQ ($ Id.VSub_DollarName configfile))}
                        {(DQ ($ Id.VSub_DollarName cur))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<args>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <_count_args>
                      more_env: []
                      words: [{<_count_args>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_gt
                                          left: {($ Id.VSub_DollarName args)}
                                          right: {<1>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <compopt>
                              more_env: []
                              words: [{<compopt>} {<-o>} {<filenames>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY+='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY+='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY+='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.PlusEqual
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-c>}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1369 1382]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.Simple
          blame_tok: <shopt>
          more_env: []
          words: [{<shopt>} {<-u>} {<hostcomplete>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_ssh>} {<ssh>} {<slogin>} {<autossh>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.ShFunction
          name_tok: <_sftp>
          name: _sftp
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<cur>} {<prev>} {<words>} {<cword>}]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_init_completion>
                      more_env: []
                      words: [{<_init_completion>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<configfile>}]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_ssh_suboption_check>
                      more_env: []
                      words: [{<_ssh_suboption_check>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName prev)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <-b>
                      pattern: (pat.Words words:[{<-b>} {<-F>} {<-i>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_filedir>
                          more_env: []
                          words: [{<_filedir>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-o>
                      pattern: (pat.Words words:[{<-o>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_options>
                          more_env: []
                          words: [{<_ssh_options>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-c>
                      pattern: (pat.Words words:[{<-c>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_ciphers>
                          more_env: []
                          words: [{<_ssh_ciphers>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-S>
                      pattern: (pat.Words words:[{<-S>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_command>
                          more_env: []
                          words: [{<_command>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-B>
                      pattern: (pat.Words words:[{<-B>} {<-D>} {<-l>} {<-P>} {<-R>} {<-s>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName cur))}
                                      right: {<-F> <Id.Lit_Other '*'>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'cur='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'cur='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name cur>
                                    var_name: cur
                                    suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<-F>})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <_filedir>
                          more_env: []
                          words: [{<_filedir>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name COMPREPLY>
                                            var_name: COMPREPLY
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {<-F>}
                                                replace_mode: Id.Lit_Pound
                                                slash_tok: <Id.VOp2_Slash _>
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'cur='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'cur='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur)
                              op: assign_op.Equal
                              rhs: {<-F> ($ Id.VSub_DollarName cur)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1593 1609]
                    )
                    (IfArm
                      keyword: <Id.KW_Elif elif>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName cur))}
                                      right: {<-> <Id.Lit_Other '*'>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <compgen>
                                              more_env: []
                                              words: [
                                                {<compgen>}
                                                {<-W>}
                                                {(SQ <'$( _parse_usage "$1" )'>)}
                                                {<-->}
                                                {(DQ ($ Id.VSub_DollarName cur))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1654 1670]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [
                        {<set>}
                        {<-->}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name words>
                              var_name: words
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_gt
                                      left: {($ Id.VSub_Pound '#')}
                                      right: {<0>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: {($ Id.VSub_Number 1)}
                                                  right: {<-F> <Id.Lit_Other '*'>}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      left: <Id.KW_DLeftBracket '[['>
                                                      expr: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_gt
                                                          left: 
                                                            {
                                                              (BracedVarSub
                                                                left: <Id.Left_DollarBrace '${'>
                                                                token: <Id.VSub_Number 1>
                                                                var_name: 1
                                                                prefix_op: <Id.VSub_Pound '#'>
                                                                right: <Id.Right_DollarBrace '}'>
                                                              )
                                                            }
                                                          right: {<2>}
                                                        )
                                                      right: <Id.Lit_DRightBracket ']]'>
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'configfile='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'configfile='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'configfile='>
                                                      name: configfile
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <dequote>
                                                              more_env: []
                                                              words: [
                                                                {<dequote>}
                                                                {
                                                                  (DQ 
                                                                    (BracedVarSub
                                                                      left: 
                                                                        <Id.Left_DollarBrace '${'>
                                                                      token: <Id.VSub_Number 1>
                                                                      var_name: 1
                                                                      suffix_op: 
                                                                        (suffix_op.Slice
                                                                          begin: {<Id.Lit_Digits 2>}
                                                                        )
                                                                      right: <Id.Arith_RBrace _>
                                                                    )
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [1751 1767]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.Simple
                                          blame_tok: <shift>
                                          more_env: []
                                          words: [{<shift>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.AndOr
                                          children: [
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)})
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'configfile='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'configfile='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'configfile='>
                                                      name: configfile
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <dequote>
                                                              more_env: []
                                                              words: [
                                                                {<dequote>}
                                                                {(DQ ($ Id.VSub_Number 1))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _>]
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [1734 1748]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <_known_hosts_real>
                      more_env: []
                      words: [
                        {<_known_hosts_real>}
                        {<-a>}
                        {<-F>}
                        {(DQ ($ Id.VSub_DollarName configfile))}
                        {(DQ ($ Id.VSub_DollarName cur))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.Simple
          blame_tok: <shopt>
          more_env: []
          words: [{<shopt>} {<-u>} {<hostcomplete>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_sftp>} {<sftp>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_scp_path_esc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_scp_path_esc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_scp_path_esc='> name:_scp_path_esc)
          op: assign_op.Equal
          rhs: {(SQ <'[][(){}<>",:;^&!$=?`|\\\\'>) (DQ <'\''>) (SQ <'[:space:]]'>)}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <_scp_remote_files>
      name: _scp_remote_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'IFS='> 
                  (SingleQuoted
                    left: <Id.Left_DollarSingleQuote '$\''>
                    tokens: [<Id.Char_OneChar '\\n'>]
                    right: <Id.Right_SingleQuote '\''>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cur='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cur='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name cur>
                        var_name: cur
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: 
                              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                <':'>
                              }
                            replace: {<':'>}
                            replace_mode: Id.Undefined_Tok
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'userhost='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name cur>
                    var_name: cur
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: 
                          {
                            (word_part.ExtGlob
                              op: <Id.ExtGlob_QMark '?('>
                              arms: [
                                {
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\\\'>
                                    ch: '\\'
                                  )
                                }
                              ]
                              right: <Id.Right_ExtGlob _>
                            ) <':'> <Id.Lit_Other '*'>
                          }
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'path='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name cur>
                    var_name: cur
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_Pound '#'>
                        arg_word: {<Id.Lit_Other '*'> <':'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'path='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'path='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <sed>
                            more_env: []
                            words: [
                              {<sed>}
                              {<-e>}
                              {(SQ <'s/\\\\\\\\\\\\\\('>) ($ Id.VSub_DollarName _scp_path_esc) 
                                (SQ <'\\)/\\\\\\1/g'>)
                              }
                            ]
                            redirects: [
                              (Redir
                                op: <Id.Redir_TLess '<<<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {(DQ ($ Id.VSub_DollarName path))}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName path)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'path='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'path='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <ssh>
                                    more_env: []
                                    words: [
                                      {<ssh>}
                                      {<-o>}
                                      {(SQ <'Batchmode yes'>)}
                                      {($ Id.VSub_DollarName userhost)}
                                      {<pwd>}
                                    ]
                                    redirects: [
                                      (Redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1982 1993]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<files>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number 1)}
                                  right: {<Id.BoolUnary_d -d>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'files='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'files='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <ssh>
                                        more_env: []
                                        words: [
                                          {<ssh>}
                                          {<-o>}
                                          {(SQ <'Batchmode yes'>)}
                                          {($ Id.VSub_DollarName userhost)}
                                          {<command>}
                                          {<ls>}
                                          {<-aF1dL>}
                                          {(DQ ($ Id.VSub_DollarName path) <'*'>)}
                                        ]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <sed>
                                        more_env: []
                                        words: [
                                          {<sed>}
                                          {<-e>}
                                          {(SQ <'s/'>) ($ Id.VSub_DollarName _scp_path_esc) 
                                            (SQ <'/\\\\\\\\\\\\&/g'>)
                                          }
                                          {<-e>}
                                          {(SQ <'/[^\\/]$/d'>)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2024 2037]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'files='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'files='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <ssh>
                                    more_env: []
                                    words: [
                                      {<ssh>}
                                      {<-o>}
                                      {(SQ <'Batchmode yes'>)}
                                      {($ Id.VSub_DollarName userhost)}
                                      {<command>}
                                      {<ls>}
                                      {<-aF1dL>}
                                      {(DQ ($ Id.VSub_DollarName path) <'*'>)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <sed>
                                    more_env: []
                                    words: [
                                      {<sed>}
                                      {<-e>}
                                      {(SQ <'s/'>) ($ Id.VSub_DollarName _scp_path_esc) 
                                        (SQ <'/\\\\\\\\\\\\&/g'>)
                                      }
                                      {<-e>}
                                      {(SQ <'s/[*@|=]$//g'>)}
                                      {<-e>}
                                      {(SQ <'s/[^\\/]$/& /g'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY+='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY+='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY+='> name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [{($ Id.VSub_DollarName files)}]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_scp_local_files>
      name: _scp_local_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'IFS='> 
                  (SingleQuoted
                    left: <Id.Left_DollarSingleQuote '$\''>
                    tokens: [<Id.Char_OneChar '\\n'>]
                    right: <Id.Right_SingleQuote '\''>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'dirsonly='> <false>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number 1)}
                                  right: {<Id.BoolUnary_d -d>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'dirsonly='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'dirsonly='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirsonly='> name:dirsonly)
                          op: assign_op.Equal
                          rhs: {<true>}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2218 2231]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.VSub_DollarName '$dirsonly'>
                              more_env: []
                              words: [{($ Id.VSub_DollarName dirsonly)}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY+='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY+='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY+='> name:COMPREPLY)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              blame_tok: <command>
                                              more_env: []
                                              words: [
                                                {<command>}
                                                {<ls>}
                                                {<-aF1dL>}
                                                {($ Id.VSub_DollarName cur) <Id.Lit_Star '*'>}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Great '2>'>
                                                  loc: (redir_loc.Fd fd:2)
                                                  arg: {<'/dev/null'>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <sed>
                                              more_env: []
                                              words: [
                                                {<sed>}
                                                {<-e>}
                                                {
                                                  (DQ <'s/'> ($ Id.VSub_DollarName _scp_path_esc) <'/'> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\\\'>
                                                      ch: '\\'
                                                    ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'&/g'>
                                                  )
                                                }
                                                {<-e>}
                                                {(SQ <'/[^\\/]$/d'>)}
                                                {<-e>}
                                                {(DQ <'s/^/'> ($ Id.VSub_Number 1) <'/'>)}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_Pipe _>]
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2245 2251]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'COMPREPLY+='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'COMPREPLY+='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY+='> name:COMPREPLY)
                      op: assign_op.PlusEqual
                      rhs: 
                        {
                          (ShArrayLiteral
                            left: <Id.Op_LParen _>
                            words: [
                              {
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <command>
                                          more_env: []
                                          words: [
                                            {<command>}
                                            {<ls>}
                                            {<-aF1dL>}
                                            {($ Id.VSub_DollarName cur) <Id.Lit_Star '*'>}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <sed>
                                          more_env: []
                                          words: [
                                            {<sed>}
                                            {<-e>}
                                            {
                                              (DQ <'s/'> ($ Id.VSub_DollarName _scp_path_esc) <'/'> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\\\'>
                                                  ch: '\\'
                                                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'&/g'>
                                              )
                                            }
                                            {<-e>}
                                            {(SQ <'s/[*@|=]$//g'>)}
                                            {<-e>}
                                            {(SQ <'s/[^\\/]$/& /g'>)}
                                            {<-e>}
                                            {(DQ <'s/^/'> ($ Id.VSub_Number 1) <'/'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              }
                            ]
                            right: <Id.Right_ShArrayLiteral _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.AndOr
      children: [
        (command.ShFunction
          name_tok: <_scp>
          name: _scp
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<cur>} {<prev>} {<words>} {<cword>}]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_init_completion>
                      more_env: []
                      words: [{<_init_completion>} {<-n>} {<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<configfile>} {<prefix>}]
                  redirects: []
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_ssh_suboption_check>
                      more_env: []
                      words: [{<_ssh_suboption_check>}]
                      redirects: []
                      do_fork: T
                    )
                    (BraceGroup
                      left: <Id.Lit_LBrace '{'>
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name COMPREPLY>
                                            var_name: COMPREPLY
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {<' '>}
                                                replace_mode: Id.Lit_Percent
                                                slash_tok: <Id.VOp2_Slash _>
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      redirects: []
                      right: <Id.Lit_RBrace '}'>
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName prev)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <-l>
                      pattern: (pat.Words words:[{<-l>} {<-P>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-F>
                      pattern: (pat.Words words:[{<-F>} {<-i>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_filedir>
                          more_env: []
                          words: [{<_filedir>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <compopt>
                          more_env: []
                          words: [{<compopt>} {<Id.Lit_Other '+'> <o>} {<nospace>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-c>
                      pattern: (pat.Words words:[{<-c>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_ciphers>
                          more_env: []
                          words: [{<_ssh_ciphers>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name COMPREPLY>
                                            var_name: COMPREPLY
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {<' '>}
                                                replace_mode: Id.Lit_Percent
                                                slash_tok: <Id.VOp2_Slash _>
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      }
                                    ]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-o>
                      pattern: (pat.Words words:[{<-o>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_ssh_options>
                          more_env: []
                          words: [{<_ssh_options>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <-S>
                      pattern: (pat.Words words:[{<-S>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <_command>
                          more_env: []
                          words: [{<_command>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <compopt>
                          more_env: []
                          words: [{<compopt>} {<Id.Lit_Other '+'> <o>} {<nospace>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <_expand>
                      more_env: []
                      words: [{<_expand>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName cur)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <Id.ExtGlob_Bang '!('>
                      pattern: 
                        (pat.Words
                          words: [
                            {
                              (word_part.ExtGlob
                                op: <Id.ExtGlob_Bang '!('>
                                arms: [{<Id.Lit_Other '*'> <':'> <Id.Lit_Other '*'>}]
                                right: <Id.Right_ExtGlob _>
                              ) <'/'> <Id.Lit_Star '*'>
                            }
                            {<Id.Lit_LBracket '['> <.> <Id.Lit_TildeLike '~'> <Id.Lit_RBracket ']'> 
                              <Id.Lit_Star '*'>
                            }
                          ]
                        )
                      middle: <Id.Right_CasePat _>
                      action: []
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: 
                        (pat.Words
                          words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                        )
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_scp_remote_files>
                              more_env: []
                              words: [{<_scp_remote_files>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName cur))}
                                      right: {<-F> <Id.Lit_Other '*'>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'cur='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'cur='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur='> name:cur)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name cur>
                                    var_name: cur
                                    suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<-F>})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'prefix='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'prefix='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix)
                              op: assign_op.Equal
                              rhs: {<-F>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [2633 2649]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [
                        {<set>}
                        {<-->}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name words>
                              var_name: words
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_gt
                                      left: {($ Id.VSub_Pound '#')}
                                      right: {<0>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: {($ Id.VSub_Number 1)}
                                                  right: {<-F> <Id.Lit_Other '*'>}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      left: <Id.KW_DLeftBracket '[['>
                                                      expr: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_gt
                                                          left: 
                                                            {
                                                              (BracedVarSub
                                                                left: <Id.Left_DollarBrace '${'>
                                                                token: <Id.VSub_Number 1>
                                                                var_name: 1
                                                                prefix_op: <Id.VSub_Pound '#'>
                                                                right: <Id.Right_DollarBrace '}'>
                                                              )
                                                            }
                                                          right: {<2>}
                                                        )
                                                      right: <Id.Lit_DRightBracket ']]'>
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'configfile='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'configfile='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'configfile='>
                                                      name: configfile
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <dequote>
                                                              more_env: []
                                                              words: [
                                                                {<dequote>}
                                                                {
                                                                  (DQ 
                                                                    (BracedVarSub
                                                                      left: 
                                                                        <Id.Left_DollarBrace '${'>
                                                                      token: <Id.VSub_Number 1>
                                                                      var_name: 1
                                                                      suffix_op: 
                                                                        (suffix_op.Slice
                                                                          begin: {<Id.Lit_Digits 2>}
                                                                        )
                                                                      right: <Id.Arith_RBrace _>
                                                                    )
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [2718 2734]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.Simple
                                          blame_tok: <shift>
                                          more_env: []
                                          words: [{<shift>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.AndOr
                                          children: [
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)})
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'configfile='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'configfile='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'configfile='>
                                                      name: configfile
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <dequote>
                                                              more_env: []
                                                              words: [
                                                                {<dequote>}
                                                                {(DQ ($ Id.VSub_Number 1))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _>]
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [2701 2715]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName cur)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-W>}
                                                    {(SQ <'$( _parse_usage "${words[0]}" )'>)}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name COMPREPLY>
                                                var_name: COMPREPLY
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                suffix_op: 
                                                  (suffix_op.PatSub
                                                    pat: {}
                                                    replace: {<' '>}
                                                    replace_mode: Id.Lit_Percent
                                                    slash_tok: <Id.VOp2_Slash _>
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}
                                {<Id.Lit_LBracket '['> <.> <Id.Lit_TildeLike '~'> <Id.Lit_RBracket ']'> 
                                  <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <_known_hosts_real>
                              more_env: []
                              words: [
                                {<_known_hosts_real>}
                                {<-c>}
                                {<-a>}
                                {<-F>}
                                {(DQ ($ Id.VSub_DollarName configfile))}
                                {(DQ ($ Id.VSub_DollarName cur))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <_scp_local_files>
                  more_env: []
                  words: [{<_scp_local_files>} {(DQ ($ Id.VSub_DollarName prefix))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_scp>} {<-o>} {<nospace>} {<scp>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
  ]
)