Program: 168637
Project: 168637
Buggy source:
private List<Alarm> createAlarms(String tenantId,List<Map<String,Object>> rows){
  Alarm alarm=null;
  String previousAlarmId=null;
  final List<Alarm> alarms=new LinkedList<>();
  List<MetricDefinition> alarmedMetrics=null;
  for (  final Map<String,Object> row : rows) {
    final String alarmId=(String)row.get("String_Node_Str");
    if (!alarmId.equals(previousAlarmId)) {
      alarmedMetrics=new ArrayList<>();
      alarm=new Alarm(alarmId,getString(row,"String_Node_Str"),getString(row,"String_Node_Str"),getString(row,"String_Node_Str"),alarmedMetrics,AlarmState.valueOf(getString(row,"String_Node_Str")),getString(row,"String_Node_Str"),getString(row,"String_Node_Str"),new DateTime(((Timestamp)row.get("String_Node_Str")).getTime(),DateTimeZone.forID("String_Node_Str")),new DateTime(((Timestamp)row.get("String_Node_Str")).getTime(),DateTimeZone.forID("String_Node_Str")),new DateTime(((Timestamp)row.get("String_Node_Str")).getTime(),DateTimeZone.forID("String_Node_Str")));
      alarms.add(alarm);
    }
    previousAlarmId=alarmId;
    final Map<String,String> dimensionMap=new HashMap<>();
    if (row.containsKey("String_Node_Str")) {
      final String dimensions=getString(row,"String_Node_Str");
      if (dimensions != null && !dimensions.isEmpty()) {
        for (        String dimension : dimensions.split("String_Node_Str")) {
          final String[] parsed_dimension=dimension.split("String_Node_Str");
          if (parsed_dimension.length == 2) {
            dimensionMap.put(parsed_dimension[0],parsed_dimension[1]);
          }
 else {
            logger.error("String_Node_Str",dimension);
          }
        }
      }
    }
    alarmedMetrics.add(new MetricDefinition(getString(row,"String_Node_Str"),dimensionMap));
  }
  return alarms;
}

Fixed version (ground truth):
private List<Alarm> createAlarms(String tenantId,List<Map<String,Object>> rows){
  Alarm alarm;
  String previousAlarmId=null;
  final List<Alarm> alarms=new LinkedList<>();
  List<MetricDefinition> alarmedMetrics=null;
  for (  final Map<String,Object> row : rows) {
    final String alarmId=(String)row.get("String_Node_Str");
    if (!alarmId.equals(previousAlarmId)) {
      alarmedMetrics=new ArrayList<>();
      alarm=new Alarm(alarmId,getString(row,"String_Node_Str"),getString(row,"String_Node_Str"),getString(row,"String_Node_Str"),alarmedMetrics,AlarmState.valueOf(getString(row,"String_Node_Str")),getString(row,"String_Node_Str"),getString(row,"String_Node_Str"),new DateTime(((Timestamp)row.get("String_Node_Str")).getTime(),DateTimeZone.forID("String_Node_Str")),new DateTime(((Timestamp)row.get("String_Node_Str")).getTime(),DateTimeZone.forID("String_Node_Str")),new DateTime(((Timestamp)row.get("String_Node_Str")).getTime(),DateTimeZone.forID("String_Node_Str")));
      alarms.add(alarm);
    }
    previousAlarmId=alarmId;
    final Map<String,String> dimensionMap=new HashMap<>();
    if (row.containsKey("String_Node_Str")) {
      final String dimensions=getString(row,"String_Node_Str");
      if (dimensions != null && !dimensions.isEmpty()) {
        for (        String dimension : dimensions.split("String_Node_Str")) {
          final String[] parsed_dimension=dimension.split("String_Node_Str");
          if (parsed_dimension.length == 2) {
            dimensionMap.put(parsed_dimension[0],parsed_dimension[1]);
          }
 else {
            logger.error("String_Node_Str",dimension);
          }
        }
      }
    }
    alarmedMetrics.add(new MetricDefinition(getString(row,"String_Node_Str"),dimensionMap));
  }
  return alarms;
}