@Override
        protected void handleBuildEvent(UUID sessionId, CmdlineRemoteProto.Message.BuilderMessage.BuildEvent event) {
          final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.Type eventType = event.getEventType();
          switch (eventType) {
            case FILES_GENERATED -> {
              final List<CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.GeneratedFile> generated =
                event.getGeneratedFilesList();
              CompilationStatusListener publisher =
                myProject.isDisposed() ? null : myProject.getMessageBus().syncPublisher(CompilerTopics.COMPILATION_STATUS);
              Set<String> writtenArtifactOutputPaths =
                outputToArtifact != null ? CollectionFactory.createFilePathSet() : null;
              for (CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.GeneratedFile generatedFile : generated) {
                final String root = FileUtil.toSystemIndependentName(generatedFile.getOutputRoot());
                final String relativePath = FileUtil.toSystemIndependentName(generatedFile.getRelativePath());
                if (publisher != null) {
                  publisher.fileGenerated(root, relativePath);
                }
                if (outputToArtifact != null) {
                  Collection<Artifact> artifacts = outputToArtifact.get(root);
                  if (artifacts != null && !artifacts.isEmpty()) {
                    writtenArtifactOutputPaths
                      .add(FileUtil.toSystemDependentName(DeploymentUtil.appendToPath(root, relativePath)));
                  }
                }
              }
              if (writtenArtifactOutputPaths != null && !writtenArtifactOutputPaths.isEmpty()) {
                ArtifactsCompiler.addWrittenPaths(compileContext, writtenArtifactOutputPaths);
              }
            }
            case BUILD_COMPLETED -> {
              ExitStatus status = !event.hasCompletionStatus() ? ExitStatus.SUCCESS : 
                                  switch (event.getCompletionStatus()) {
                case CANCELED -> ExitStatus.CANCELLED;
                case ERRORS -> ExitStatus.ERRORS;
                case SUCCESS -> ExitStatus.SUCCESS;
                case UP_TO_DATE -> ExitStatus.UP_TO_DATE;
              };
              compileContext.putUserDataIfAbsent(COMPILE_SERVER_BUILD_STATUS, status);
            }
            case CUSTOM_BUILDER_MESSAGE -> {
              if (event.hasCustomBuilderMessage()) {
                final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.CustomBuilderMessage message =
                  event.getCustomBuilderMessage();
                if (GlobalOptions.JPS_SYSTEM_BUILDER_ID.equals(message.getBuilderId()) &&
                    GlobalOptions.JPS_UNPROCESSED_FS_CHANGES_MESSAGE_ID.equals(message.getMessageType())) {
                  //noinspection HardCodedStringLiteral
                  final String text = message.getMessageText();
                  if (!StringUtil.isEmpty(text)) {
                    compileContext.addMessage(CompilerMessageCategory.INFORMATION, text, null, -1, -1);
                  }
                }
              }
            }
          }
        }
@Override
        protected void handleBuildEvent(UUID sessionId, CmdlineRemoteProto.Message.BuilderMessage.BuildEvent event)