Program: 13026
Project: 13026
Buggy source:
public Map<String,List<Icon>> getIconsMap(Map<String,GraphmlNode> vertexMap){
  Map<String,DataMatcher> matcherMap=this.dataMatcherMap.getMatcherMap();
  Map<String,List<Icon>> iconMap=new HashMap<>();
  List<IconType> iconTypeList=viewerConfig.getIcon();
  List<IconType.Data> datas;
  for (  GraphmlNode vertice : vertexMap.values()) {
    System.out.println(vertice);
    for (    IconType iconType : iconTypeList) {
      boolean match=true;
      datas=iconType.getData();
      boolean isDefaultIcon=datas.isEmpty();
      for (      IconType.Data data : datas) {
        final String value=vertice.getGraphmlNodeData().get(data.getKey());
        String matcher=data.getMatcher();
        if (matcher == null) {
          matcher="String_Node_Str";
        }
        if (value == null) {
          match=false;
          break;
        }
        DataMatcher matcherInstance=matcherMap.get(matcher);
        boolean matchResult=matcherInstance.compareData(value,data.getValue());
        if (!matchResult) {
          match=false;
          break;
        }
      }
      boolean iconExists=iconMap.containsKey(vertice.getId());
      if ((!isDefaultIcon && match) || (isDefaultIcon && !iconExists)) {
        final String name=iconType.getName();
        String[] iconNames=name.split("String_Node_Str");
        iconMap.putIfAbsent(vertice.getId(),new ArrayList<>());
        for (int i=1; i < iconNames.length; i++) {
          List<Icon> iconList=iconMap.get(vertice.getId());
          iconList.add(new Icon(iconNames[i].trim()));
        }
        break;
      }
    }
  }
  return iconMap;
}

Fixed version (ground truth):
public Map<String,List<Icon>> getIconsMap(Map<String,GraphmlNode> vertexMap){
  Map<String,DataMatcher> matcherMap=this.dataMatcherMap.getMatcherMap();
  Map<String,List<Icon>> iconMap=new HashMap<>();
  List<IconType> iconTypeList=viewerConfig.getIcon();
  List<IconType.Data> datas;
  for (  GraphmlNode vertice : vertexMap.values()) {
    System.out.println(vertice);
    for (    IconType iconType : iconTypeList) {
      boolean match=true;
      datas=iconType.getData();
      boolean isDefaultIcon=datas.isEmpty();
      for (      IconType.Data data : datas) {
        final String value=vertice.getGraphmlNodeData().get(data.getKey());
        String matcher=data.getMatcher();
        if (matcher == null) {
          matcher="String_Node_Str";
        }
        if (value == null) {
          match=false;
          break;
        }
        DataMatcher matcherInstance=matcherMap.get(matcher);
        boolean matchResult=matcherInstance.compareData(value,data.getValue());
        if (!matchResult) {
          match=false;
          break;
        }
      }
      boolean iconExists=iconMap.containsKey(vertice.getId());
      if ((!isDefaultIcon && match) || (isDefaultIcon && !iconExists)) {
        final String name=iconType.getName();
        String[] iconNames=name.split("String_Node_Str");
        iconMap.putIfAbsent(vertice.getId(),new ArrayList<>());
        for (int i=0; i < iconNames.length; i++) {
          List<Icon> iconList=iconMap.get(vertice.getId());
          iconList.add(new Icon(iconNames[i].trim()));
        }
        break;
      }
    }
  }
  return iconMap;
}