Program: 15994
Project: 15994
Buggy source:
private void writeMethodDetails(PrintWriter writer,ClassDoc clazz,ExecutableMemberDoc method,String signature){
  String name=method.name();
  if (skipMethod(method)) {
    return;
  }
  Parameter[] params=method.parameters();
  StatementBuilder buff=new StatementBuilder();
  buff.append('(');
  int i=0;
  for (  Parameter p : params) {
    boolean isVarArgs=method.isVarArgs() && i++ == params.length - 1;
    buff.appendExceptFirst("String_Node_Str");
    buff.append(getTypeName(false,isVarArgs,p.type()));
    buff.append(' ');
    buff.append(p.name());
  }
  buff.append(')');
  ClassDoc[] exceptions=method.thrownExceptions();
  if (exceptions.length > 0) {
    buff.append("String_Node_Str");
    buff.resetCount();
    for (    ClassDoc ex : exceptions) {
      buff.appendExceptFirst("String_Node_Str");
      buff.append(ex.typeName());
    }
  }
  if (isDeprecated(method)) {
    name="String_Node_Str" + name + "String_Node_Str";
  }
  writer.println("String_Node_Str" + signature + "String_Node_Str"+ signature+ "String_Node_Str"+ name+ "String_Node_Str"+ buff.toString());
  boolean hasComment=method.commentText() != null && method.commentText().trim().length() != 0;
  writer.println("String_Node_Str" + formatText(method.commentText()) + "String_Node_Str");
  ParamTag[] paramTags=method.paramTags();
  ThrowsTag[] throwsTags=method.throwsTags();
  boolean hasThrowsTag=throwsTags != null && throwsTags.length > 0;
  if (paramTags.length != params.length) {
    if (hasComment && !method.commentText().startsWith("String_Node_Str")) {
      addError("String_Node_Str" + clazz.name() + "String_Node_Str"+ method.position().line()+ "String_Node_Str"+ name+ "String_Node_Str"+ paramTags.length+ "String_Node_Str"+ params.length);
    }
  }
  for (int j=0; j < paramTags.length; j++) {
    String paramName=paramTags[j].parameterName();
    String comment=paramTags[j].parameterComment();
    if (comment.trim().length() == 0) {
      addError("String_Node_Str" + clazz.name() + "String_Node_Str"+ method.position().line()+ "String_Node_Str"+ name+ "String_Node_Str"+ paramName);
    }
    String p=paramName + "String_Node_Str" + comment;
    if (j == 0) {
      writer.println("String_Node_Str");
    }
    writer.println("String_Node_Str" + p + "String_Node_Str");
  }
  Tag[] returnTags=method.tags("String_Node_Str");
  Type returnType=getReturnType(method);
  if (returnTags != null && returnTags.length > 0) {
    writer.println("String_Node_Str");
    String returnComment=returnTags[0].text();
    if (returnComment.trim().length() == 0) {
      addError("String_Node_Str" + clazz.name() + "String_Node_Str"+ method.position().line()+ "String_Node_Str"+ name);
    }
    writer.println("String_Node_Str" + returnComment + "String_Node_Str");
  }
 else   if (returnType != null && !returnType.toString().equals("String_Node_Str")) {
    if (hasComment && !method.commentText().startsWith("String_Node_Str") && !hasThrowsTag) {
      addError("String_Node_Str" + clazz.name() + "String_Node_Str"+ method.position().line()+ "String_Node_Str"+ name+ "String_Node_Str"+ getReturnType(method));
    }
  }
  if (hasThrowsTag) {
    writer.println("String_Node_Str");
    for (    ThrowsTag tag : throwsTags) {
      String p=tag.exceptionName();
      String c=tag.exceptionComment();
      if (c.length() > 0) {
        p+="String_Node_Str" + c;
      }
      writer.println("String_Node_Str" + p + "String_Node_Str");
    }
  }
}

Fixed version (ground truth):
private void writeMethodDetails(PrintWriter writer,ClassDoc clazz,ExecutableMemberDoc method,String signature){
  String name=method.name();
  if (skipMethod(method)) {
    return;
  }
  Parameter[] params=method.parameters();
  StatementBuilder buff=new StatementBuilder();
  buff.append('(');
  int i=0;
  for (  Parameter p : params) {
    boolean isVarArgs=method.isVarArgs() && i++ == params.length - 1;
    buff.appendExceptFirst("String_Node_Str");
    buff.append(getTypeName(false,isVarArgs,p.type()));
    buff.append(' ');
    buff.append(p.name());
  }
  buff.append(')');
  ClassDoc[] exceptions=method.thrownExceptions();
  if (exceptions.length > 0) {
    buff.append("String_Node_Str");
    buff.resetCount();
    for (    ClassDoc ex : exceptions) {
      buff.appendExceptFirst("String_Node_Str");
      buff.append(ex.typeName());
    }
  }
  if (isDeprecated(method)) {
    name="String_Node_Str" + name + "String_Node_Str";
  }
  writer.println("String_Node_Str" + signature + "String_Node_Str"+ signature+ "String_Node_Str"+ name+ "String_Node_Str"+ buff.toString());
  boolean hasComment=method.commentText() != null && method.commentText().trim().length() != 0;
  writer.println("String_Node_Str" + formatText(method.commentText()) + "String_Node_Str");
  ParamTag[] paramTags=method.paramTags();
  ThrowsTag[] throwsTags=method.throwsTags();
  boolean hasThrowsTag=throwsTags != null && throwsTags.length > 0;
  if (paramTags.length != params.length) {
    if (hasComment && !method.commentText().startsWith("String_Node_Str")) {
      addError("String_Node_Str" + getLink(clazz,method.position().line()) + "String_Node_Str"+ name+ "String_Node_Str"+ paramTags.length+ "String_Node_Str"+ params.length);
    }
  }
  for (int j=0; j < paramTags.length; j++) {
    String paramName=paramTags[j].parameterName();
    String comment=paramTags[j].parameterComment();
    if (comment.trim().length() == 0) {
      addError("String_Node_Str" + getLink(clazz,method.position().line()) + "String_Node_Str"+ name+ "String_Node_Str"+ paramName);
    }
    String p=paramName + "String_Node_Str" + comment;
    if (j == 0) {
      writer.println("String_Node_Str");
    }
    writer.println("String_Node_Str" + p + "String_Node_Str");
  }
  Tag[] returnTags=method.tags("String_Node_Str");
  Type returnType=getReturnType(method);
  if (returnTags != null && returnTags.length > 0) {
    writer.println("String_Node_Str");
    String returnComment=returnTags[0].text();
    if (returnComment.trim().length() == 0) {
      addError("String_Node_Str" + getLink(clazz,method.position().line()) + "String_Node_Str"+ name);
    }
    writer.println("String_Node_Str" + returnComment + "String_Node_Str");
  }
 else   if (returnType != null && !returnType.toString().equals("String_Node_Str")) {
    if (hasComment && !method.commentText().startsWith("String_Node_Str") && !hasThrowsTag) {
      addError("String_Node_Str" + getLink(clazz,method.position().line()) + "String_Node_Str"+ name+ "String_Node_Str"+ getReturnType(method));
    }
  }
  if (hasThrowsTag) {
    writer.println("String_Node_Str");
    for (    ThrowsTag tag : throwsTags) {
      String p=tag.exceptionName();
      String c=tag.exceptionComment();
      if (c.length() > 0) {
        p+="String_Node_Str" + c;
      }
      writer.println("String_Node_Str" + p + "String_Node_Str");
    }
  }
}