(command.CommandList
  children: [
    (command.ShFunction
      name: _ssh_queries
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:12)
                        words: [
                          {
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:14)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} 
                                      {(DQ ('cipher cipher-auth mac kex key protocol-version'))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                    )
                                  ]
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [11]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _ssh_query
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {
                  (braced_var_sub
                    token: (Token id:Id.VSub_Number val:1 span_id:47)
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(ssh)})
                  )
                }
                {(-Q)}
                {($ Id.VSub_Number '$2')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:56)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _ssh_ciphers
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'ciphers=') 
                (SQ (Token id:Id.Lit_Chars val:'$( _ssh_query "$1" cipher )' span_id:73))
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DBracket
                  expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$ciphers')})
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name 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')
                          )
                        }
                      spids: [85]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:94)
                        words: [
                          {
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:96)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$ciphers'))} {(--)} 
                                      {(DQ ($ Id.VSub_DollarName '$cur'))}
                                    )
                                  ]
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [93]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _ssh_macs
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'macs=') 
                (SQ (Token id:Id.Lit_Chars val:'$( _ssh_query "$1" mac )' span_id:130))
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DBracket
                  expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$macs')})
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name 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')
                          )
                        }
                      spids: [142]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:150)
                        words: [
                          {
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:152)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$macs'))} {(--)} 
                                      {(DQ ($ Id.VSub_DollarName '$cur'))}
                                    )
                                  ]
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [149]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _ssh_options
      body: 
        (command.BraceGroup
          children: [
            (C {(compopt)} {(-o)} {(nospace)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:190)
                        words: [
                          {
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:192)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-S)} {(Id.Lit_Equals '=')} {(-W)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 'AddressFamily BatchMode BindAddress\n'
                                            span_id: 203
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        ChallengeResponseAuthentication CheckHostIP Cipher Ciphers\n'
                                            span_id: 204
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        ClearAllForwardings Compression CompressionLevel ConnectionAttempts\n'
                                            span_id: 205
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        ConnectTimeout ControlMaster ControlPath ControlPersist DynamicForward\n'
                                            span_id: 206
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        EnableSSHKeysign EscapeChar ExitOnForwardFailure ForwardAgent\n'
                                            span_id: 207
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        ForwardX11 ForwardX11Timeout ForwardX11Trusted GatewayPorts\n'
                                            span_id: 208
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        GlobalKnownHostsFile GSSAPIAuthentication GSSAPIClientIdentity\n'
                                            span_id: 209
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        GSSAPIDelegateCredentials GSSAPIKeyExchange GSSAPIRenewalForcesRekey\n'
                                            span_id: 210
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        GSSAPIServerIdentity GSSAPITrustDns HashKnownHosts Host\n'
                                            span_id: 211
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        HostbasedAuthentication HostKeyAlgorithms HostKeyAlias HostName\n'
                                            span_id: 212
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        IdentityFile IdentitiesOnly IPQoS KbdInteractiveDevices KexAlgorithms\n'
                                            span_id: 213
                                          ) (Token id:Id.Lit_Chars val:'        LocalCommand LocalForward LogLevel MACs\n' span_id:214) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        NoHostAuthenticationForLocalhost NumberOfPasswordPrompts\n'
                                            span_id: 215
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        PasswordAuthentication PermitLocalCommand PKCS11Provider Port\n'
                                            span_id: 216
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication\n'
                                            span_id: 217
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        RekeyLimit RemoteForward RequestTTY RhostsRSAAuthentication\n'
                                            span_id: 218
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        RSAAuthentication SendEnv ServerAliveCountMax ServerAliveInterval\n'
                                            span_id: 219
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        SmartcardDevice StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice\n'
                                            span_id: 220
                                          ) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'        UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS\n'
                                            span_id: 221
                                          ) (Token id:Id.Lit_Chars val:'        VisualHostKey XAuthLocation' span_id:222)
                                        )
                                      } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                    )
                                  ]
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [189]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _ssh_suboption
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'prev=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:268)
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{('=*')})
                )
              } 
              {(Id.Lit_VarLike 'cur=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:275)
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{('*=')})
                )
              }
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$prev')}
              arms: [
                (case_arm
                  pat_list: [
                    {(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)}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:376)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:378)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {(SQ (Token id:Id.Lit_Chars val:'yes no' span_id:385))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [375]
                        )
                      ]
                    )
                  ]
                  spids: [289 372 399 -1]
                )
                (case_arm
                  pat_list: [{(AddressFamily)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:407)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:409)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'any inet inet6'
                                                    span_id: 416
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [406]
                        )
                      ]
                    )
                  ]
                  spids: [402 403 430 -1]
                )
                (case_arm
                  pat_list: [{(BindAddress)}]
                  action: [(C {(_ip_addresses)})]
                  spids: [433 434 440 -1]
                )
                (case_arm
                  pat_list: [{(Cipher)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:448)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:450)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'blowfish des 3des'
                                                    span_id: 457
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [447]
                        )
                      ]
                    )
                  ]
                  spids: [443 444 471 -1]
                )
                (case_arm
                  pat_list: [{(IPQoS)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:479)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:481)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'af1{1..4} af2{2..3} af3{1..3} af4{1..3}\n'
                                                    span_id: 488
                                                  ) (Token id:Id.Lit_Chars val:'                cs{0..7} ef lowdelay throughput reliability' span_id:489)
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [478]
                        )
                      ]
                    )
                  ]
                  spids: [474 475 503 -1]
                )
                (case_arm
                  pat_list: [{(HostbasedKeyTypes)} {(HostKeyAlgorithms)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:513)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:515)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: '$( _ssh_query "$2" key )'
                                                    span_id: 522
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [512]
                        )
                      ]
                    )
                  ]
                  spids: [506 509 536 -1]
                )
                (case_arm
                  pat_list: [{(KexAlgorithms)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:544)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:546)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: '$( _ssh_query "$2" kex )'
                                                    span_id: 553
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [543]
                        )
                      ]
                    )
                  ]
                  spids: [539 540 567 -1]
                )
                (case_arm
                  pat_list: [{(Protocol)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:575)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:577)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: '1 2 1,2 2,1'
                                                    span_id: 584
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [574]
                        )
                      ]
                    )
                  ]
                  spids: [570 571 598 -1]
                )
                (case_arm
                  pat_list: [{(RequestTTY)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:606)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:608)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'no yes force auto'
                                                    span_id: 615
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [605]
                        )
                      ]
                    )
                  ]
                  spids: [601 602 629 -1]
                )
                (case_arm
                  pat_list: [{(Tunnel)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:637)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:639)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'yes no point-to-point ethernet'
                                                    span_id: 646
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [636]
                        )
                      ]
                    )
                  ]
                  spids: [632 633 662 -1]
                )
                (case_arm
                  pat_list: [{(PreferredAuthentications)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:670)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:672)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'gssapi-with-mic host-based publickey\n'
                                                    span_id: 679
                                                  ) (Token id:Id.Lit_Chars val:'                keyboard-interactive password' span_id:680)
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [669]
                        )
                      ]
                    )
                  ]
                  spids: [665 666 694 -1]
                )
                (case_arm
                  pat_list: [{(MACs)}]
                  action: [(C {(_ssh_macs)} {(DQ ($ Id.VSub_Number '$2'))})]
                  spids: [697 698 708 -1]
                )
                (case_arm
                  pat_list: [{(Ciphers)}]
                  action: [(C {(_ssh_ciphers)} {(DQ ($ Id.VSub_Number '$2'))})]
                  spids: [711 712 722 -1]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:728)
              arg_word: {(0)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _ssh_suboption_check
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'cureq=') 
                (command_sub
                  left_token: (Token id:Id.Left_Backtick val:'`' span_id:758)
                  command_list: 
                    (command.CommandList
                      children: [(C {(_get_cword)} {(Id.Lit_Other ':') (Id.Lit_Equals '=')})]
                    )
                )
              } 
              {(Id.Lit_VarLike 'preveq=') 
                (command_sub
                  left_token: (Token id:Id.Left_Backtick val:'`' span_id:768)
                  command_list: 
                    (command.CommandList
                      children: [(C {(_get_pword)} {(Id.Lit_Other ':') (Id.Lit_Equals '=')})]
                    )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          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)}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:799)
                    )
                  ]
                  action: [
                    (C {(_ssh_suboption)} {($ Id.VSub_DollarName '$cureq')} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:813)
                      arg_word: {($ Id.VSub_QMark '$?')}
                    )
                  ]
                  spids: [778 801]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:821)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (command.ShFunction
          name: _ssh
          body: 
            (command.BraceGroup
              children: [
                (C {(local)} {(cur)} {(prev)} {(words)} {(cword)})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(_init_completion)} {(-n)} {(Id.Lit_Other ':')})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:854)
                    )
                  ]
                )
                (C {(local)} {(configfile)})
                (C {(local)} {(-a)} {(config)})
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {(_ssh_suboption_check)} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:879)
                      arg_word: {(0)}
                    )
                  ]
                )
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{(-F)} {(-i)} {(-S)}]
                      action: [
                        (C {(_filedir)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:903)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [892 897 908 -1]
                    )
                    (case_arm
                      pat_list: [{(-c)}]
                      action: [
                        (C {(_ssh_ciphers)} {(DQ ($ Id.VSub_Number '$1'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:922)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [911 912 927 -1]
                    )
                    (case_arm
                      pat_list: [{(-m)}]
                      action: [
                        (C {(_ssh_macs)} {(DQ ($ Id.VSub_Number '$1'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:941)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [930 931 946 -1]
                    )
                    (case_arm
                      pat_list: [{(-l)}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:954)
                                    words: [
                                      {
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 956
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(compgen)} {(-u)} {(--)} 
                                                  {(DQ ($ Id.VSub_DollarName '$cur'))}
                                                )
                                              ]
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [953]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:973)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [949 950 978 -1]
                    )
                    (case_arm
                      pat_list: [{(-O)}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:986)
                                    words: [
                                      {
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 988
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(compgen)} {(-W)} 
                                                  {
                                                    (SQ 
                                                      (Token
                                                        id: Id.Lit_Chars
                                                        val: 'check forward exit stop'
                                                        span_id: 995
                                                      )
                                                    )
                                                  } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                                )
                                              ]
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [985]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1009)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [981 982 1014 -1]
                    )
                    (case_arm
                      pat_list: [{(-o)}]
                      action: [
                        (C {(_ssh_options)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1024)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1017 1018 1029 -1]
                    )
                    (case_arm
                      pat_list: [{(-Q)}]
                      action: [
                        (C {(_ssh_queries)} {(DQ ($ Id.VSub_Number '$1'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1043)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1032 1033 1048 -1]
                    )
                    (case_arm
                      pat_list: [{(-w)}]
                      action: [
                        (C {(_available_interfaces)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1058)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1051 1052 1063 -1]
                    )
                    (case_arm
                      pat_list: [{(-b)}]
                      action: [
                        (C {(_ip_addresses)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1073)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1066 1067 1078 -1]
                    )
                    (case_arm
                      pat_list: [{(-D)} {(-e)} {(-I)} {(-L)} {(-p)} {(-R)} {(-W)}]
                      action: [
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1097)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1081 1094 1102 -1]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                  right: {(-F) (Id.Lit_Other '*')}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:1123)
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cur)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:cur span_id:1130)
                                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(-F)})
                                  )
                                }
                              spids: [1128]
                            )
                          ]
                        )
                        (C {(_filedir)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:1144)
                                    words: [
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:COMPREPLY span_id:1148)
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {(-F)}
                                                replace_mode: Id.Lit_Pound
                                              )
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1143]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cur)
                              op: assign_op.Equal
                              rhs: {(-F) ($ Id.VSub_DollarName '$cur')}
                              spids: [1162]
                            )
                          ]
                        )
                      ]
                      spids: [1109 1125]
                    )
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                  right: {(-) (Id.Lit_Other '*')}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:1184)
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:1190)
                                    words: [
                                      {
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 1192
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(compgen)} {(-W)} 
                                                  {
                                                    (SQ 
                                                      (Token
                                                        id: Id.Lit_Chars
                                                        val: '$( _parse_usage "$1" )'
                                                        span_id: 1199
                                                      )
                                                    )
                                                  } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                                )
                                              ]
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1189]
                            )
                          ]
                        )
                      ]
                      spids: [1170 1186]
                    )
                  ]
                  else_action: [
                    (C {(Id.KW_Set set)} {(--)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:words span_id:1226)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      }
                    )
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:1234)
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_gt
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {(0)}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:1245)
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {($ Id.VSub_Number '$1')}
                                              right: {(-F) (Id.Lit_Other '*')}
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1262)
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_gt
                                                      left: 
                                                        {
                                                          (braced_var_sub
                                                            token: 
                                                              (Token
                                                                id: Id.VSub_Number
                                                                val: 1
                                                                span_id: 1273
                                                              )
                                                            prefix_op: (Id.VSub_Pound)
                                                          )
                                                        }
                                                      right: {(2)}
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1281)
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:configfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (command_sub
                                                          left_token: 
                                                            (Token
                                                              id: Id.Left_DollarParen
                                                              val: '$('
                                                              span_id: 1288
                                                            )
                                                          command_list: 
                                                            (command.CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {
                                                                    (DQ 
                                                                      (braced_var_sub
                                                                        token: 
                                                                          (Token
                                                                            id: Id.VSub_Number
                                                                            val: 1
                                                                            span_id: 1293
                                                                          )
                                                                        suffix_op: 
                                                                          (suffix_op.Slice
                                                                            begin: 
                                                                              (arith_expr.ArithWord
                                                                                w: {(Id.Lit_Digits 2)}
                                                                              )
                                                                          )
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [1286]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1267 1283]
                                        )
                                      ]
                                      else_action: [
                                        (C {(shift)})
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (command.DBracket
                                              expr: (bool_expr.WordTest w:{($ Id.VSub_Number '$1')})
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:configfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (command_sub
                                                          left_token: 
                                                            (Token
                                                              id: Id.Left_DollarParen
                                                              val: '$('
                                                              span_id: 1318
                                                            )
                                                          command_list: 
                                                            (command.CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {(DQ ($ Id.VSub_Number '$1'))}
                                                                )
                                                              ]
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [1316]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Break val:break span_id:1331)
                                    )
                                  ]
                                  spids: [1250 1264]
                                )
                              ]
                            )
                            (C {(shift)})
                          ]
                        )
                    )
                    (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ Id.VSub_DollarName '$configfile'))} 
                      {(DQ ($ Id.VSub_DollarName '$cur'))}
                    )
                    (C {(local)} {(args)})
                    (C {(_count_args)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_gt
                                      left: {($ Id.VSub_DollarName '$args')}
                                      right: {(1)}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1378)
                            )
                          ]
                          action: [
                            (C {(compopt)} {(-o)} {(filenames)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                                  op: assign_op.PlusEqual
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: (Token id:Id.Op_LParen val:'(' span_id:1391)
                                        words: [
                                          {
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 1393
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-c)} {(--)} 
                                                      {(DQ ($ Id.VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1390]
                                )
                              ]
                            )
                          ]
                          spids: [1367 1380]
                        )
                      ]
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:1417)
                  arg_word: {(0)}
                )
              ]
            )
        )
        (C {(shopt)} {(-u)} {(hostcomplete)})
        (C {(complete)} {(-F)} {(_ssh)} {(ssh)} {(slogin)} {(autossh)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (command.ShFunction
          name: _sftp
          body: 
            (command.BraceGroup
              children: [
                (C {(local)} {(cur)} {(prev)} {(words)} {(cword)})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(_init_completion)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1474)
                    )
                  ]
                )
                (C {(local)} {(configfile)})
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {(_ssh_suboption_check)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1488)
                      arg_word: {(0)}
                    )
                  ]
                )
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{(-b)} {(-F)} {(-i)}]
                      action: [
                        (C {(_filedir)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1512)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1501 1506 1517 -1]
                    )
                    (case_arm
                      pat_list: [{(-o)}]
                      action: [
                        (C {(_ssh_options)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1527)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1520 1521 1532 -1]
                    )
                    (case_arm
                      pat_list: [{(-c)}]
                      action: [
                        (C {(_ssh_ciphers)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1542)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1535 1536 1547 -1]
                    )
                    (case_arm
                      pat_list: [{(-S)}]
                      action: [
                        (C {(_command)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1557)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1550 1551 1562 -1]
                    )
                    (case_arm
                      pat_list: [{(-B)} {(-D)} {(-l)} {(-P)} {(-R)} {(-s)}]
                      action: [
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:1579)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1565 1576 1584 -1]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                  right: {(-F) (Id.Lit_Other '*')}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:1605)
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cur)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:cur span_id:1612)
                                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(-F)})
                                  )
                                }
                              spids: [1610]
                            )
                          ]
                        )
                        (C {(_filedir)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:1626)
                                    words: [
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:COMPREPLY span_id:1630)
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {(-F)}
                                                replace_mode: Id.Lit_Pound
                                              )
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1625]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cur)
                              op: assign_op.Equal
                              rhs: {(-F) ($ Id.VSub_DollarName '$cur')}
                              spids: [1644]
                            )
                          ]
                        )
                      ]
                      spids: [1591 1607]
                    )
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                  right: {(-) (Id.Lit_Other '*')}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:1666)
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:1672)
                                    words: [
                                      {
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 1674
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(compgen)} {(-W)} 
                                                  {
                                                    (SQ 
                                                      (Token
                                                        id: Id.Lit_Chars
                                                        val: '$( _parse_usage "$1" )'
                                                        span_id: 1681
                                                      )
                                                    )
                                                  } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                                )
                                              ]
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1671]
                            )
                          ]
                        )
                      ]
                      spids: [1652 1668]
                    )
                  ]
                  else_action: [
                    (C {(Id.KW_Set set)} {(--)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:words span_id:1708)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      }
                    )
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:1716)
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_gt
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {(0)}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:1727)
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {($ Id.VSub_Number '$1')}
                                              right: {(-F) (Id.Lit_Other '*')}
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1744)
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_gt
                                                      left: 
                                                        {
                                                          (braced_var_sub
                                                            token: 
                                                              (Token
                                                                id: Id.VSub_Number
                                                                val: 1
                                                                span_id: 1755
                                                              )
                                                            prefix_op: (Id.VSub_Pound)
                                                          )
                                                        }
                                                      right: {(2)}
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1763)
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:configfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (command_sub
                                                          left_token: 
                                                            (Token
                                                              id: Id.Left_DollarParen
                                                              val: '$('
                                                              span_id: 1770
                                                            )
                                                          command_list: 
                                                            (command.CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {
                                                                    (DQ 
                                                                      (braced_var_sub
                                                                        token: 
                                                                          (Token
                                                                            id: Id.VSub_Number
                                                                            val: 1
                                                                            span_id: 1775
                                                                          )
                                                                        suffix_op: 
                                                                          (suffix_op.Slice
                                                                            begin: 
                                                                              (arith_expr.ArithWord
                                                                                w: {(Id.Lit_Digits 2)}
                                                                              )
                                                                          )
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [1768]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1749 1765]
                                        )
                                      ]
                                      else_action: [
                                        (C {(shift)})
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (command.DBracket
                                              expr: (bool_expr.WordTest w:{($ Id.VSub_Number '$1')})
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:configfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (command_sub
                                                          left_token: 
                                                            (Token
                                                              id: Id.Left_DollarParen
                                                              val: '$('
                                                              span_id: 1800
                                                            )
                                                          command_list: 
                                                            (command.CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {(DQ ($ Id.VSub_Number '$1'))}
                                                                )
                                                              ]
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [1798]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Break val:break span_id:1813)
                                    )
                                  ]
                                  spids: [1732 1746]
                                )
                              ]
                            )
                            (C {(shift)})
                          ]
                        )
                    )
                    (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ Id.VSub_DollarName '$configfile'))} 
                      {(DQ ($ Id.VSub_DollarName '$cur'))}
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:1844)
                  arg_word: {(0)}
                )
              ]
            )
        )
        (C {(shopt)} {(-u)} {(hostcomplete)})
        (C {(complete)} {(-F)} {(_sftp)} {(sftp)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_scp_path_esc)
          op: assign_op.Equal
          rhs: 
            {(SQ (Token id:Id.Lit_Chars val:'[][(){}<>",:;^&!$=?`|\\\\' span_id:1874)) (DQ ("'")) 
              (SQ (Token id:Id.Lit_Chars val:'[:space:]]' span_id:1880))
            }
          spids: [1872]
        )
      ]
    )
    (command.ShFunction
      name: _scp_remote_files
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'IFS=') 
                (single_quoted
                  left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:1900)
                  tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:1901)]
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cur)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:cur span_id:1912)
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: 
                              {
                                (word_part.EscapedLiteral
                                  token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1914)
                                ) (':')
                              }
                            replace: {(':')}
                            replace_mode: Id.Undefined_Tok
                          )
                      )
                    }
                  spids: [1910]
                )
              ]
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'userhost=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:cur span_id:1926)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VOp1_DPercent
                      arg_word: 
                        {('?(') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1929)
                          ) ('):*')
                        }
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'path=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:cur span_id:1938)
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{('*:')})
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:path)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1950)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {(sed)}
                                  {(-e)}
                                  {(SQ (Token id:Id.Lit_Chars val:'s/\\\\\\\\\\\\\\(' span_id:1957)) 
                                    ($ Id.VSub_DollarName '$_scp_path_esc') (SQ (Token id:Id.Lit_Chars val:'\\)/\\\\\\1/g' span_id:1961))
                                  }
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_TLess val:'<<<' span_id:1964)
                                    fd: -1
                                    arg_word: {(DQ ($ Id.VSub_DollarName '$path'))}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1949]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName '$path')}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1986)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1992)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [
                                          {(ssh)}
                                          {(-o)}
                                          {
                                            (SQ 
                                              (Token
                                                id: Id.Lit_Chars
                                                val: 'Batchmode yes'
                                                span_id: 1998
                                              )
                                            )
                                          }
                                          {($ Id.VSub_DollarName '$userhost')}
                                          {(pwd)}
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: (Token id:Id.Redir_Great val:'2>' span_id:2005)
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1991]
                        )
                      ]
                    )
                  ]
                  spids: [1977 1988]
                )
              ]
            )
            (C {(local)} {(files)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_Number '$1')}
                              right: {(Id.BoolUnary_d -d)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2030)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:files)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2040)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            words: [
                                              {(ssh)}
                                              {(-o)}
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'Batchmode yes'
                                                    span_id: 2047
                                                  )
                                                )
                                              }
                                              {($ Id.VSub_DollarName '$userhost')}
                                              {(command)}
                                              {(ls)}
                                              {(-aF1dL)}
                                              {(DQ ($ Id.VSub_DollarName '$path') ('*'))}
                                            ]
                                            redirects: [
                                              (redir.Redir
                                                op: (Token id:Id.Redir_Great val:'2>' span_id:2065)
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                              )
                                            ]
                                          )
                                          (C {(sed)} {(-e)} 
                                            {(SQ (Token id:Id.Lit_Chars val:s/ span_id:2077)) 
                                              ($ Id.VSub_DollarName '$_scp_path_esc') (SQ (Token id:Id.Lit_Chars val:'/\\\\\\\\\\\\&/g' span_id:2081))
                                            } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/[^\\/]$/d' span_id:2087))}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [2039]
                        )
                      ]
                    )
                  ]
                  spids: [2019 2032]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:files)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2105)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        words: [
                                          {(ssh)}
                                          {(-o)}
                                          {
                                            (SQ 
                                              (Token
                                                id: Id.Lit_Chars
                                                val: 'Batchmode yes'
                                                span_id: 2112
                                              )
                                            )
                                          }
                                          {($ Id.VSub_DollarName '$userhost')}
                                          {(command)}
                                          {(ls)}
                                          {(-aF1dL)}
                                          {(DQ ($ Id.VSub_DollarName '$path') ('*'))}
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: (Token id:Id.Redir_Great val:'2>' span_id:2130)
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                          )
                                        ]
                                      )
                                      (C {(sed)} {(-e)} 
                                        {(SQ (Token id:Id.Lit_Chars val:s/ span_id:2142)) 
                                          ($ Id.VSub_DollarName '$_scp_path_esc') (SQ (Token id:Id.Lit_Chars val:'/\\\\\\\\\\\\&/g' span_id:2146))
                                        } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/[*@|=]$//g' span_id:2152))} {(-e)} 
                                        {
                                          (SQ 
                                            (Token
                                              id: Id.Lit_Chars
                                              val: 's/[^\\/]$/& /g'
                                              span_id: 2160
                                            )
                                          )
                                        }
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [2104]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:2170)
                        words: [{($ Id.VSub_DollarName '$files')}]
                      )
                    }
                  spids: [2169]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _scp_local_files
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'IFS=') 
                (single_quoted
                  left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:2201)
                  tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:2202)]
                )
              }
            )
            (C {(local)} {(Id.Lit_VarLike 'dirsonly=') (false)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_Number '$1')}
                              right: {(Id.BoolUnary_d -d)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2224)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:dirsonly)
                          op: assign_op.Equal
                          rhs: {(true)}
                          spids: [2229]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [2213 2226]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {($ Id.VSub_DollarName '$dirsonly')})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2244)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:2250)
                                words: [
                                  {
                                    (command_sub
                                      left_token: 
                                        (Token
                                          id: Id.Left_DollarParen
                                          val: '$('
                                          span_id: 2252
                                        )
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (command.Pipeline
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(command)}
                                                    {(ls)}
                                                    {(-aF1dL)}
                                                    {($ Id.VSub_DollarName '$cur') (Id.Lit_Star '*')}
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Great
                                                          val: '2>'
                                                          span_id: 2263
                                                        )
                                                      fd: 2
                                                      arg_word: {(/dev/null)}
                                                    )
                                                  ]
                                                )
                                                (C {(sed)} {(-e)} 
                                                  {
                                                    (DQ (s/) ($ Id.VSub_DollarName '$_scp_path_esc') 
                                                      (/) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:2278)) 
                                                      (word_part.EscapedLiteral
                                                        token: 
                                                          (Token
                                                            id: Id.Lit_EscapedChar
                                                            val: '\\\\'
                                                            span_id: 2279
                                                          )
                                                      ) ('&/g')
                                                    )
                                                  } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/[^\\/]$/d' span_id:2286))} {(-e)} 
                                                  {(DQ ('s/^/') ($ Id.VSub_Number '$1') (/))}
                                                )
                                              ]
                                              negated: F
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [2249]
                        )
                      ]
                    )
                  ]
                  spids: [2240 2246]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:COMPREPLY)
                      op: assign_op.PlusEqual
                      rhs: 
                        {
                          (sh_array_literal
                            left: (Token id:Id.Op_LParen val:'(' span_id:2305)
                            words: [
                              {
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2307)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              words: [
                                                {(command)}
                                                {(ls)}
                                                {(-aF1dL)}
                                                {($ Id.VSub_DollarName '$cur') (Id.Lit_Star '*')}
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'2>' span_id:2318)
                                                  fd: 2
                                                  arg_word: {(/dev/null)}
                                                )
                                              ]
                                            )
                                            (C {(sed)} {(-e)} 
                                              {
                                                (DQ (s/) ($ Id.VSub_DollarName '$_scp_path_esc') (/) 
                                                  (word_part.EscapedLiteral
                                                    token: 
                                                      (Token
                                                        id: Id.Lit_EscapedChar
                                                        val: '\\\\'
                                                        span_id: 2333
                                                      )
                                                  ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:2334)) ('&/g')
                                                )
                                              } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/[*@|=]$//g' span_id:2341))} {(-e)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 's/[^\\/]$/& /g'
                                                    span_id: 2349
                                                  )
                                                )
                                              } {(-e)} {(DQ ('s/^/') ($ Id.VSub_Number '$1') (/))}
                                            )
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              }
                            ]
                          )
                        }
                      spids: [2304]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.ShFunction
          name: _scp
          body: 
            (command.BraceGroup
              children: [
                (C {(local)} {(cur)} {(prev)} {(words)} {(cword)})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(_init_completion)} {(-n)} {(Id.Lit_Other ':')})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:2401)
                    )
                  ]
                )
                (C {(local)} {(configfile)} {(prefix)})
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {(_ssh_suboption_check)})
                    (command.BraceGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:2421)
                                    words: [
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:COMPREPLY span_id:2425)
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {(' ')}
                                                replace_mode: Id.Lit_Percent
                                              )
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [2420]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2439)
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                )
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{(-l)} {(-P)}]
                      action: [
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2461)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2455 2458 2466 -1]
                    )
                    (case_arm
                      pat_list: [{(-F)} {(-i)}]
                      action: [
                        (C {(_filedir)})
                        (C {(compopt)} {(Id.Lit_Other '+') (o)} {(nospace)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2486)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2469 2472 2491 -1]
                    )
                    (case_arm
                      pat_list: [{(-c)}]
                      action: [
                        (C {(_ssh_ciphers)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:2502)
                                    words: [
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:COMPREPLY span_id:2506)
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {}
                                                replace: {(' ')}
                                                replace_mode: Id.Lit_Percent
                                              )
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [2501]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2520)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2494 2495 2525 -1]
                    )
                    (case_arm
                      pat_list: [{(-o)}]
                      action: [
                        (C {(_ssh_options)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2535)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2528 2529 2540 -1]
                    )
                    (case_arm
                      pat_list: [{(-S)}]
                      action: [
                        (C {(_command)})
                        (C {(compopt)} {(Id.Lit_Other '+') (o)} {(nospace)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2558)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2543 2544 2563 -1]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(_expand)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:2574)
                      arg_word: {(0)}
                    )
                  ]
                )
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$cur')}
                  arms: [
                    (case_arm
                      pat_list: [
                        {
                          (word_part.ExtGlob
                            op: (Token id:Id.ExtGlob_Bang val:'!(' span_id:2587)
                            arms: [{(Id.Lit_Other '*') (':') (Id.Lit_Other '*')}]
                          ) (/) (Id.Lit_Star '*')
                        }
                        {(Id.Lit_LBracket '[') (.) (Id.Lit_TildeLike '~') (Id.Lit_RBracket ']') 
                          (Id.Lit_Star '*')
                        }
                      ]
                      spids: [2587 2600 2602 -1]
                    )
                    (case_arm
                      pat_list: [{(Id.Lit_Star '*') (Id.Lit_Other ':') (Id.Lit_Star '*')}]
                      action: [
                        (command.Sentence
                          child: (C {(_scp_remote_files)})
                          terminator: (Token id:Id.Op_Semi val:';' span_id:2615)
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:2617)
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2608 2611 2621 -1]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                  right: {(-F) (Id.Lit_Other '*')}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:2642)
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cur)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:cur span_id:2649)
                                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(-F)})
                                  )
                                }
                              spids: [2647]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:prefix)
                              op: assign_op.Equal
                              rhs: {(-F)}
                              spids: [2655]
                            )
                          ]
                        )
                      ]
                      spids: [2628 2644]
                    )
                  ]
                  else_action: [
                    (C {(Id.KW_Set set)} {(--)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:words span_id:2672)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      }
                    )
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:2680)
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_gt
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {(0)}
                                )
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:2691)
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {($ Id.VSub_Number '$1')}
                                              right: {(-F) (Id.Lit_Other '*')}
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:2708)
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_gt
                                                      left: 
                                                        {
                                                          (braced_var_sub
                                                            token: 
                                                              (Token
                                                                id: Id.VSub_Number
                                                                val: 1
                                                                span_id: 2719
                                                              )
                                                            prefix_op: (Id.VSub_Pound)
                                                          )
                                                        }
                                                      right: {(2)}
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:2727)
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:configfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (command_sub
                                                          left_token: 
                                                            (Token
                                                              id: Id.Left_DollarParen
                                                              val: '$('
                                                              span_id: 2734
                                                            )
                                                          command_list: 
                                                            (command.CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {
                                                                    (DQ 
                                                                      (braced_var_sub
                                                                        token: 
                                                                          (Token
                                                                            id: Id.VSub_Number
                                                                            val: 1
                                                                            span_id: 2739
                                                                          )
                                                                        suffix_op: 
                                                                          (suffix_op.Slice
                                                                            begin: 
                                                                              (arith_expr.ArithWord
                                                                                w: {(Id.Lit_Digits 2)}
                                                                              )
                                                                          )
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [2732]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [2713 2729]
                                        )
                                      ]
                                      else_action: [
                                        (C {(shift)})
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (command.DBracket
                                              expr: (bool_expr.WordTest w:{($ Id.VSub_Number '$1')})
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:configfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (command_sub
                                                          left_token: 
                                                            (Token
                                                              id: Id.Left_DollarParen
                                                              val: '$('
                                                              span_id: 2764
                                                            )
                                                          command_list: 
                                                            (command.CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {(DQ ($ Id.VSub_Number '$1'))}
                                                                )
                                                              ]
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [2762]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Break val:break span_id:2777)
                                    )
                                  ]
                                  spids: [2696 2710]
                                )
                              ]
                            )
                            (C {(shift)})
                          ]
                        )
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$cur')}
                      arms: [
                        (case_arm
                          pat_list: [{(-) (Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: (Token id:Id.Op_LParen val:'(' span_id:2803)
                                        words: [
                                          {
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 2805
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} 
                                                      {
                                                        (SQ 
                                                          (Token
                                                            id: Id.Lit_Chars
                                                            val: '$( _parse_usage "${words[0]}" )'
                                                            span_id: 2812
                                                          )
                                                        )
                                                      } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [2802]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: (Token id:Id.Op_LParen val:'(' span_id:2829)
                                        words: [
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: COMPREPLY
                                                    span_id: 2833
                                                  )
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                suffix_op: 
                                                  (suffix_op.PatSub
                                                    pat: {}
                                                    replace: {(' ')}
                                                    replace_mode: Id.Lit_Percent
                                                  )
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [2828]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:2847)
                              arg_word: {(0)}
                            )
                          ]
                          spids: [2797 2799 2852 -1]
                        )
                        (case_arm
                          pat_list: [
                            {(Id.Lit_Star '*') (/) (Id.Lit_Star '*')}
                            {(Id.Lit_LBracket '[') (.) (Id.Lit_TildeLike '~') (Id.Lit_RBracket ']') 
                              (Id.Lit_Star '*')
                            }
                          ]
                          spids: [2855 2864 2871 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(_known_hosts_real)} {(-c)} {(-a)} {(-F)} 
                              {(DQ ($ Id.VSub_DollarName '$configfile'))} {(DQ ($ Id.VSub_DollarName '$cur'))}
                            )
                          ]
                          spids: [2874 2875 2895 -1]
                        )
                      ]
                    )
                  ]
                )
                (C {(_scp_local_files)} {(DQ ($ Id.VSub_DollarName '$prefix'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:2913)
                  arg_word: {(0)}
                )
              ]
            )
        )
        (C {(complete)} {(-F)} {(_scp)} {(-o)} {(nospace)} {(scp)})
      ]
    )
  ]
)