code: public <V> Set<T> getByField(IndexDefinition<T, V> indexDefinition, V value) {
      FieldIndex<T, V> index = (FieldIndex<T, V>) mIndices.get(indexDefinition);
      if (index == null) {
        throw new IllegalStateException("the given index isn't defined for this IndexedSet");
      }
      return index.getByField(value);
    }
docs: Gets a subset of objects with the specified field value. If there is no object with the
  specified field value, a newly created empty set is returned.
  
  @param indexDefinition the field index definition
  @param value the field value to be satisfied
  @param <V> the field type
  @return the set of objects or an empty set if no such object exists