@Override
  public synchronized int lookupOrInsert(int key,
                                         @NotNull ValueAcceptor valuesAcceptor,
                                         @NotNull ValueCreator valueCreator) throws IOException {
    IntRef returnValue = new IntRef(NO_VALUE);
    multimap.lookup(key, value -> {
      try {
        if (valuesAcceptor.accept(value)) {
          returnValue.set(value);
          return false;
        }
        return true;
      }
      catch (IOException e) {
        throw new UncheckedIOException(e);
      }
    });
    if (returnValue.get() != NO_VALUE) {
      return returnValue.get();
    }

    int newValue = valueCreator.newValueForKey(key);
    multimap.put(key, newValue);
    return newValue;
  }
@Override
  public synchronized int lookupOrInsert(int key,
                                         @NotNull ValueAcceptor valuesAcceptor,
                                         @NotNull ValueCreator valueCreator)