Program: 87357
Project: 87357
Buggy source:
@Override public String getLocation(final OverlayWidget overlayWidget,final String languageIso,final boolean childrenIncluded){
  if (overlayWidget == null)   return null;
  final List<OverlayWidget> path=overlayWidget.getParentOverlayWidgets();
  path.add(overlayWidget);
  final StringBuilder location=new StringBuilder();
  final String splitter=getSplitter(languageIso);
  for (  final OverlayWidget aw : path) {
    final Collection<Class<? extends OverlayWidget>> filtered=Collections2.filter(hiddenAmendableWidgets,new Predicate<Class<? extends OverlayWidget>>(){
      @Override public boolean apply(      Class<? extends OverlayWidget> input){
        return !ClassUtils.isAssignableFrom(input.getClass(),aw.getClass());
      }
    }
);
    if (!filtered.contains(aw.getClass()) || showAmendableWidgets.contains(aw.getClass())) {
      if (aw.getParentOverlayWidget() == null) {
        location.append(getRootNotation(aw,languageIso));
      }
 else {
        if (aw.getParentOverlayWidget().getType().equalsIgnoreCase(aw.getType())) {
          location.append(getSubNotation(aw,languageIso));
        }
 else {
          location.append(getNotation(aw,languageIso));
        }
        final String num=getNum(aw,languageIso,false);
        if (num != null && !("String_Node_Str".equals(num.trim()))) {
          location.append("String_Node_Str").append(num);
        }
 else         if (path.indexOf(aw) == path.size() - 1) {
          location.append("String_Node_Str").append(aw.getTypeIndex() + 1);
        }
        if (aw.isIntroducedByAnAmendment())         location.append("String_Node_Str").append(getNewNotation(languageIso));
      }
      location.append(splitter);
    }
    if (hideUnderLayingAmendableWidgets.contains(aw.getClass())) {
      break;
    }
  }
  final String locationString=location.toString().endsWith(splitter) ? location.substring(0,location.length() - splitter.length()) : location.toString();
  return locationString.trim();
}

Fixed version (ground truth):
@Override public String getLocation(final OverlayWidget overlayWidget,final String languageIso,final boolean childrenIncluded){
  if (overlayWidget == null)   return null;
  final List<OverlayWidget> path=overlayWidget.getParentOverlayWidgets();
  path.add(overlayWidget);
  final StringBuilder location=new StringBuilder();
  final String splitter=getSplitter(languageIso);
  for (  final OverlayWidget aw : path) {
    final Collection<Class<? extends OverlayWidget>> filtered=Collections2.filter(hiddenAmendableWidgets,new Predicate<Class<? extends OverlayWidget>>(){
      @Override public boolean apply(      Class<? extends OverlayWidget> input){
        return !ClassUtils.isAssignableFrom(input.getClass(),aw.getClass());
      }
    }
);
    if (!filtered.contains(aw.getClass()) || showAmendableWidgets.contains(aw.getClass())) {
      if (aw.getParentOverlayWidget() == null) {
        location.append(getRootNotation(aw,languageIso));
      }
 else {
        if (aw.getParentOverlayWidget().getType().equalsIgnoreCase(aw.getType())) {
          location.append(getSubNotation(aw,languageIso));
        }
 else {
          location.append(getNotation(aw,languageIso));
        }
        final String num=getNum(aw,languageIso,false);
        if (num != null && !("String_Node_Str".equals(num.trim()))) {
          location.append("String_Node_Str").append(num);
        }
 else {
          location.append("String_Node_Str").append(aw.getTypeIndex() + 1);
        }
        if (aw.isIntroducedByAnAmendment())         location.append("String_Node_Str").append(getNewNotation(languageIso));
      }
      location.append(splitter);
    }
    if (hideUnderLayingAmendableWidgets.contains(aw.getClass())) {
      break;
    }
  }
  final String locationString=location.toString().endsWith(splitter) ? location.substring(0,location.length() - splitter.length()) : location.toString();
  return locationString.trim();
}