code: @Override
    protected void fromStream() {
      try {
        className = document.field("className");
  
        final List<ODocument> inds = document.field("indexDefinitions");
        final List<String> indClasses = document.field("indClasses");
  
        indexDefinitions.clear();
        for (int i = 0; i < indClasses.size(); i++) {
          final Class<?> clazz = Class.forName(indClasses.get(i));
          final ODocument indDoc = inds.get(i);
  
          final OIndexDefinition indexDefinition = (OIndexDefinition) clazz.getDeclaredConstructor().newInstance();
          indexDefinition.fromStream(indDoc);
  
          indexDefinitions.add(indexDefinition);
  
          if (indexDefinition instanceof OIndexDefinitionMultiValue)
            multiValueDefinitionIndex = indexDefinitions.size() - 1;
        }
  
      } catch (final ClassNotFoundException e) {
        throw new OIndexException("Error during composite index deserialization", e);
      } catch (final NoSuchMethodException e) {
        throw new OIndexException("Error during composite index deserialization", e);
      } catch (final InvocationTargetException e) {
        throw new OIndexException("Error during composite index deserialization", e);
      } catch (final InstantiationException e) {
        throw new OIndexException("Error during composite index deserialization", e);
      } catch (final IllegalAccessException e) {
        throw new OIndexException("Error during composite index deserialization", e);
      }
    }
docs: {@inheritDoc}