public static JpsRemoteProto.Message.Response createBuildEvent(
     final JpsRemoteProto.Message.Response.BuildEvent.Type type,
     @Nullable String description,
     final JpsRemoteProto.Message.Response.BuildEvent.Status status,
     Collection<Pair<String, String>> generatedPaths) {
   final JpsRemoteProto.Message.Response.BuildEvent.Builder builder =
       JpsRemoteProto.Message.Response.BuildEvent.newBuilder().setEventType(type);
   if (description != null) {
     builder.setDescription(description);
   }
   if (status != null) {
     builder.setCompletionStatus(status);
   }
   if (generatedPaths != null) {
     for (Pair<String, String> pair : generatedPaths) {
       final JpsRemoteProto.Message.Response.BuildEvent.GeneratedFile.Builder fileBuilder =
           JpsRemoteProto.Message.Response.BuildEvent.GeneratedFile.newBuilder();
       final JpsRemoteProto.Message.Response.BuildEvent.GeneratedFile generatedFile =
           fileBuilder.setOutputRoot(pair.first).setRelativePath(pair.second).build();
       builder.addGeneratedFiles(generatedFile);
     }
   }
   return JpsRemoteProto.Message.Response.newBuilder()
       .setResponseType(JpsRemoteProto.Message.Response.Type.BUILD_EVENT)
       .setBuildEvent(builder.build())
       .build();
 }
 public static JpsRemoteProto.Message.Response createBuildEvent(
     final JpsRemoteProto.Message.Response.BuildEvent.Type type, @Nullable String description) {
   final JpsRemoteProto.Message.Response.BuildEvent.Builder builder =
       JpsRemoteProto.Message.Response.BuildEvent.newBuilder().setEventType(type);
   if (description != null) {
     builder.setDescription(description);
   }
   return JpsRemoteProto.Message.Response.newBuilder()
       .setResponseType(JpsRemoteProto.Message.Response.Type.BUILD_EVENT)
       .setBuildEvent(builder.build())
       .build();
 }