private <T, E extends Throwable> T withReadLock(@NotNull ThrowableComputable<T, E> computable) throws E {
    return ConcurrencyUtil.withLock(myPendingInitializationLock.readLock(), computable);
  }
private <T, E extends Throwable> T withReadLock(@NotNull ThrowableComputable<T, E> computable)