Program: 53199
Project: 53199
Buggy source:
private static List<FactMetaModel> toModel(String drl) throws DroolsParserException {
  if (drl != null && (drl.startsWith("String_Node_Str") || drl.startsWith("String_Node_Str"))) {
    throw new DroolsParserException("String_Node_Str");
  }
  final DrlParser parser=new DrlParser();
  final StringReader reader=new StringReader(drl);
  final PackageDescr pkg=parser.parse(reader);
  if (parser.hasErrors()) {
    throw new DroolsParserException("String_Node_Str" + drl + "String_Node_Str");
  }
  if (pkg == null) {
    return emptyList();
  }
  final List<TypeDeclarationDescr> types=pkg.getTypeDeclarations();
  final List<FactMetaModel> list=new ArrayList<FactMetaModel>(types.size());
  for (  final TypeDeclarationDescr td : types) {
    final FactMetaModel mm=new FactMetaModel();
    mm.setName(td.getTypeName());
    mm.setSuperType(td.getSuperTypeName());
    final Map<String,TypeFieldDescr> fields=td.getFields();
    for (    Map.Entry<String,TypeFieldDescr> en : fields.entrySet()) {
      final String fieldName=en.getKey();
      final TypeFieldDescr descr=en.getValue();
      final FieldMetaModel fm=new FieldMetaModel(fieldName,descr.getPattern().getObjectType());
      mm.getFields().add(fm);
    }
    final Map<String,AnnotationDescr> annotations=td.getAnnotations();
    for (    final Map.Entry<String,AnnotationDescr> en : annotations.entrySet()) {
      final String annotationName=en.getKey();
      final AnnotationDescr descr=en.getValue();
      final Map<String,String> values=descr.getValues();
      final AnnotationMetaModel am=new AnnotationMetaModel(annotationName,values);
      mm.getAnnotations().add(am);
    }
    list.add(mm);
  }
  return list;
}

Fixed version (ground truth):
private static List<FactMetaModel> toModel(String drl) throws DroolsParserException {
  Preconditions.checkNotNull(drl,"String_Node_Str");
  if (drl.startsWith("String_Node_Str") || drl.startsWith("String_Node_Str")) {
    throw new DroolsParserException("String_Node_Str");
  }
  final DrlParser parser=new DrlParser();
  final StringReader reader=new StringReader(drl);
  final PackageDescr pkg=parser.parse(reader);
  if (parser.hasErrors()) {
    throw new DroolsParserException("String_Node_Str" + drl + "String_Node_Str");
  }
  if (pkg == null) {
    return emptyList();
  }
  final List<TypeDeclarationDescr> types=pkg.getTypeDeclarations();
  final List<FactMetaModel> list=new ArrayList<FactMetaModel>(types.size());
  for (  final TypeDeclarationDescr td : types) {
    final FactMetaModel mm=new FactMetaModel();
    mm.setName(td.getTypeName());
    mm.setSuperType(td.getSuperTypeName());
    final Map<String,TypeFieldDescr> fields=td.getFields();
    for (    Map.Entry<String,TypeFieldDescr> en : fields.entrySet()) {
      final String fieldName=en.getKey();
      final TypeFieldDescr descr=en.getValue();
      final FieldMetaModel fm=new FieldMetaModel(fieldName,descr.getPattern().getObjectType());
      mm.getFields().add(fm);
    }
    final Map<String,AnnotationDescr> annotations=td.getAnnotations();
    for (    final Map.Entry<String,AnnotationDescr> en : annotations.entrySet()) {
      final String annotationName=en.getKey();
      final AnnotationDescr descr=en.getValue();
      final Map<String,String> values=descr.getValues();
      final AnnotationMetaModel am=new AnnotationMetaModel(annotationName,values);
      mm.getAnnotations().add(am);
    }
    list.add(mm);
  }
  return list;
}