AsyncState () { AsyncState state = myState; // memory barrier if (state == null) { if (myStateFuture == null) { ((FileBasedIndexImpl)FileBasedIndex.getInstance()).waitUntilIndicesAreInitialized(); } if (ProgressManager.getInstance().isInNonCancelableSection()) { try { state = Futures.getUnchecked(myStateFuture); } catch (Exception e) { FileBasedIndexImpl.LOG.error(e); } } else { CompletableFuture<AsyncState> future = myStateFuture; if (future == null) { throw new AlreadyDisposedException("Stub Index is already disposed"); } state = ProgressIndicatorUtils.awaitWithCheckCanceled(future); } myState = state; } return state; }