protected final void initValidation() {
    if (myDisposed) {
      return;
    }
    myValidationAlarm.cancelAllRequests();
    Runnable validateRequest = () -> {
      if (myDisposed) {
        return;
      }
      updateErrorInfo(doValidateAll());

      if (continuousValidation()) {
        initValidation();
      }
    };

    if (getValidationThreadToUse() == Alarm.ThreadToUse.SWING_THREAD) {
      // null if headless
      JRootPane rootPane = getRootPane();
      myValidationAlarm.addRequest(validateRequest, myValidationDelay,
                                   (!LoadingState.COMPONENTS_REGISTERED.isOccurred() || ApplicationManager.getApplication() == null) ? null :
                                   rootPane != null ? ModalityState.stateForComponent(rootPane) :
                                   ModalityState.current());
    }
    else {
      myValidationAlarm.addRequest(validateRequest, myValidationDelay);
    }
  }
protected final void initValidation()