code: func (a *LocalKeyAgent) AuthMethods() (m []ssh.AuthMethod) {
  	// combine our certificates with external SSH agent's:
  	var signers []ssh.Signer
  	if ourCerts, _ := a.Signers(); ourCerts != nil {
  		signers = append(signers, ourCerts...)
  	}
  	if a.sshAgent != nil {
  		if sshAgentCerts, _ := a.sshAgent.Signers(); sshAgentCerts != nil {
  			signers = append(signers, sshAgentCerts...)
  		}
  	}
  	// for every certificate create a new "auth method" and return them
  	m = make([]ssh.AuthMethod, 0)
  	for i := range signers {
  		// filter out non-certificates (like regular public SSH keys stored in the SSH agent):
  		_, ok := signers[i].PublicKey().(*ssh.Certificate)
  		if ok {
  			m = append(m, NewAuthMethodForCert(signers[i]))
  		}
  	}
  	return m
  }
docs: // AuthMethods returns the list of different authentication methods this agent supports
  // It returns two:
  //	  1. First to try is the external SSH agent
  //    2. Itself (disk-based local agent)