Program: 101377
Project: 101377
Buggy source:
@Override public void newMatch(File file){
  URI location=URI.createFileURI(file.getAbsolutePath());
  location=location.deresolve(absolutPath());
  location=URI.createHierarchicalURI(location.scheme(),location.authority(),location.device(),location.segmentsList().subList(1,location.segmentCount()).toArray(new String[location.segmentCount() - 1]),location.query(),location.fragment());
  if (getTemplate() == null) {
    setTemplate(PropertiesFactory.eINSTANCE.createProjectLocale());
    getTemplate().setName("String_Node_Str");
    getChildren().add(getTemplate());
  }
  PropertyFileDescriptor descriptor=createDescriptor(getTemplate(),location);
  getTemplate().getDescriptors().add(descriptor);
  PropertyFile propertyFile=descriptor.loadProperties();
  descriptor.setKeys(propertyFile.getProperties().size());
  descriptor.updatePercentComplete();
  String localeString=getLocaleString(file.getName());
  if (!localeString.isEmpty()) {
    Locale locale=createVariant(localeString.substring(1));
    descriptor.setVariant(locale);
  }
  Pattern pattern=buildPatternFrom(file.getName().replace(localeString,"String_Node_Str"));
  File folder=file.getParentFile();
  String[] childNames=folder.list();
  for (  String child : childNames) {
    if (child.equals(file.getName()))     continue;
    Matcher matcher=pattern.matcher(child);
    if (matcher.matches()) {
      Locale locale=createVariant(matcher.group(1).substring(1));
      ProjectLocale projectLocale=getOrCreateProjectLocale(locale);
      URI childURI=location.trimSegments(1).appendSegment(child);
      PropertyFileDescriptor fileDescriptor=createDescriptor(projectLocale,childURI);
      fileDescriptor.setMaster(descriptor);
      PropertyFile translatedFile=fileDescriptor.loadProperties();
      fileDescriptor.setKeys(translatedFile.getProperties().size());
    }
  }
}

Fixed version (ground truth):
@Override public void newMatch(File file){
  URI location=URI.createFileURI(file.getAbsolutePath());
  location=location.deresolve(absolutPath());
  location=URI.createHierarchicalURI(location.scheme(),location.authority(),location.device(),location.segmentsList().subList(1,location.segmentCount()).toArray(new String[location.segmentCount() - 1]),location.query(),location.fragment());
  if (getTemplate() == null) {
    setTemplate(PropertiesFactory.eINSTANCE.createProjectLocale());
    getTemplate().setName("String_Node_Str");
    getChildren().add(getTemplate());
  }
  PropertyFileDescriptor descriptor=createDescriptor(getTemplate(),location);
  getTemplate().getDescriptors().add(descriptor);
  getTemplate().getChildren().add(descriptor);
  PropertyFile propertyFile=descriptor.loadProperties();
  descriptor.setKeys(propertyFile.getProperties().size());
  descriptor.updatePercentComplete();
  String localeString=getLocaleString(file.getName());
  if (!localeString.isEmpty()) {
    Locale locale=createVariant(localeString.substring(1));
    descriptor.setVariant(locale);
  }
  Pattern pattern=buildPatternFrom(file.getName().replace(localeString,"String_Node_Str"));
  File folder=file.getParentFile();
  String[] childNames=folder.list();
  for (  String child : childNames) {
    if (child.equals(file.getName()))     continue;
    Matcher matcher=pattern.matcher(child);
    if (matcher.matches()) {
      Locale locale=createVariant(matcher.group(1).substring(1));
      ProjectLocale projectLocale=getOrCreateProjectLocale(locale);
      URI childURI=location.trimSegments(1).appendSegment(child);
      PropertyFileDescriptor fileDescriptor=createDescriptor(projectLocale,childURI);
      fileDescriptor.setMaster(descriptor);
      PropertyFile translatedFile=fileDescriptor.loadProperties();
      fileDescriptor.setKeys(translatedFile.getProperties().size());
    }
  }
}