code: func (kr *GroupResolver) AddKeys(name string, keys Key) error {
  	kr.Lock()
  	defer kr.Unlock()
  	switch keys := keys.(type) {
  	case *rsa.PublicKey, *ecdsa.PublicKey, []byte, string:
  		kr.keyMap[name] = append(kr.keyMap[name], keys)
  	case []*rsa.PublicKey:
  		for _, key := range keys {
  			kr.keyMap[name] = append(kr.keyMap[name], key)
  		}
  	case []*ecdsa.PublicKey:
  		for _, key := range keys {
  			kr.keyMap[name] = append(kr.keyMap[name], key)
  		}
  	case [][]byte:
  		for _, key := range keys {
  			kr.keyMap[name] = append(kr.keyMap[name], key)
  		}
  	case []string:
  		for _, key := range keys {
  			kr.keyMap[name] = append(kr.keyMap[name], key)
  		}
  	default:
  		return ErrInvalidKey
  	}
  	return nil
  }
docs: // AddKeys can be used to add keys to the resolver which will be referenced
  // by the provided name. Acceptable types for keys include string, []string,
  // *rsa.PublicKey or []*rsa.PublicKey. Multiple keys are allowed for a single
  // key name to allow for key rotation.