func (c *readWriteCollection) getIndexPath(val interface{}, index *Index, key string) string {
	reflVal := reflect.ValueOf(val)
	field := reflect.Indirect(reflVal).FieldByName(index.Field).Interface()
	return c.indexPath(index, field, key)
}
func (c *readWriteCollection) getIndexPath(val interface{}, index *Index, key string) string {
	reflVal := reflect.ValueOf(val)
	field := reflect.Indirect(reflVal).FieldByName(index.Field).Interface()
	return c.indexPath(index, field, key)
}
func ( c * readWriteCollection ) getIndexPath ( val interface { } , index * Index , key string ) string { reflVal := reflect . ValueOf ( val ) field := reflect . Indirect ( reflVal ) . FieldByName ( index . Field ) . Interface ( ) return c . indexPath ( index , field , key ) }
// Giving a value, an index, and the key of the item, return the path
// under which the new index item should be stored.
Giving a value an index and the key of the item return the path under which the new index item should be stored .