(CommandList
  children: [
    (FuncDef
      name: _ssh_queries
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: PlusEqual
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} 
                                      {(DQ ('cipher cipher-auth mac kex key protocol-version'))} {(--)} {(DQ ($ VSub_Name '$cur'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [14 32]
                            )
                          }
                        ]
                      )
                    }
                  spids: [11]
                )
              ]
              spids: [11]
            )
          ]
          spids: [8]
        )
      spids: [4 7]
    )
    (FuncDef
      name: _ssh_query
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {
                  (BracedVarSub
                    token: <VSub_Number 1>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(ssh)})
                    spids: [46 50]
                  )
                }
                {(-Q)}
                {($ VSub_Number '$2')}
              ]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[56])]
            )
          ]
          spids: [43]
        )
      spids: [39 42]
    )
    (FuncDef
      name: _ssh_ciphers
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ciphers)
                  op: Equal
                  rhs: {(SQ <'$( _ssh_query "$1" cipher )'>)}
                  spids: [71]
                )
              ]
              spids: [69]
            )
            (AndOr
              children: [
                (DBracket expr:(WordTest w:{($ VSub_Name '$ciphers')}))
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:ciphers)
                      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]
                    )
                  ]
                  spids: [85]
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: PlusEqual
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$ciphers'))} {(--)} 
                                      {(DQ ($ VSub_Name '$cur'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [96 112]
                            )
                          }
                        ]
                      )
                    }
                  spids: [93]
                )
              ]
              spids: [93]
            )
          ]
          spids: [66]
        )
      spids: [62 65]
    )
    (FuncDef
      name: _ssh_macs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:macs)
                  op: Equal
                  rhs: {(SQ <'$( _ssh_query "$1" mac )'>)}
                  spids: [128]
                )
              ]
              spids: [126]
            )
            (AndOr
              children: [
                (DBracket expr:(WordTest w:{($ VSub_Name '$macs')}))
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:macs)
                      op: Equal
                      rhs: 
                        {
                          (DQ ('hmac-md5 hmac-sha1 umac-64@openssh.com hmac-ripemd160\n') 
                            ('        hmac-sha1-96 hmac-md5-96')
                          )
                        }
                      spids: [142]
                    )
                  ]
                  spids: [142]
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: PlusEqual
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$macs'))} {(--)} 
                                      {(DQ ($ VSub_Name '$cur'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [152 168]
                            )
                          }
                        ]
                      )
                    }
                  spids: [149]
                )
              ]
              spids: [149]
            )
          ]
          spids: [123]
        )
      spids: [119 122]
    )
    (FuncDef
      name: _ssh_options
      body: 
        (BraceGroup
          children: [
            (C {(compopt)} {(-o)} {(nospace)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(compgen)} {(-S)} {(Lit_Other '=')} {(-W)} 
                                      {
                                        (SQ <'AddressFamily BatchMode BindAddress\n'> 
                                          <
'        ChallengeResponseAuthentication CheckHostIP Cipher Ciphers\n'
                                          > <'        ClearAllForwardings Compression CompressionLevel ConnectionAttempts\n'> 
                                          <
'        ConnectTimeout ControlMaster ControlPath ControlPersist DynamicForward\n'
                                          > <'        EnableSSHKeysign EscapeChar ExitOnForwardFailure ForwardAgent\n'> 
                                          <
'        ForwardX11 ForwardX11Timeout ForwardX11Trusted GatewayPorts\n'
                                          > <'        GlobalKnownHostsFile GSSAPIAuthentication GSSAPIClientIdentity\n'> 
                                          <
'        GSSAPIDelegateCredentials GSSAPIKeyExchange GSSAPIRenewalForcesRekey\n'
                                          > <'        GSSAPIServerIdentity GSSAPITrustDns HashKnownHosts Host\n'> 
                                          <
'        HostbasedAuthentication HostKeyAlgorithms HostKeyAlias HostName\n'
                                          > <'        IdentityFile IdentitiesOnly IPQoS KbdInteractiveDevices KexAlgorithms\n'> 
                                          <'        LocalCommand LocalForward LogLevel MACs\n'> <'        NoHostAuthenticationForLocalhost NumberOfPasswordPrompts\n'> 
                                          <
'        PasswordAuthentication PermitLocalCommand PKCS11Provider Port\n'
                                          > <'        PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication\n'> 
                                          <
'        RekeyLimit RemoteForward RequestTTY RhostsRSAAuthentication\n'
                                          > <'        RSAAuthentication SendEnv ServerAliveCountMax ServerAliveInterval\n'> 
                                          <
'        SmartcardDevice StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice\n'
                                          > <'        UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS\n'> 
                                          <'        VisualHostKey XAuthLocation'>
                                        )
                                      } {(--)} {(DQ ($ VSub_Name '$cur'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [192 231]
                            )
                          }
                        ]
                      )
                    }
                  spids: [189]
                )
              ]
              spids: [189]
            )
          ]
          spids: [179]
        )
      spids: [175 178]
    )
    (FuncDef
      name: _ssh_suboption
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:prev)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')})
                        spids: [267 271]
                      )
                    }
                  spids: [266]
                )
                (assign_pair
                  lhs: (LhsName name:cur)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*=')})
                        spids: [274 278]
                      )
                    }
                  spids: [273]
                )
              ]
              spids: [264]
            )
            (Case
              to_match: {($ VSub_Name '$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: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'yes no'>)} {(--)} 
                                              {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [378 394]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [375]
                        )
                      ]
                      spids: [375]
                    )
                  ]
                  spids: [289 372 399 16777215]
                )
                (case_arm
                  pat_list: [{(AddressFamily)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'any inet inet6'>)} {(--)} 
                                              {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [409 425]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [406]
                        )
                      ]
                      spids: [406]
                    )
                  ]
                  spids: [402 403 430 16777215]
                )
                (case_arm
                  pat_list: [{(BindAddress)}]
                  action: [(C {(_ip_addresses)})]
                  spids: [433 434 440 16777215]
                )
                (case_arm
                  pat_list: [{(Cipher)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'blowfish des 3des'>)} {(--)} 
                                              {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [450 466]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [447]
                        )
                      ]
                      spids: [447]
                    )
                  ]
                  spids: [443 444 471 16777215]
                )
                (case_arm
                  pat_list: [{(IPQoS)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ <'af1{1..4} af2{2..3} af3{1..3} af4{1..3}\n'> 
                                                  <
'                cs{0..7} ef lowdelay throughput reliability'
                                                  >
                                                )
                                              } {(--)} {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [481 498]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [478]
                        )
                      ]
                      spids: [478]
                    )
                  ]
                  spids: [474 475 503 16777215]
                )
                (case_arm
                  pat_list: [{(HostbasedKeyTypes)} {(HostKeyAlgorithms)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'$( _ssh_query "$2" key )'>)} 
                                              {(--)} {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [515 531]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [512]
                        )
                      ]
                      spids: [512]
                    )
                  ]
                  spids: [506 509 536 16777215]
                )
                (case_arm
                  pat_list: [{(KexAlgorithms)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'$( _ssh_query "$2" kex )'>)} 
                                              {(--)} {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [546 562]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [543]
                        )
                      ]
                      spids: [543]
                    )
                  ]
                  spids: [539 540 567 16777215]
                )
                (case_arm
                  pat_list: [{(Protocol)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'1 2 1,2 2,1'>)} {(--)} 
                                              {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [577 593]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [574]
                        )
                      ]
                      spids: [574]
                    )
                  ]
                  spids: [570 571 598 16777215]
                )
                (case_arm
                  pat_list: [{(RequestTTY)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(SQ <'no yes force auto'>)} {(--)} 
                                              {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [608 624]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [605]
                        )
                      ]
                      spids: [605]
                    )
                  ]
                  spids: [601 602 629 16777215]
                )
                (case_arm
                  pat_list: [{(Tunnel)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {(SQ <'yes no point-to-point ethernet'>)} {(--)} {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [639 657]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [636]
                        )
                      ]
                      spids: [636]
                    )
                  ]
                  spids: [632 633 662 16777215]
                )
                (case_arm
                  pat_list: [{(PreferredAuthentications)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ <'gssapi-with-mic host-based publickey\n'> 
                                                  <'                keyboard-interactive password'>
                                                )
                                              } {(--)} {(DQ ($ VSub_Name '$cur'))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [672 689]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [669]
                        )
                      ]
                      spids: [669]
                    )
                  ]
                  spids: [665 666 694 16777215]
                )
                (case_arm
                  pat_list: [{(MACs)}]
                  action: [(C {(_ssh_macs)} {(DQ ($ VSub_Number '$2'))})]
                  spids: [697 698 708 16777215]
                )
                (case_arm
                  pat_list: [{(Ciphers)}]
                  action: [(C {(_ssh_ciphers)} {(DQ ($ VSub_Number '$2'))})]
                  spids: [711 712 722 16777215]
                )
              ]
              spids: [282 286 725]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [257]
        )
      spids: [253 256]
    )
    (FuncDef
      name: _ssh_suboption_check
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cureq)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_get_cword)} {(Lit_Other ':') (Lit_Other '=')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [758 763]
                      )
                    }
                  spids: [757]
                )
                (assign_pair
                  lhs: (LhsName name:preveq)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_get_pword)} {(Lit_Other ':') (Lit_Other '=')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [766 771]
                      )
                    }
                  spids: [765]
                )
              ]
              spids: [755]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {($ VSub_Name '$cureq')}
                                  right: {(Lit_Other '*') (BoolBinary_GlobEqual '=') (Lit_Other '*')}
                                )
                              right: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {($ VSub_Name '$preveq')}
                                  right: {(BoolUnary_o -o)}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_ssh_suboption)} {($ VSub_Name '$cureq')} {(DQ ($ VSub_Number '$1'))})
                    (ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {($ VSub_QMark '$?')}
                    )
                  ]
                  spids: [16777215 797]
                )
              ]
              spids: [16777215 814]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [748]
        )
      spids: [744 747]
    )
    (AndOr
      children: [
        (FuncDef
          name: _ssh
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair lhs:(LhsName name:cur) op:Equal spids:[833])
                    (assign_pair lhs:(LhsName name:prev) op:Equal spids:[835])
                    (assign_pair lhs:(LhsName name:words) op:Equal spids:[837])
                    (assign_pair lhs:(LhsName name:cword) op:Equal spids:[839])
                  ]
                  spids: [831]
                )
                (AndOr
                  children: [
                    (C {(_init_completion)} {(-n)} {(Lit_Other ':')})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  op_id: Op_DPipe
                )
                (Assignment
                  keyword: Assign_Local
                  pairs: [(assign_pair lhs:(LhsName name:configfile) op:Equal spids:[856])]
                  spids: [854]
                )
                (Assignment
                  keyword: Assign_Local
                  flags: [-a]
                  pairs: [(assign_pair lhs:(LhsName name:config) op:Equal spids:[863])]
                  spids: [859]
                )
                (AndOr
                  children: [
                    (C {(_ssh_suboption_check)} {(DQ ($ VSub_Number '$1'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  op_id: Op_DAmp
                )
                (Case
                  to_match: {($ VSub_Name '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{(-F)} {(-i)} {(-S)}]
                      action: [
                        (C {(_filedir)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [888 893 904 16777215]
                    )
                    (case_arm
                      pat_list: [{(-c)}]
                      action: [
                        (C {(_ssh_ciphers)} {(DQ ($ VSub_Number '$1'))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [907 908 923 16777215]
                    )
                    (case_arm
                      pat_list: [{(-m)}]
                      action: [
                        (C {(_ssh_macs)} {(DQ ($ VSub_Number '$1'))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [926 927 942 16777215]
                    )
                    (case_arm
                      pat_list: [{(-l)}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(compgen)} {(-u)} {(--)} {(DQ ($ VSub_Name '$cur'))})
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [952 964]
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [949]
                            )
                          ]
                          spids: [949]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [945 946 974 16777215]
                    )
                    (case_arm
                      pat_list: [{(-O)}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(compgen)} {(-W)} {(SQ <'check forward exit stop'>)} 
                                                  {(--)} {(DQ ($ VSub_Name '$cur'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [984 1000]
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [981]
                            )
                          ]
                          spids: [981]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [977 978 1010 16777215]
                    )
                    (case_arm
                      pat_list: [{(-o)}]
                      action: [
                        (C {(_ssh_options)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1013 1014 1025 16777215]
                    )
                    (case_arm
                      pat_list: [{(-Q)}]
                      action: [
                        (C {(_ssh_queries)} {(DQ ($ VSub_Number '$1'))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1028 1029 1044 16777215]
                    )
                    (case_arm
                      pat_list: [{(-w)}]
                      action: [
                        (C {(_available_interfaces)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1047 1048 1059 16777215]
                    )
                    (case_arm
                      pat_list: [{(-b)}]
                      action: [
                        (C {(_ip_addresses)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1062 1063 1074 16777215]
                    )
                    (case_arm
                      pat_list: [{(-D)} {(-e)} {(-I)} {(-L)} {(-p)} {(-R)} {(-W)}]
                      action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                      spids: [1077 1090 1098 16777215]
                    )
                  ]
                  spids: [881 885 1101]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$cur'))}
                                  right: {(-F) (Lit_Other '*')}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cur)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name cur>
                                    suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-F)})
                                    spids: [1125 1129]
                                  )
                                }
                              spids: [1124]
                            )
                          ]
                          spids: [1124]
                        )
                        (C {(_filedir)})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            token: <VSub_Name COMPREPLY>
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            suffix_op: 
                                              (PatSub
                                                pat: {}
                                                replace: {(-F)}
                                                do_all: False
                                                do_prefix: True
                                                do_suffix: False
                                              )
                                            spids: [1143 1152]
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1139]
                            )
                          ]
                          spids: [1139]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cur)
                              op: Equal
                              rhs: {(-F) ($ VSub_Name '$cur')}
                              spids: [1158]
                            )
                          ]
                          spids: [1158]
                        )
                      ]
                      spids: [16777215 1121]
                    )
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$cur'))}
                                  right: {(-) (Lit_Other '*')}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "$1" )'>)} 
                                                  {(--)} {(DQ ($ VSub_Name '$cur'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [1188 1204]
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1185]
                            )
                          ]
                          spids: [1185]
                        )
                      ]
                      spids: [1166 1182]
                    )
                  ]
                  else_action: [
                    (C {(set)} {(--)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name words>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1221 1226]
                          )
                        )
                      }
                    )
                    (While
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_gt
                                  left: {($ VSub_Pound '$#')}
                                  right: {(0)}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {($ VSub_Number '$1')}
                                              right: {(-F) (Lit_Other '*')}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (DBracket
                                                  expr: 
                                                    (BoolBinary
                                                      op_id: BoolBinary_gt
                                                      left: 
                                                        {
                                                          (BracedVarSub
                                                            token: <VSub_Number 1>
                                                            prefix_op: VSub_Pound
                                                            spids: [1267 1270]
                                                          )
                                                        }
                                                      right: {(2)}
                                                    )
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:configfile)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSubPart
                                                          command_list: 
                                                            (CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {
                                                                    (DQ 
                                                                      (BracedVarSub
                                                                        token: <VSub_Number 1>
                                                                        suffix_op: 
                                                                          (Slice
                                                                            begin: 
                                                                              (ArithWord
                                                                                w: {(Lit_Digits 2)}
                                                                              )
                                                                          )
                                                                        spids: [1288 1292]
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                          left_token: <Left_CommandSub '$('>
                                                          spids: [1284 1294]
                                                        )
                                                      )
                                                    }
                                                  spids: [1282]
                                                )
                                              ]
                                              spids: [1282]
                                            )
                                          ]
                                          spids: [16777215 1279]
                                        )
                                      ]
                                      else_action: [
                                        (C {(shift)})
                                        (AndOr
                                          children: [
                                            (DBracket
                                              expr: (WordTest w:{($ VSub_Number '$1')})
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:configfile)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSubPart
                                                          command_list: 
                                                            (CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {(DQ ($ VSub_Number '$1'))}
                                                                )
                                                              ]
                                                            )
                                                          left_token: <Left_CommandSub '$('>
                                                          spids: [1314 1320]
                                                        )
                                                      )
                                                    }
                                                  spids: [1312]
                                                )
                                              ]
                                              spids: [1312]
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      spids: [1298 1324]
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [16777215 1260]
                                )
                              ]
                              spids: [16777215 1330]
                            )
                            (C {(shift)})
                          ]
                          spids: [1243 1336]
                        )
                    )
                    (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ VSub_Name '$configfile'))} 
                      {(DQ ($ VSub_Name '$cur'))}
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:args) op:Equal spids:[1357])]
                      spids: [1355]
                    )
                    (C {(_count_args)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_gt
                                      left: {($ VSub_Name '$args')}
                                      right: {(1)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(compopt)} {(-o)} {(filenames)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:COMPREPLY)
                                  op: PlusEqual
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (C {(compgen)} {(-c)} {(--)} 
                                                      {(DQ ($ VSub_Name '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [1389 1401]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1386]
                                )
                              ]
                              spids: [1386]
                            )
                          ]
                          spids: [16777215 1376]
                        )
                      ]
                      spids: [16777215 1406]
                    )
                  ]
                  spids: [1209 1409]
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              spids: [828]
            )
          spids: [824 827]
        )
        (AndOr
          children: [
            (C {(shopt)} {(-u)} {(hostcomplete)})
            (C {(complete)} {(-F)} {(_ssh)} {(ssh)} {(slogin)} {(autossh)})
          ]
          op_id: Op_DAmp
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (FuncDef
          name: _sftp
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair lhs:(LhsName name:cur) op:Equal spids:[1457])
                    (assign_pair lhs:(LhsName name:prev) op:Equal spids:[1459])
                    (assign_pair lhs:(LhsName name:words) op:Equal spids:[1461])
                    (assign_pair lhs:(LhsName name:cword) op:Equal spids:[1463])
                  ]
                  spids: [1455]
                )
                (AndOr
                  children: [(C {(_init_completion)}) (ControlFlow token:<ControlFlow_Return return>)]
                  op_id: Op_DPipe
                )
                (Assignment
                  keyword: Assign_Local
                  pairs: [(assign_pair lhs:(LhsName name:configfile) op:Equal spids:[1476])]
                  spids: [1474]
                )
                (AndOr
                  children: [
                    (C {(_ssh_suboption_check)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  op_id: Op_DAmp
                )
                (Case
                  to_match: {($ VSub_Name '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{(-b)} {(-F)} {(-i)}]
                      action: [
                        (C {(_filedir)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1497 1502 1513 16777215]
                    )
                    (case_arm
                      pat_list: [{(-o)}]
                      action: [
                        (C {(_ssh_options)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1516 1517 1528 16777215]
                    )
                    (case_arm
                      pat_list: [{(-c)}]
                      action: [
                        (C {(_ssh_ciphers)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1531 1532 1543 16777215]
                    )
                    (case_arm
                      pat_list: [{(-S)}]
                      action: [
                        (C {(_command)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [1546 1547 1558 16777215]
                    )
                    (case_arm
                      pat_list: [{(-B)} {(-D)} {(-l)} {(-P)} {(-R)} {(-s)}]
                      action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                      spids: [1561 1572 1580 16777215]
                    )
                  ]
                  spids: [1490 1494 1583]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$cur'))}
                                  right: {(-F) (Lit_Other '*')}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cur)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name cur>
                                    suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-F)})
                                    spids: [1607 1611]
                                  )
                                }
                              spids: [1606]
                            )
                          ]
                          spids: [1606]
                        )
                        (C {(_filedir)})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            token: <VSub_Name COMPREPLY>
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            suffix_op: 
                                              (PatSub
                                                pat: {}
                                                replace: {(-F)}
                                                do_all: False
                                                do_prefix: True
                                                do_suffix: False
                                              )
                                            spids: [1625 1634]
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1621]
                            )
                          ]
                          spids: [1621]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cur)
                              op: Equal
                              rhs: {(-F) ($ VSub_Name '$cur')}
                              spids: [1640]
                            )
                          ]
                          spids: [1640]
                        )
                      ]
                      spids: [16777215 1603]
                    )
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$cur'))}
                                  right: {(-) (Lit_Other '*')}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "$1" )'>)} 
                                                  {(--)} {(DQ ($ VSub_Name '$cur'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [1670 1686]
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [1667]
                            )
                          ]
                          spids: [1667]
                        )
                      ]
                      spids: [1648 1664]
                    )
                  ]
                  else_action: [
                    (C {(set)} {(--)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name words>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1703 1708]
                          )
                        )
                      }
                    )
                    (While
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_gt
                                  left: {($ VSub_Pound '$#')}
                                  right: {(0)}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {($ VSub_Number '$1')}
                                              right: {(-F) (Lit_Other '*')}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (DBracket
                                                  expr: 
                                                    (BoolBinary
                                                      op_id: BoolBinary_gt
                                                      left: 
                                                        {
                                                          (BracedVarSub
                                                            token: <VSub_Number 1>
                                                            prefix_op: VSub_Pound
                                                            spids: [1749 1752]
                                                          )
                                                        }
                                                      right: {(2)}
                                                    )
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:configfile)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSubPart
                                                          command_list: 
                                                            (CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {
                                                                    (DQ 
                                                                      (BracedVarSub
                                                                        token: <VSub_Number 1>
                                                                        suffix_op: 
                                                                          (Slice
                                                                            begin: 
                                                                              (ArithWord
                                                                                w: {(Lit_Digits 2)}
                                                                              )
                                                                          )
                                                                        spids: [1770 1774]
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                          left_token: <Left_CommandSub '$('>
                                                          spids: [1766 1776]
                                                        )
                                                      )
                                                    }
                                                  spids: [1764]
                                                )
                                              ]
                                              spids: [1764]
                                            )
                                          ]
                                          spids: [16777215 1761]
                                        )
                                      ]
                                      else_action: [
                                        (C {(shift)})
                                        (AndOr
                                          children: [
                                            (DBracket
                                              expr: (WordTest w:{($ VSub_Number '$1')})
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:configfile)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSubPart
                                                          command_list: 
                                                            (CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {(DQ ($ VSub_Number '$1'))}
                                                                )
                                                              ]
                                                            )
                                                          left_token: <Left_CommandSub '$('>
                                                          spids: [1796 1802]
                                                        )
                                                      )
                                                    }
                                                  spids: [1794]
                                                )
                                              ]
                                              spids: [1794]
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      spids: [1780 1806]
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [16777215 1742]
                                )
                              ]
                              spids: [16777215 1812]
                            )
                            (C {(shift)})
                          ]
                          spids: [1725 1818]
                        )
                    )
                    (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ VSub_Name '$configfile'))} 
                      {(DQ ($ VSub_Name '$cur'))}
                    )
                  ]
                  spids: [1691 1836]
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              spids: [1452]
            )
          spids: [1448 1451]
        )
        (AndOr
          children: [(C {(shopt)} {(-u)} {(hostcomplete)}) (C {(complete)} {(-F)} {(_sftp)} {(sftp)})]
          op_id: Op_DAmp
        )
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_scp_path_esc)
          op: Equal
          rhs: {(SQ <'[][(){}<>",:;^&!$=?`|\\\\'>) (DQ ("'")) (SQ <'[:space:]]'>)}
          spids: [1868]
        )
      ]
      spids: [1868]
    )
    (FuncDef
      name: _scp_remote_files
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: {(SQ <Lit_EscapedChar '\\n'>)}
                  spids: [1895]
                )
              ]
              spids: [1893]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cur)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: 
                          (PatSub
                            pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (':')}
                            replace: {(':')}
                            do_all: False
                            do_prefix: False
                            do_suffix: False
                          )
                        spids: [1907 1914]
                      )
                    }
                  spids: [1906]
                )
              ]
              spids: [1906]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:userhost)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: 
                          (StringUnary
                            op_id: VOp1_DPercent
                            arg_word: 
                              {('?(') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('):*')}
                          )
                        spids: [1921 1927]
                      )
                    }
                  spids: [1920]
                )
              ]
              spids: [1918]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:path)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*:')})
                        spids: [1933 1937]
                      )
                    }
                  spids: [1932]
                )
              ]
              spids: [1930]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:path)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [
                                  {(sed)}
                                  {(-e)}
                                  {(SQ <'s/\\\\\\\\\\\\\\('>) ($ VSub_Name '$_scp_path_esc') 
                                    (SQ <'\\)/\\\\\\1/g'>)
                                  }
                                ]
                                redirects: [
                                  (Redir
                                    op_id: Redir_TLess
                                    fd: 16777215
                                    arg_word: {(DQ ($ VSub_Name '$path'))}
                                    spids: [1960]
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1946 1965]
                      )
                    }
                  spids: [1945]
                )
              ]
              spids: [1945]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{($ VSub_Name '$path')}))
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:path)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (SimpleCommand
                                        words: [
                                          {(ssh)}
                                          {(-o)}
                                          {(SQ <'Batchmode yes'>)}
                                          {($ VSub_Name '$userhost')}
                                          {(pwd)}
                                        ]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Great
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                            spids: [2001]
                                          )
                                        ]
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [1988 2003]
                              )
                            }
                          spids: [1987]
                        )
                      ]
                      spids: [1987]
                    )
                  ]
                  spids: [16777215 1984]
                )
              ]
              spids: [16777215 2006]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:files) op:Equal spids:[2012])]
              spids: [2010]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Number '$1')}
                              right: {(BoolUnary_d -d)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:files)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (SimpleCommand
                                            words: [
                                              {(ssh)}
                                              {(-o)}
                                              {(SQ <'Batchmode yes'>)}
                                              {($ VSub_Name '$userhost')}
                                              {(command)}
                                              {(ls)}
                                              {(-aF1dL)}
                                              {(DQ ($ VSub_Name '$path') ('*'))}
                                            ]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_Great
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                                spids: [2061]
                                              )
                                            ]
                                          )
                                          (C {(sed)} {(-e)} 
                                            {(SQ <s/>) ($ VSub_Name '$_scp_path_esc') 
                                              (SQ <'/\\\\\\\\\\\\&/g'>)
                                            } {(-e)} {(SQ <'/[^\\/]$/d'>)}
                                          )
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [2036 2086]
                              )
                            }
                          spids: [2035]
                        )
                      ]
                      spids: [2035]
                    )
                  ]
                  spids: [16777215 2028]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:files)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (SimpleCommand
                                        words: [
                                          {(ssh)}
                                          {(-o)}
                                          {(SQ <'Batchmode yes'>)}
                                          {($ VSub_Name '$userhost')}
                                          {(command)}
                                          {(ls)}
                                          {(-aF1dL)}
                                          {(DQ ($ VSub_Name '$path') ('*'))}
                                        ]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Great
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                            spids: [2126]
                                          )
                                        ]
                                      )
                                      (C {(sed)} {(-e)} 
                                        {(SQ <s/>) ($ VSub_Name '$_scp_path_esc') 
                                          (SQ <'/\\\\\\\\\\\\&/g'>)
                                        } {(-e)} {(SQ <'s/[*@|=]$//g'>)} {(-e)} {(SQ <'s/[^\\/]$/& /g'>)}
                                      )
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2101 2159]
                          )
                        }
                      spids: [2100]
                    )
                  ]
                  spids: [2100]
                )
              ]
              spids: [2089 2162]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: PlusEqual
                  rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$files')}])}
                  spids: [2165]
                )
              ]
              spids: [2165]
            )
          ]
          spids: [1890]
        )
      spids: [1886 1889]
    )
    (FuncDef
      name: _scp_local_files
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: {(SQ <Lit_EscapedChar '\\n'>)}
                  spids: [2196]
                )
              ]
              spids: [2194]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:dirsonly) op:Equal rhs:{(false)} spids:[2205])]
              spids: [2203]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Number '$1')}
                              right: {(BoolUnary_d -d)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dirsonly)
                          op: Equal
                          rhs: {(true)}
                          spids: [2225]
                        )
                      ]
                      spids: [2225]
                    )
                    (C {(shift)})
                  ]
                  spids: [16777215 2222]
                )
              ]
              spids: [16777215 2232]
            )
            (If
              arms: [
                (if_arm
                  cond: [(Sentence child:(C {($ VSub_Name '$dirsonly')}) terminator:<Op_Semi ';'>)]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPREPLY)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (Pipeline
                                              children: [
                                                (SimpleCommand
                                                  words: [
                                                    {(command)}
                                                    {(ls)}
                                                    {(-aF1dL)}
                                                    {($ VSub_Name '$cur') (Lit_Other '*')}
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: 2
                                                      arg_word: {(/dev/null)}
                                                      spids: [2259]
                                                    )
                                                  ]
                                                )
                                                (C {(sed)} {(-e)} 
                                                  {
                                                    (DQ (s/) ($ VSub_Name '$_scp_path_esc') (/) 
                                                      (EscapedLiteralPart
                                                        token: <Lit_EscapedChar '\\\\'>
                                                      ) (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('&/g')
                                                    )
                                                  } {(-e)} {(SQ <'/[^\\/]$/d'>)} {(-e)} {(DQ ('s/^/') ($ VSub_Number '$1') (/))}
                                                )
                                              ]
                                              negated: False
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [2248 2292]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [2245]
                        )
                      ]
                      spids: [2245]
                    )
                  ]
                  spids: [16777215 2242]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:COMPREPLY)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (SimpleCommand
                                              words: [
                                                {(command)}
                                                {(ls)}
                                                {(-aF1dL)}
                                                {($ VSub_Name '$cur') (Lit_Other '*')}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: 2
                                                  arg_word: {(/dev/null)}
                                                  spids: [2314]
                                                )
                                              ]
                                            )
                                            (C {(sed)} {(-e)} 
                                              {
                                                (DQ (s/) ($ VSub_Name '$_scp_path_esc') (/) 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\\\'>
                                                  ) (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('&/g')
                                                )
                                              } {(-e)} {(SQ <'s/[*@|=]$//g'>)} {(-e)} {(SQ <'s/[^\\/]$/& /g'>)} {(-e)} 
                                              {(DQ ('s/^/') ($ VSub_Number '$1') (/))}
                                            )
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2303 2355]
                                )
                              }
                            ]
                          )
                        }
                      spids: [2300]
                    )
                  ]
                  spids: [2300]
                )
              ]
              spids: [2297 2360]
            )
          ]
          spids: [2191]
        )
      spids: [2187 2190]
    )
    (AndOr
      children: [
        (FuncDef
          name: _scp
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair lhs:(LhsName name:cur) op:Equal spids:[2380])
                    (assign_pair lhs:(LhsName name:prev) op:Equal spids:[2382])
                    (assign_pair lhs:(LhsName name:words) op:Equal spids:[2384])
                    (assign_pair lhs:(LhsName name:cword) op:Equal spids:[2386])
                  ]
                  spids: [2378]
                )
                (AndOr
                  children: [
                    (C {(_init_completion)} {(-n)} {(Lit_Other ':')})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  op_id: Op_DPipe
                )
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:configfile)
                      op: Equal
                      spids: [2403]
                    )
                    (assign_pair lhs:(LhsName name:prefix) op:Equal spids:[2405])
                  ]
                  spids: [2401]
                )
                (AndOr
                  children: [
                    (C {(_ssh_suboption_check)})
                    (BraceGroup
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            token: <VSub_Name COMPREPLY>
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            suffix_op: 
                                              (PatSub
                                                pat: {}
                                                replace: {(' ')}
                                                do_all: False
                                                do_prefix: False
                                                do_suffix: True
                                              )
                                            spids: [2420 2429]
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [2416]
                            )
                          ]
                          spids: [2416]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2413]
                    )
                  ]
                  op_id: Op_DAmp
                )
                (Case
                  to_match: {($ VSub_Name '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{(-l)} {(-P)}]
                      action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                      spids: [2451 2454 2462 16777215]
                    )
                    (case_arm
                      pat_list: [{(-F)} {(-i)}]
                      action: [
                        (C {(_filedir)})
                        (C {(compopt)} {(Lit_Other '+') (o)} {(nospace)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2465 2468 2487 16777215]
                    )
                    (case_arm
                      pat_list: [{(-c)}]
                      action: [
                        (C {(_ssh_ciphers)})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPREPLY)
                              op: Equal
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            token: <VSub_Name COMPREPLY>
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            suffix_op: 
                                              (PatSub
                                                pat: {}
                                                replace: {(' ')}
                                                do_all: False
                                                do_prefix: False
                                                do_suffix: True
                                              )
                                            spids: [2501 2510]
                                          )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [2497]
                            )
                          ]
                          spids: [2497]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2490 2491 2521 16777215]
                    )
                    (case_arm
                      pat_list: [{(-o)}]
                      action: [
                        (C {(_ssh_options)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2524 2525 2536 16777215]
                    )
                    (case_arm
                      pat_list: [{(-S)}]
                      action: [
                        (C {(_command)})
                        (C {(compopt)} {(Lit_Other '+') (o)} {(nospace)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2539 2540 2559 16777215]
                    )
                  ]
                  spids: [2444 2448 2562]
                )
                (AndOr
                  children: [
                    (C {(_expand)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  op_id: Op_DPipe
                )
                (Case
                  to_match: {($ VSub_Name '$cur')}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(ExtGlobPart op:<ExtGlob_Bang '!('> spids:[2583 2587]) (/) (Lit_Other '*')}
                        {(Lit_Other '[') (.) (Lit_Tilde '~') (Lit_Other ']') (Lit_Other '*')}
                      ]
                      spids: [2583 2596 2598 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*') (Lit_Other ':') (Lit_Other '*')}]
                      action: [
                        (Sentence
                          child: (C {(_scp_remote_files)})
                          terminator: <Op_Semi ';'>
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2604 2607 2617 16777215]
                    )
                  ]
                  spids: [2576 2580 2620]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$cur'))}
                                  right: {(-F) (Lit_Other '*')}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cur)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name cur>
                                    suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-F)})
                                    spids: [2644 2648]
                                  )
                                }
                              spids: [2643]
                            )
                          ]
                          spids: [2643]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:prefix)
                              op: Equal
                              rhs: {(-F)}
                              spids: [2651]
                            )
                          ]
                          spids: [2651]
                        )
                      ]
                      spids: [16777215 2640]
                    )
                  ]
                  else_action: [
                    (C {(set)} {(--)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name words>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [2667 2672]
                          )
                        )
                      }
                    )
                    (While
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_gt
                                  left: {($ VSub_Pound '$#')}
                                  right: {(0)}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {($ VSub_Number '$1')}
                                              right: {(-F) (Lit_Other '*')}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (DBracket
                                                  expr: 
                                                    (BoolBinary
                                                      op_id: BoolBinary_gt
                                                      left: 
                                                        {
                                                          (BracedVarSub
                                                            token: <VSub_Number 1>
                                                            prefix_op: VSub_Pound
                                                            spids: [2713 2716]
                                                          )
                                                        }
                                                      right: {(2)}
                                                    )
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:configfile)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSubPart
                                                          command_list: 
                                                            (CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {
                                                                    (DQ 
                                                                      (BracedVarSub
                                                                        token: <VSub_Number 1>
                                                                        suffix_op: 
                                                                          (Slice
                                                                            begin: 
                                                                              (ArithWord
                                                                                w: {(Lit_Digits 2)}
                                                                              )
                                                                          )
                                                                        spids: [2734 2738]
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                          left_token: <Left_CommandSub '$('>
                                                          spids: [2730 2740]
                                                        )
                                                      )
                                                    }
                                                  spids: [2728]
                                                )
                                              ]
                                              spids: [2728]
                                            )
                                          ]
                                          spids: [16777215 2725]
                                        )
                                      ]
                                      else_action: [
                                        (C {(shift)})
                                        (AndOr
                                          children: [
                                            (DBracket
                                              expr: (WordTest w:{($ VSub_Number '$1')})
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:configfile)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSubPart
                                                          command_list: 
                                                            (CommandList
                                                              children: [
                                                                (C {(dequote)} 
                                                                  {(DQ ($ VSub_Number '$1'))}
                                                                )
                                                              ]
                                                            )
                                                          left_token: <Left_CommandSub '$('>
                                                          spids: [2760 2766]
                                                        )
                                                      )
                                                    }
                                                  spids: [2758]
                                                )
                                              ]
                                              spids: [2758]
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      spids: [2744 2770]
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [16777215 2706]
                                )
                              ]
                              spids: [16777215 2776]
                            )
                            (C {(shift)})
                          ]
                          spids: [2689 2782]
                        )
                    )
                    (Case
                      to_match: {($ VSub_Name '$cur')}
                      arms: [
                        (case_arm
                          pat_list: [{(-) (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:COMPREPLY)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} 
                                                      {(SQ <'$( _parse_usage "${words[0]}" )'>)} {(--)} {(DQ ($ VSub_Name '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [2801 2819]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [2798]
                                )
                              ]
                              spids: [2798]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:COMPREPLY)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                token: <VSub_Name COMPREPLY>
                                                bracket_op: (WholeArray op_id:Lit_At)
                                                suffix_op: 
                                                  (PatSub
                                                    pat: {}
                                                    replace: {(' ')}
                                                    do_all: False
                                                    do_prefix: False
                                                    do_suffix: True
                                                  )
                                                spids: [2828 2837]
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [2824]
                                )
                              ]
                              spids: [2824]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [2793 2795 2848 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '*') (/) (Lit_Other '*')}
                            {(Lit_Other '[') (.) (Lit_Tilde '~') (Lit_Other ']') (Lit_Other '*')}
                          ]
                          spids: [2851 2860 2867 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (C {(_known_hosts_real)} {(-c)} {(-a)} {(-F)} 
                              {(DQ ($ VSub_Name '$configfile'))} {(DQ ($ VSub_Name '$cur'))}
                            )
                          ]
                          spids: [2870 2871 2891 16777215]
                        )
                      ]
                      spids: [2786 2790 2894]
                    )
                  ]
                  spids: [2655 2897]
                )
                (C {(_scp_local_files)} {(DQ ($ VSub_Name '$prefix'))})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              spids: [2375]
            )
          spids: [2371 2374]
        )
        (C {(complete)} {(-F)} {(_scp)} {(-o)} {(nospace)} {(scp)})
      ]
      op_id: Op_DAmp
    )
  ]
)