code: func (c *clientPoolImpl) ClientForGroupVersionKind(kind schema.GroupVersionKind) (Interface, error) {
  	c.lock.Lock()
  	defer c.lock.Unlock()
  
  	gv := kind.GroupVersion()
  
  	// do we have a client already configured?
  	if existingClient, found := c.clients[gv]; found {
  		return existingClient, nil
  	}
  
  	// avoid changing the original config
  	confCopy := *c.config
  	conf := &confCopy
  
  	// we need to set the api path based on group version, if no group, default to legacy path
  	conf.APIPath = c.apiPathResolverFunc(kind)
  
  	// we need to make a client
  	conf.GroupVersion = &gv
  
  	dynamicClient, err := NewClient(conf, gv)
  	if err != nil {
  		return nil, err
  	}
  	c.clients[gv] = dynamicClient
  	return dynamicClient, nil
  }
docs: // ClientForGroupVersion returns a client for the specified groupVersion, creates one if none exists. Kind
  // in the GroupVersionKind may be empty.