Program: 6534
Project: 6534
Buggy source:
@Override public void toString(StringBuffer buffer,int tabCount){
  prepare();
  if (comment != null) {
    comment.toString(buffer,tabCount);
    buffer.append(Cpp.newline);
  }
  if (null != base.getLibIncludes() && base.getLibIncludes().size() > 0) {
    for (    String include : base.getLibIncludes()) {
      buffer.append("String_Node_Str" + include + "String_Node_Str"+ Cpp.newline);
    }
    buffer.append(Cpp.newline);
  }
  if (null != base.beforeDirectives && base.beforeDirectives.size() > 0) {
    for (    CPreProcessorDirectiveImpl ppd : base.beforeDirectives) {
      ppd.toString(buffer,tabCount);
      buffer.append(Cpp.newline);
    }
    buffer.append(Cpp.newline);
  }
  if (null != this.cppNamespaces && this.cppNamespaces.size() > 0) {
    for (    String ns : this.cppNamespaces) {
      buffer.append("String_Node_Str" + ns + "String_Node_Str"+ Cpp.newline);
    }
    buffer.append(Cpp.newline);
  }
  if (null != this.base && null != this.base.getEnums() && base.getEnums().size() > 0) {
    for (    CEnum e : this.base.getEnums()) {
      buffer.append(e.toString() + Cpp.newline);
    }
  }
  if (null != this.base && null != this.base.getTypeDefs() && this.base.getTypeDefs().size() > 0) {
    for (    CTypeDef t : this.base.getTypeDefs()) {
      buffer.append(t.toString());
    }
    buffer.append(Cpp.newline);
  }
  if (null != this.base && null != this.base.structsUnions && this.base.structsUnions.size() > 0) {
    for (    CStructBaseImpl struct : this.base.structsUnions) {
      buffer.append(struct.toString());
      buffer.append(Cpp.newline + Cpp.newline);
    }
  }
  if (null != this.cppClasses && this.cppClasses.size() > 0) {
    for (    CppClass c : this.cppClasses) {
      buffer.append(c.toString());
    }
  }
  if (null != this.base && null != this.base.afterDirectives && this.base.afterDirectives.size() > 0) {
    for (    CPreProcessorDirectiveImpl ppd : this.base.afterDirectives) {
      ppd.toString(buffer,tabCount);
      buffer.append(Cpp.newline);
    }
  }
}

Fixed version (ground truth):
@Override public void toString(StringBuffer buffer,int tabCount){
  prepare();
  if (comment != null) {
    comment.toString(buffer,tabCount);
    buffer.append(Cpp.newline);
  }
  if (null != base.getLibIncludes() && base.getLibIncludes().size() > 0) {
    for (    String include : base.getLibIncludes()) {
      if (include.endsWith("String_Node_Str")) {
        buffer.append("String_Node_Str" + include + "String_Node_Str"+ Cpp.newline);
      }
 else {
        buffer.append("String_Node_Str" + include + "String_Node_Str"+ Cpp.newline);
      }
    }
    buffer.append(Cpp.newline);
  }
  if (null != base.beforeDirectives && base.beforeDirectives.size() > 0) {
    for (    CPreProcessorDirectiveImpl ppd : base.beforeDirectives) {
      ppd.toString(buffer,tabCount);
      buffer.append(Cpp.newline);
    }
    buffer.append(Cpp.newline);
  }
  if (null != this.cppNamespaces && this.cppNamespaces.size() > 0) {
    for (    String ns : this.cppNamespaces) {
      buffer.append("String_Node_Str" + ns + "String_Node_Str"+ Cpp.newline);
    }
    buffer.append(Cpp.newline);
  }
  if (null != this.base && null != this.base.getEnums() && base.getEnums().size() > 0) {
    for (    CEnum e : this.base.getEnums()) {
      buffer.append(e.toString() + Cpp.newline);
    }
  }
  if (null != this.base && null != this.base.getTypeDefs() && this.base.getTypeDefs().size() > 0) {
    for (    CTypeDef t : this.base.getTypeDefs()) {
      buffer.append(t.toString());
    }
    buffer.append(Cpp.newline);
  }
  if (null != this.base && null != this.base.structsUnions && this.base.structsUnions.size() > 0) {
    for (    CStructBaseImpl struct : this.base.structsUnions) {
      buffer.append(struct.toString());
      buffer.append(Cpp.newline + Cpp.newline);
    }
  }
  if (null != this.cppClasses && this.cppClasses.size() > 0) {
    for (    CppClass c : this.cppClasses) {
      buffer.append(c.toString());
    }
  }
  if (null != this.base && null != this.base.afterDirectives && this.base.afterDirectives.size() > 0) {
    for (    CPreProcessorDirectiveImpl ppd : this.base.afterDirectives) {
      ppd.toString(buffer,tabCount);
      buffer.append(Cpp.newline);
    }
  }
}