code: func (c *threadSafeMap) deleteFromIndices(obj interface{}, key string) {
  	for name, indexFunc := range c.indexers {
  		indexValues, err := indexFunc(obj)
  		if err != nil {
  			panic(fmt.Errorf("unable to calculate an index entry for key %q on index %q: %v", key, name, err))
  		}
  
  		index := c.indices[name]
  		if index == nil {
  			continue
  		}
  		for _, indexValue := range indexValues {
  			set := index[indexValue]
  			if set != nil {
  				set.Delete(key)
  			}
  		}
  	}
  }
docs: // deleteFromIndices removes the object from each of the managed indexes
  // it is intended to be called from a function that already has a lock on the cache