protected <T, E extends Throwable> T withWriteLock(@NotNull ThrowableComputable<T, E> runnable) throws E {
    return ConcurrencyUtil.withLock(context.writeLock(), runnable);
  }
protected <T, E extends Throwable> T withWriteLock(@NotNull ThrowableComputable<T, E> runnable)