core/src/main/java/com/orientechnologies/orient/core/storage/impl/local/OAbstractPaginatedStorage.java
@SuppressWarnings("UnusedReturnValue")
  public boolean validatedPutIndexValue(int indexId, final Object key, final ORID value,
      final OBaseIndexEngine.Validator<Object, ORID> validator) throws OInvalidIndexEngineIdException {
    indexId = extractInternalId(indexId);

    try {
      if (transaction.get() != null) {
        return doValidatedPutIndexValue(indexId, key, value, validator);
      }

      checkOpenness();

      stateLock.acquireReadLock();
      try {
        checkOpenness();

        checkLowDiskSpaceRequestsAndReadOnlyConditions();

        return doValidatedPutIndexValue(indexId, key, value, validator);
      } finally {
        stateLock.releaseReadLock();
      }
    } catch (final OInvalidIndexEngineIdException ie) {
      throw logAndPrepareForRethrow(ie);
    } catch (final RuntimeException ee) {
      throw logAndPrepareForRethrow(ee);
    } catch (final Error ee) {
      throw logAndPrepareForRethrow(ee);
    } catch (final Throwable t) {
      throw logAndPrepareForRethrow(t);
    }
  }
@SuppressWarnings("UnusedReturnValue")
  public boolean validatedPutIndexValue(int indexId, final Object key, final ORID value,
      final OBaseIndexEngine.Validator<Object, ORID> validator) throws OInvalidIndexEngineIdException {
    indexId = extractInternalId(indexId);

    try {
      if (transaction.get() != null) {
        return doValidatedPutIndexValue(indexId, key, value, validator);
      }

      checkOpenness();

      stateLock.acquireReadLock();
      try {
        checkOpenness();

        checkLowDiskSpaceRequestsAndReadOnlyConditions();

        return doValidatedPutIndexValue(indexId, key, value, validator);
      } finally {
        stateLock.releaseReadLock();
      }
    } catch (final OInvalidIndexEngineIdException ie) {
      throw logAndPrepareForRethrow(ie);
    } catch (final RuntimeException ee) {
      throw logAndPrepareForRethrow(ee);
    } catch (final Error ee) {
      throw logAndPrepareForRethrow(ee);
    } catch (final Throwable t) {
      throw logAndPrepareForRethrow(t);
    }
  }
Puts the given value under the given key into this storage for the index with the given index id. Validates the operation using
the provided validator.

@param indexId   the index id of the index to put the value into.
@param key       the key to put the value under.
@param value     the value to put.
@param validator the operation validator.

@return {@code true} if the validator allowed the put, {@code false} otherwise.

@see OBaseIndexEngine.Validator#validate(Object, Object, Object)