void (@NotNull ManagingFS managingFS, @NotNull FileWatcherNotificationSink notificationSink) { myNotificationSink = notificationSink; boolean disabled = isDisabled(); myExecutable = getExecutable(); if (disabled) { LOG.info("Native file watcher is disabled"); } else if (myExecutable == null) { if (SystemInfo.isWindows || SystemInfo.isMac || SystemInfo.isLinux && (CpuArch.isIntel64() || CpuArch.isArm64())) { notifyOnFailure(IdeCoreBundle.message("watcher.exe.not.found"), null); } else if (SystemInfo.isLinux) { notifyOnFailure(IdeCoreBundle.message("watcher.exe.compile"), NotificationListener.URL_OPENING_LISTENER); } else { notifyOnFailure(IdeCoreBundle.message("watcher.exe.not.exists"), null); } } else if (!Files.isExecutable(myExecutable)) { String message = IdeCoreBundle.message("watcher.exe.not.exe", myExecutable); notifyOnFailure(message, (notification, event) -> IdeUiService.getInstance().revealFile(myExecutable)); } else { try { startupProcess(false); LOG.info("Native file watcher is operational."); } catch (IOException e) { LOG.warn(e.getMessage()); notifyOnFailure(IdeCoreBundle.message("watcher.failed.to.start"), null); } } }