LocalTask (Task origin, boolean explicitly) { final LocalTaskImpl task = origin instanceof LocalTaskImpl ? (LocalTaskImpl)origin : new LocalTaskImpl(origin); if (explicitly) { TaskManagementUsageCollector.logExplicitlyActivatedTask(myProject); task.setUpdated(new Date()); } myActiveTask.setActive(false); task.setActive(true); addTask(task); if (task.isIssue()) { StartupManager.getInstance(myProject).runWhenProjectIsInitialized(() -> { ProgressManager.getInstance().run(new com.intellij.openapi.progress.Task.Backgroundable(myProject, TaskBundle .message("progress.title.updating", task.getPresentableId())) { @Override public void run(@NotNull ProgressIndicator indicator) { updateIssue(task.getId()); } }); }); } LocalTask oldActiveTask = myActiveTask; boolean isChanged = !task.equals(oldActiveTask); myActiveTask = task; if (isChanged) { myDispatcher.getMulticaster().taskDeactivated(oldActiveTask); myDispatcher.getMulticaster().taskActivated(task); } return task; }