code: func (idx *ListIndex) Add(newValue []byte, targetID []byte) error {
  	if newValue == nil || len(newValue) == 0 {
  		return ErrNilParam
  	}
  	if targetID == nil || len(targetID) == 0 {
  		return ErrNilParam
  	}
  
  	key := idx.IDs.Get(targetID)
  	if key != nil {
  		err := idx.IndexBucket.Delete(key)
  		if err != nil {
  			return err
  		}
  
  		err = idx.IDs.Remove(targetID)
  		if err != nil {
  			return err
  		}
  
  		key = key[:0]
  	}
  
  	key = append(key, newValue...)
  	key = append(key, '_')
  	key = append(key, '_')
  	key = append(key, targetID...)
  
  	err := idx.IDs.Add(targetID, key)
  	if err != nil {
  		return err
  	}
  
  	return idx.IndexBucket.Put(key, targetID)
  }
docs: // Add a value to the list index