public static JpsRemoteProto.Message.Request createCompileRequest(
      final JpsRemoteProto.Message.Request.CompilationRequest.Type command,
      String project,
      Collection<String> modules,
      Collection<String> artifacts,
      Map<String, String> userData,
      Collection<String> paths) {

    final JpsRemoteProto.Message.Request.CompilationRequest.Builder builder =
        JpsRemoteProto.Message.Request.CompilationRequest.newBuilder().setCommandType(command);
    builder.setProjectId(project);
    if (!modules.isEmpty()) {
      builder.addAllModuleName(modules);
    }
    if (!artifacts.isEmpty()) {
      builder.addAllArtifactName(artifacts);
    }
    if (!userData.isEmpty()) {
      for (Map.Entry<String, String> entry : userData.entrySet()) {
        final String key = entry.getKey();
        final String value = entry.getValue();
        if (key != null && value != null) {
          builder.addBuilderParameter(createPair(key, value));
        }
      }
    }
    if (!paths.isEmpty()) {
      builder.addAllFilePath(paths);
    }
    return JpsRemoteProto.Message.Request.newBuilder()
        .setRequestType(JpsRemoteProto.Message.Request.Type.COMPILE_REQUEST)
        .setCompileRequest(builder.build())
        .build();
  }
 public static JpsRemoteProto.Message.Request createCompileRequest(
     final JpsRemoteProto.Message.Request.CompilationRequest.Type command,
     String project,
     Collection<String> modules) {
   final JpsRemoteProto.Message.Request.CompilationRequest.Builder builder =
       JpsRemoteProto.Message.Request.CompilationRequest.newBuilder().setCommandType(command);
   builder.setProjectId(project);
   if (modules.size() > 0) {
     builder.addAllModuleName(modules);
   }
   return JpsRemoteProto.Message.Request.newBuilder()
       .setRequestType(JpsRemoteProto.Message.Request.Type.COMPILE_REQUEST)
       .setCompileRequest(builder.build())
       .build();
 }