void (@NotNull VirtualFile file, @NotNull SAXParseException exception) { Project project = myPsiManager.getProject(); String basePath = project.getBasePath(); String filePath = file.getPresentableUrl(); if (basePath != null) { try { filePath = Path.of(basePath).relativize(Path.of(file.getPath())).toString(); } catch (IllegalArgumentException ignored) { } } Runnable openAnnotationXml = () -> new OpenFileDescriptor(project, file, exception.getLineNumber() - 1, exception.getColumnNumber() - 1).navigate(true); EXTERNAL_ANNOTATIONS_MESSAGES.createNotification( JavaBundle.message("external.annotations.problem.title"), JavaBundle.message("external.annotations.problem.parse.error", filePath, exception.getMessage()), NotificationType.WARNING) .addAction(NotificationAction.createSimple(JavaBundle.message("external.annotations.open.file"), openAnnotationXml)) .notify(project); }