code: func (c *threadSafeMap) IndexKeys(indexName, indexKey string) ([]string, error) {
  	c.lock.RLock()
  	defer c.lock.RUnlock()
  
  	indexFunc := c.indexers[indexName]
  	if indexFunc == nil {
  		return nil, fmt.Errorf("Index with name %s does not exist", indexName)
  	}
  
  	index := c.indices[indexName]
  
  	set := index[indexKey]
  	return set.List(), nil
  }
docs: // IndexKeys returns a list of keys that match on the index function.
  // IndexKeys is thread-safe so long as you treat all items as immutable.