Program: 12398
Project: 12398
Buggy source:
/** 
 * @param selectorJson
 * @param sortOrder
 * @param limit
 * @param skip
 * @param returnFields
 * @param readQuorum
 * @return
 */
private String getFindByIndexBody(String selectorJson,FindByIndexOptions options){
  StringBuilder rf=null;
  if (options.getFields().size() > 0) {
    rf=new StringBuilder("String_Node_Str");
    int i=0;
    for (    String s : options.getFields()) {
      if (i > 0) {
        rf.append("String_Node_Str");
      }
      rf.append("String_Node_Str").append(s).append("String_Node_Str");
      i++;
    }
    rf.append("String_Node_Str");
  }
  StringBuilder so=null;
  if (options.getSort().size() > 0) {
    so=new StringBuilder("String_Node_Str");
    int i=0;
    for (    IndexField idxfld : options.getSort()) {
      if (i > 0) {
        so.append("String_Node_Str");
      }
      so.append("String_Node_Str").append(idxfld.getName()).append("String_Node_Str").append(idxfld.getOrder()).append("String_Node_Str");
    }
    so.append("String_Node_Str");
  }
  boolean isObject=true;
  try {
    getGson().fromJson(selectorJson,JsonObject.class);
  }
 catch (  JsonParseException e) {
    isObject=false;
  }
  if (!isObject) {
    if (!(selectorJson.trim().startsWith("String_Node_Str"))) {
      throw new JsonParseException("String_Node_Str");
    }
  }
  StringBuilder finalbody=new StringBuilder();
  if (isObject) {
    finalbody.append("String_Node_Str").append(selectorJson);
  }
 else {
    finalbody.append("String_Node_Str" + selectorJson);
  }
  if (rf != null) {
    finalbody.append("String_Node_Str").append(rf.toString());
  }
  if (so != null) {
    finalbody.append("String_Node_Str").append(so.toString());
  }
  if (options.getLimit() != null) {
    finalbody.append("String_Node_Str").append("String_Node_Str").append(options.getLimit());
  }
  if (options.getSkip() != null) {
    finalbody.append("String_Node_Str").append("String_Node_Str").append(options.getSkip());
  }
  if (options.getReadQuorum() != null) {
    finalbody.append("String_Node_Str").append("String_Node_Str").append(options.getReadQuorum());
  }
  finalbody.append("String_Node_Str");
  return finalbody.toString();
}

Fixed version (ground truth):
/** 
 * @param selectorJson
 * @param sortOrder
 * @param limit
 * @param skip
 * @param returnFields
 * @param readQuorum
 * @return
 */
private String getFindByIndexBody(String selectorJson,FindByIndexOptions options){
  StringBuilder rf=null;
  if (options.getFields().size() > 0) {
    rf=new StringBuilder("String_Node_Str");
    int i=0;
    for (    String s : options.getFields()) {
      if (i > 0) {
        rf.append("String_Node_Str");
      }
      rf.append("String_Node_Str").append(s).append("String_Node_Str");
      i++;
    }
    rf.append("String_Node_Str");
  }
  StringBuilder so=null;
  if (options.getSort().size() > 0) {
    so=new StringBuilder("String_Node_Str");
    int i=0;
    for (    IndexField idxfld : options.getSort()) {
      if (i > 0) {
        so.append("String_Node_Str");
      }
      so.append("String_Node_Str").append(idxfld.getName()).append("String_Node_Str").append(idxfld.getOrder()).append("String_Node_Str");
    }
    so.append("String_Node_Str");
  }
  boolean isObject=true;
  try {
    client.getGson().fromJson(selectorJson,JsonObject.class);
  }
 catch (  JsonParseException e) {
    isObject=false;
  }
  if (!isObject) {
    if (!(selectorJson.trim().startsWith("String_Node_Str"))) {
      throw new JsonParseException("String_Node_Str");
    }
  }
  StringBuilder finalbody=new StringBuilder();
  if (isObject) {
    finalbody.append("String_Node_Str").append(selectorJson);
  }
 else {
    finalbody.append("String_Node_Str" + selectorJson);
  }
  if (rf != null) {
    finalbody.append("String_Node_Str").append(rf.toString());
  }
  if (so != null) {
    finalbody.append("String_Node_Str").append(so.toString());
  }
  if (options.getLimit() != null) {
    finalbody.append("String_Node_Str").append("String_Node_Str").append(options.getLimit());
  }
  if (options.getSkip() != null) {
    finalbody.append("String_Node_Str").append("String_Node_Str").append(options.getSkip());
  }
  if (options.getReadQuorum() != null) {
    finalbody.append("String_Node_Str").append("String_Node_Str").append(options.getReadQuorum());
  }
  finalbody.append("String_Node_Str");
  return finalbody.toString();
}