Program: 72774
Project: 72774
Buggy source:
/** 
 * (condition1 ? value1 : (condition2 ? value2 : (... : dummyValue)))
 * @param expression
 * @param columnIndex
 * @param contentIndex
 * @param concatenation
 */
private void _parseExpression(String expression,int rowIndex){
  if (expression != "String_Node_Str") {
    String condition="String_Node_Str";
    String value="String_Node_Str";
    for (int i=1; i < getColumnCount(); i++) {
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1);
      expression.trim();
      int endOfCondition=expression.indexOf("String_Node_Str");
      if (expression.contains("String_Node_Str") && (expression.indexOf("String_Node_Str") < expression.indexOf("String_Node_Str"))) {
        endOfCondition=SCRTableHelper.indexOfMatchingCloseBracket(expression,expression.indexOf("String_Node_Str"));
      }
      condition=expression.substring(0,endOfCondition);
      condition=condition.trim();
      expression=expression.substring(endOfCondition);
      expression=expression.trim();
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1);
      expression=expression.trim();
      int endOfValue=expression.indexOf("String_Node_Str");
      if (expression.contains("String_Node_Str") && (expression.indexOf("String_Node_Str") < expression.indexOf("String_Node_Str"))) {
        endOfValue=SCRTableHelper.indexOfMatchingCloseBracket(expression,expression.indexOf("String_Node_Str"));
      }
      value=expression.substring(0,endOfValue);
      value=value.trim();
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1);
      expression=expression.trim();
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1);
      expression=expression.trim();
      int valueIndex=SCRTableHelper.getContentIndex(getRowCount() - 1,i,getColumnCount());
      int contentIndex=SCRTableHelper.getContentIndex(rowIndex,i,getColumnCount());
      _tableContent.add(valueIndex,value);
      _tableContent.remove(valueIndex + 1);
      _tableContent.add(contentIndex,condition);
      _tableContent.remove(contentIndex + 1);
    }
  }
}

Fixed version (ground truth):
/** 
 * (condition1 ? value1 : (condition2 ? value2 : (... : dummyValue)))
 * @param expression
 * @param columnIndex
 * @param contentIndex
 * @param concatenation
 */
private void _parseExpression(String expression,int rowIndex){
  if (!expression.equals("String_Node_Str")) {
    String condition="String_Node_Str";
    String value="String_Node_Str";
    for (int i=1; i < getColumnCount(); i++) {
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1).trim();
      int endOfCondition=expression.indexOf("String_Node_Str");
      if (expression.contains("String_Node_Str") && (expression.indexOf("String_Node_Str") < expression.indexOf("String_Node_Str"))) {
        endOfCondition=SCRTableHelper.indexOfMatchingCloseBracket(expression,expression.indexOf("String_Node_Str"));
      }
      condition=expression.substring(0,endOfCondition).trim();
      expression=expression.substring(endOfCondition).trim();
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1).trim();
      int endOfValue=expression.indexOf("String_Node_Str");
      if (expression.contains("String_Node_Str") && (expression.indexOf("String_Node_Str") < expression.indexOf("String_Node_Str"))) {
        endOfValue=SCRTableHelper.indexOfMatchingCloseBracket(expression,expression.indexOf("String_Node_Str"));
      }
      value=expression.substring(0,endOfValue).trim();
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1).trim();
      expression=expression.substring(expression.indexOf("String_Node_Str") + 1).trim();
      int valueIndex=SCRTableHelper.getContentIndex(getRowCount() - 1,i,getColumnCount());
      int contentIndex=SCRTableHelper.getContentIndex(rowIndex,i,getColumnCount());
      _tableContent.add(valueIndex,value);
      _tableContent.remove(valueIndex + 1);
      _tableContent.add(contentIndex,condition);
      _tableContent.remove(contentIndex + 1);
    }
  }
}