void (@NotNull FormattingStateId state, double completionRate) { ProgressIndicator indicator = getIndicator(); if (indicator == null) { return; } updateTextIfNecessary(state); myLastState = state; double newFraction = 0; for (FormattingStateId prevState : state.getPreviousStates()) { newFraction += MAX_PROGRESS_VALUE * prevState.getProgressWeight() / TOTAL_WEIGHT; } newFraction += completionRate * state.getProgressWeight() / TOTAL_WEIGHT; double currentFraction = indicator.getFraction(); if (newFraction - currentFraction < MAX_PROGRESS_VALUE / 100) { return; } indicator.setFraction(newFraction); }