Program: 3620
Project: 3620
Buggy source:
private void labelClassNodeHTML(final ClassInfo ci,final String shape,final String boxBgColor,final StringBuilder buf){
  buf.append("String_Node_Str" + shape + "String_Node_Str"+ boxBgColor+ "String_Node_Str");
  buf.append("String_Node_Str");
  buf.append("String_Node_Str");
  buf.append("String_Node_Str" + ci.getModifiersStr() + "String_Node_Str"+ (ci.isEnum() ? "String_Node_Str" : ci.isAnnotation() ? "String_Node_Str" : ci.isInterface() ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
  final String className=ci.getClassName();
  final int dotIdx=className.lastIndexOf('.');
  if (dotIdx > 0) {
    buf.append("String_Node_Str");
    GraphvizUtils.htmlEncode(className.substring(0,dotIdx + 1),buf);
    buf.append("String_Node_Str");
  }
  buf.append("String_Node_Str");
  GraphvizUtils.htmlEncode(className.substring(dotIdx + 1),buf);
  buf.append("String_Node_Str");
  final float darkness=0.8f;
  final int r=(int)(Integer.parseInt(boxBgColor.substring(0,2),16) * darkness);
  final int g=(int)(Integer.parseInt(boxBgColor.substring(2,4),16) * darkness);
  final int b=(int)(Integer.parseInt(boxBgColor.substring(4,6),16) * darkness);
  final String darkerColor=String.format("String_Node_Str",Integer.toString(r >> 4,16),Integer.toString(r & 0xf,16),Integer.toString(g >> 4,16),Integer.toString(g & 0xf,16),Integer.toString(b >> 4,16),Integer.toString(b & 0xf,16));
  if (ci.annotationInfo != null && ci.annotationInfo.size() > 0) {
    buf.append("String_Node_Str" + darkerColor + "String_Node_Str");
    final List<AnnotationInfo> annotationInfoSorted=new ArrayList<>(ci.annotationInfo);
    Collections.sort(annotationInfoSorted,new Comparator<AnnotationInfo>(){
      @Override public int compare(      final AnnotationInfo a1,      final AnnotationInfo a2){
        return a1.getAnnotationName().compareTo(a2.getAnnotationName());
      }
    }
);
    for (    final AnnotationInfo ai : annotationInfoSorted) {
      buf.append("String_Node_Str");
      buf.append("String_Node_Str");
      GraphvizUtils.htmlEncode(ai.toString(),buf);
      buf.append("String_Node_Str");
    }
  }
  if (ci.fieldInfo != null && ci.fieldInfo.size() > 0) {
    buf.append("String_Node_Str" + darkerColor + "String_Node_Str"+ (scanSpec.ignoreFieldVisibility ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
    final List<FieldInfo> fieldInfoSorted=new ArrayList<>(ci.fieldInfo);
    Collections.sort(fieldInfoSorted,new Comparator<FieldInfo>(){
      @Override public int compare(      final FieldInfo f1,      final FieldInfo f2){
        return f1.getFieldName().compareTo(f2.getFieldName());
      }
    }
);
    for (    final FieldInfo fi : fieldInfoSorted) {
      buf.append("String_Node_Str");
      buf.append("String_Node_Str");
      for (      final AnnotationInfo ai : fi.getAnnotationInfo()) {
        if (buf.charAt(buf.length() - 1) != ' ') {
          buf.append(' ');
        }
        GraphvizUtils.htmlEncode(ai.toString(),buf);
      }
      if (scanSpec.ignoreFieldVisibility) {
        if (buf.charAt(buf.length() - 1) != ' ') {
          buf.append(' ');
        }
        buf.append(fi.getModifierStr());
      }
      if (buf.charAt(buf.length() - 1) != ' ') {
        buf.append(' ');
      }
      GraphvizUtils.htmlEncode(fi.getTypeStr(),buf);
      buf.append("String_Node_Str");
      buf.append("String_Node_Str");
      GraphvizUtils.htmlEncode(fi.getFieldName(),buf);
      buf.append("String_Node_Str");
    }
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
  }
  if (ci.methodInfo != null && ci.methodInfo.size() > 0) {
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
    buf.append("String_Node_Str" + darkerColor + "String_Node_Str"+ (scanSpec.ignoreMethodVisibility ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
    final List<MethodInfo> methodInfoSorted=new ArrayList<>(ci.methodInfo);
    Collections.sort(methodInfoSorted,new Comparator<MethodInfo>(){
      @Override public int compare(      final MethodInfo f1,      final MethodInfo f2){
        return f1.getMethodName().compareTo(f2.getMethodName());
      }
    }
);
    for (    final MethodInfo mi : methodInfoSorted) {
      if (!mi.getMethodName().equals("String_Node_Str")) {
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        for (        final AnnotationInfo ai : mi.getAnnotationInfo()) {
          if (buf.charAt(buf.length() - 1) != ' ') {
            buf.append(' ');
          }
          GraphvizUtils.htmlEncode(ai.toString(),buf);
        }
        if (scanSpec.ignoreMethodVisibility) {
          if (buf.charAt(buf.length() - 1) != ' ') {
            buf.append(' ');
          }
          buf.append(mi.getModifiersStr());
        }
        if (buf.charAt(buf.length() - 1) != ' ') {
          buf.append(' ');
        }
        if (!mi.getMethodName().equals("String_Node_Str")) {
          GraphvizUtils.htmlEncode(mi.getResultTypeStr(),buf);
        }
 else {
          buf.append("String_Node_Str");
        }
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        if (mi.getMethodName().equals("String_Node_Str")) {
          GraphvizUtils.htmlEncode(mi.getClassName().substring(mi.getClassName().lastIndexOf('.') + 1),buf);
        }
 else {
          GraphvizUtils.htmlEncode(mi.getMethodName(),buf);
        }
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        buf.append('(');
        if (mi.getParameterTypes() != null && mi.getNumParameters() != 0) {
          final AnnotationInfo[][] annotationInfoForParam=mi.getParameterAnnotationInfo();
          final String[] typeOfParam=mi.getParameterTypeStrs();
          final String[] nameOfParam=mi.getParameterNames();
          for (int i=0, wrapPos=0; i < mi.getNumParameters(); i++) {
            if (i > 0) {
              buf.append("String_Node_Str");
              wrapPos+=2;
            }
            if (wrapPos > PARAM_WRAP_WIDTH) {
              buf.append("String_Node_Str");
              wrapPos=0;
            }
            if (annotationInfoForParam != null && annotationInfoForParam[i] != null) {
              for (              final AnnotationInfo ai : annotationInfoForParam[i]) {
                final String ais=ai.toString();
                if (!ais.isEmpty()) {
                  if (buf.charAt(buf.length() - 1) != ' ') {
                    buf.append(' ');
                  }
                  GraphvizUtils.htmlEncode(ais,buf);
                  wrapPos+=1 + ais.length();
                  if (wrapPos > PARAM_WRAP_WIDTH) {
                    buf.append("String_Node_Str");
                    wrapPos=0;
                  }
                }
              }
            }
            GraphvizUtils.htmlEncode(typeOfParam[i],buf);
            wrapPos+=typeOfParam[i].length();
            if (wrapPos > PARAM_WRAP_WIDTH) {
              buf.append("String_Node_Str");
              wrapPos=0;
            }
            if (nameOfParam != null && nameOfParam[i] != null) {
              buf.append("String_Node_Str");
              GraphvizUtils.htmlEncode(nameOfParam[i],buf);
              wrapPos+=1 + nameOfParam[i].length();
              buf.append("String_Node_Str");
            }
          }
        }
        buf.append(')');
        buf.append("String_Node_Str");
      }
    }
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
  }
  buf.append("String_Node_Str");
  buf.append("String_Node_Str");
}

Fixed version (ground truth):
private void labelClassNodeHTML(final ClassInfo ci,final String shape,final String boxBgColor,final StringBuilder buf){
  buf.append("String_Node_Str" + shape + "String_Node_Str"+ boxBgColor+ "String_Node_Str");
  buf.append("String_Node_Str");
  buf.append("String_Node_Str");
  buf.append("String_Node_Str" + ci.getModifiersStr() + "String_Node_Str"+ (ci.isEnum() ? "String_Node_Str" : ci.isAnnotation() ? "String_Node_Str" : ci.isInterface() ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
  final String className=ci.getClassName();
  final int dotIdx=className.lastIndexOf('.');
  if (dotIdx > 0) {
    buf.append("String_Node_Str");
    GraphvizUtils.htmlEncode(className.substring(0,dotIdx + 1),buf);
    buf.append("String_Node_Str");
  }
  buf.append("String_Node_Str");
  GraphvizUtils.htmlEncode(className.substring(dotIdx + 1),buf);
  buf.append("String_Node_Str");
  final float darkness=0.8f;
  final int r=(int)(Integer.parseInt(boxBgColor.substring(0,2),16) * darkness);
  final int g=(int)(Integer.parseInt(boxBgColor.substring(2,4),16) * darkness);
  final int b=(int)(Integer.parseInt(boxBgColor.substring(4,6),16) * darkness);
  final String darkerColor=String.format("String_Node_Str",Integer.toString(r >> 4,16),Integer.toString(r & 0xf,16),Integer.toString(g >> 4,16),Integer.toString(g & 0xf,16),Integer.toString(b >> 4,16),Integer.toString(b & 0xf,16));
  if (ci.annotationInfo != null && ci.annotationInfo.size() > 0) {
    buf.append("String_Node_Str" + darkerColor + "String_Node_Str");
    final List<AnnotationInfo> annotationInfoSorted=new ArrayList<>(ci.annotationInfo);
    Collections.sort(annotationInfoSorted,new Comparator<AnnotationInfo>(){
      @Override public int compare(      final AnnotationInfo a1,      final AnnotationInfo a2){
        return a1.getAnnotationName().compareTo(a2.getAnnotationName());
      }
    }
);
    for (    final AnnotationInfo ai : annotationInfoSorted) {
      buf.append("String_Node_Str");
      buf.append("String_Node_Str");
      GraphvizUtils.htmlEncode(ai.toString(),buf);
      buf.append("String_Node_Str");
    }
  }
  if (ci.fieldInfo != null && ci.fieldInfo.size() > 0) {
    buf.append("String_Node_Str" + darkerColor + "String_Node_Str"+ (scanSpec.ignoreFieldVisibility ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
    final List<FieldInfo> fieldInfoSorted=new ArrayList<>(ci.fieldInfo);
    Collections.sort(fieldInfoSorted,new Comparator<FieldInfo>(){
      @Override public int compare(      final FieldInfo f1,      final FieldInfo f2){
        return f1.getFieldName().compareTo(f2.getFieldName());
      }
    }
);
    for (    final FieldInfo fi : fieldInfoSorted) {
      buf.append("String_Node_Str");
      buf.append("String_Node_Str");
      for (      final AnnotationInfo ai : fi.getAnnotationInfo()) {
        if (buf.charAt(buf.length() - 1) != ' ') {
          buf.append(' ');
        }
        GraphvizUtils.htmlEncode(ai.toString(),buf);
      }
      if (scanSpec.ignoreFieldVisibility) {
        if (buf.charAt(buf.length() - 1) != ' ') {
          buf.append(' ');
        }
        buf.append(fi.getModifierStr());
      }
      if (buf.charAt(buf.length() - 1) != ' ') {
        buf.append(' ');
      }
      GraphvizUtils.htmlEncode(fi.getTypeStr(),buf);
      buf.append("String_Node_Str");
      buf.append("String_Node_Str");
      GraphvizUtils.htmlEncode(fi.getFieldName(),buf);
      buf.append("String_Node_Str");
    }
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
  }
  if (ci.methodInfo != null && ci.methodInfo.size() > 0) {
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
    buf.append("String_Node_Str" + darkerColor + "String_Node_Str"+ (scanSpec.ignoreMethodVisibility ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
    final List<MethodInfo> methodInfoSorted=new ArrayList<>(ci.methodInfo);
    Collections.sort(methodInfoSorted,new Comparator<MethodInfo>(){
      @Override public int compare(      final MethodInfo f1,      final MethodInfo f2){
        return f1.getMethodName().compareTo(f2.getMethodName());
      }
    }
);
    for (    final MethodInfo mi : methodInfoSorted) {
      if (!mi.getMethodName().equals("String_Node_Str")) {
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        for (        final AnnotationInfo ai : mi.getAnnotationInfo()) {
          if (buf.charAt(buf.length() - 1) != ' ') {
            buf.append(' ');
          }
          GraphvizUtils.htmlEncode(ai.toString(),buf);
        }
        if (scanSpec.ignoreMethodVisibility) {
          if (buf.charAt(buf.length() - 1) != ' ') {
            buf.append(' ');
          }
          buf.append(mi.getModifiersStr());
        }
        if (buf.charAt(buf.length() - 1) != ' ') {
          buf.append(' ');
        }
        if (!mi.getMethodName().equals("String_Node_Str")) {
          GraphvizUtils.htmlEncode(mi.getResultType().toString(),buf);
        }
 else {
          buf.append("String_Node_Str");
        }
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        if (mi.getMethodName().equals("String_Node_Str")) {
          GraphvizUtils.htmlEncode(mi.getClassName().substring(mi.getClassName().lastIndexOf('.') + 1),buf);
        }
 else {
          GraphvizUtils.htmlEncode(mi.getMethodName(),buf);
        }
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        buf.append("String_Node_Str");
        buf.append('(');
        if (mi.getParameterTypes() != null && mi.getNumParameters() != 0) {
          final AnnotationInfo[][] annotationInfoForParam=mi.getParameterAnnotationInfo();
          final String[] typeOfParam=mi.getParameterTypeStrs();
          final String[] nameOfParam=mi.getParameterNames();
          for (int i=0, wrapPos=0; i < mi.getNumParameters(); i++) {
            if (i > 0) {
              buf.append("String_Node_Str");
              wrapPos+=2;
            }
            if (wrapPos > PARAM_WRAP_WIDTH) {
              buf.append("String_Node_Str");
              wrapPos=0;
            }
            if (annotationInfoForParam != null && annotationInfoForParam[i] != null) {
              for (              final AnnotationInfo ai : annotationInfoForParam[i]) {
                final String ais=ai.toString();
                if (!ais.isEmpty()) {
                  if (buf.charAt(buf.length() - 1) != ' ') {
                    buf.append(' ');
                  }
                  GraphvizUtils.htmlEncode(ais,buf);
                  wrapPos+=1 + ais.length();
                  if (wrapPos > PARAM_WRAP_WIDTH) {
                    buf.append("String_Node_Str");
                    wrapPos=0;
                  }
                }
              }
            }
            GraphvizUtils.htmlEncode(typeOfParam[i],buf);
            wrapPos+=typeOfParam[i].length();
            if (nameOfParam != null && nameOfParam[i] != null) {
              buf.append("String_Node_Str");
              GraphvizUtils.htmlEncode(nameOfParam[i],buf);
              wrapPos+=1 + nameOfParam[i].length();
              buf.append("String_Node_Str");
            }
          }
        }
        buf.append(')');
        buf.append("String_Node_Str");
      }
    }
    buf.append("String_Node_Str");
    buf.append("String_Node_Str");
  }
  buf.append("String_Node_Str");
  buf.append("String_Node_Str");
}