code: public void requestModificationLock() {
      lock.readLock().lock();
      if (!veto)
        return;
  
      if (throwException) {
        lock.readLock().unlock();
        throw new OModificationOperationProhibitedException("Modification requests are prohibited");
      }
  
      boolean wasInterrupted = false;
      Thread thread = Thread.currentThread();
      waiters.add(thread);
  
      while (veto) {
        LockSupport.park(this);
        if (Thread.interrupted())
          wasInterrupted = true;
      }
  
      waiters.remove(thread);
      if (wasInterrupted)
        thread.interrupt();
    }
docs: Tells the lock that thread is going to perform data modifications in storage. This method allows to perform several data
  modifications in parallel.