Program: 160355
Project: 160355
Buggy source:
private void processSingleRequest(JsonObject request,String jsonToken,HttpServletRequest httpRequest,JsonWriter writer) throws Exception {
  long s=System.nanoTime();
  String interfaceName=request.get("String_Node_Str").getAsString();
  String methodName=request.get("String_Node_Str").getAsString();
  SService sService=bimServer.getServicesMap().getByName(interfaceName);
  if (sService == null) {
    sService=bimServer.getServicesMap().getBySimpleName(interfaceName);
  }
  if (sService == null) {
    throw new UserException("String_Node_Str" + interfaceName);
  }
  SMethod method=sService.getSMethod(methodName);
  if (method == null) {
    SMethod alternative=bimServer.getServicesMap().findMethod(methodName);
    if (alternative == null) {
      throw new UserException("String_Node_Str" + methodName + "String_Node_Str"+ interfaceName);
    }
 else {
      throw new UserException("String_Node_Str" + methodName + "String_Node_Str"+ interfaceName+ "String_Node_Str"+ alternative.getService().getSimpleName()+ "String_Node_Str");
    }
  }
  KeyValuePair[] parameters=new KeyValuePair[method.getParameters().size()];
  if (request.has("String_Node_Str")) {
    JsonObject parametersJson=request.getAsJsonObject("String_Node_Str");
    for (int i=0; i < method.getParameters().size(); i++) {
      SParameter parameter=method.getParameter(i);
      if (parametersJson.has(parameter.getName())) {
        parameters[i]=new KeyValuePair(parameter.getName(),converter.fromJson(parameter.getType(),parameter.getGenericType(),parametersJson.get(parameter.getName())));
      }
 else {
        LOGGER.error("String_Node_Str" + method.getName() + "String_Node_Str"+ parameter.getName());
        throw new UserException("String_Node_Str" + method.getName() + "String_Node_Str"+ parameter.getName());
      }
    }
  }
 else   if (parameters.length > 0) {
    throw new UserException("String_Node_Str" + parameters.length + "String_Node_Str");
  }
  PublicInterface service=getServiceInterface(httpRequest,bimServer,sService.getInterfaceClass(),methodName,jsonToken);
  String oldThreadName=Thread.currentThread().getName();
  Thread.currentThread().setName(interfaceName + "String_Node_Str" + methodName);
  try {
    Recording recording=bimServer.getMetricsRegistry().startRecording(sService,method);
    Object result=method.invoke(sService.getInterfaceClass(),service,parameters);
    recording.finish();
    if (writer != null) {
      if (result == null) {
        writer.beginObject();
        writer.name("String_Node_Str");
        writer.beginObject();
        writer.endObject();
        writer.endObject();
      }
 else {
        writer.beginObject();
        writer.name("String_Node_Str");
        converter.toJson(result,writer);
        writer.endObject();
      }
    }
    long e=System.nanoTime();
    LOGGER.debug(interfaceName + "String_Node_Str" + methodName+ "String_Node_Str"+ ((e - s) / 1000000)+ "String_Node_Str");
  }
  finally {
    Thread.currentThread().setName(oldThreadName);
  }
}

Fixed version (ground truth):
private void processSingleRequest(JsonObject request,String jsonToken,HttpServletRequest httpRequest,JsonWriter writer) throws Exception {
  long s=System.nanoTime();
  String interfaceName=request.get("String_Node_Str").getAsString();
  if (!request.has("String_Node_Str")) {
    throw new UserException("String_Node_Str");
  }
  String methodName=request.get("String_Node_Str").getAsString();
  SService sService=bimServer.getServicesMap().getByName(interfaceName);
  if (sService == null) {
    sService=bimServer.getServicesMap().getBySimpleName(interfaceName);
  }
  if (sService == null) {
    throw new UserException("String_Node_Str" + interfaceName);
  }
  SMethod method=sService.getSMethod(methodName);
  if (method == null) {
    SMethod alternative=bimServer.getServicesMap().findMethod(methodName);
    if (alternative == null) {
      throw new UserException("String_Node_Str" + methodName + "String_Node_Str"+ interfaceName);
    }
 else {
      throw new UserException("String_Node_Str" + methodName + "String_Node_Str"+ interfaceName+ "String_Node_Str"+ alternative.getService().getSimpleName()+ "String_Node_Str");
    }
  }
  KeyValuePair[] parameters=new KeyValuePair[method.getParameters().size()];
  if (request.has("String_Node_Str")) {
    JsonObject parametersJson=request.getAsJsonObject("String_Node_Str");
    for (int i=0; i < method.getParameters().size(); i++) {
      SParameter parameter=method.getParameter(i);
      if (parametersJson.has(parameter.getName())) {
        parameters[i]=new KeyValuePair(parameter.getName(),converter.fromJson(parameter.getType(),parameter.getGenericType(),parametersJson.get(parameter.getName())));
      }
 else {
        LOGGER.error("String_Node_Str" + method.getName() + "String_Node_Str"+ parameter.getName());
        throw new UserException("String_Node_Str" + method.getName() + "String_Node_Str"+ parameter.getName());
      }
    }
  }
 else   if (parameters.length > 0) {
    throw new UserException("String_Node_Str" + parameters.length + "String_Node_Str");
  }
  PublicInterface service=getServiceInterface(httpRequest,bimServer,sService.getInterfaceClass(),methodName,jsonToken);
  String oldThreadName=Thread.currentThread().getName();
  Thread.currentThread().setName(interfaceName + "String_Node_Str" + methodName);
  try {
    Recording recording=bimServer.getMetricsRegistry().startRecording(sService,method);
    Object result=method.invoke(sService.getInterfaceClass(),service,parameters);
    recording.finish();
    if (writer != null) {
      if (result == null) {
        writer.beginObject();
        writer.name("String_Node_Str");
        writer.beginObject();
        writer.endObject();
        writer.endObject();
      }
 else {
        writer.beginObject();
        writer.name("String_Node_Str");
        converter.toJson(result,writer);
        writer.endObject();
      }
    }
    long e=System.nanoTime();
    LOGGER.debug(interfaceName + "String_Node_Str" + methodName+ "String_Node_Str"+ ((e - s) / 1000000)+ "String_Node_Str");
  }
  finally {
    Thread.currentThread().setName(oldThreadName);
  }
}