Program: 96290
Project: 96290
Buggy source:
/** 
 * Verifies, if value exists in row.
 * @param row The row of the cell.
 * @param rowOperator the row header operator
 * @param value The cell text to verify.
 * @param operator The operation used to verify
 * @param searchType Determines where the search begins ("relative" or "absolute")
 * @param exists true if value exists, false otherwise
 * @throws StepExecutionException If the row or the column is invalid, or if the rendered text cannot be extracted.
 */
public void gdVerifyValueInRow(final String row,final String rowOperator,final String value,final String operator,final String searchType,boolean exists) throws StepExecutionException {
  final int implRow=getRowFromString(row,rowOperator);
  Boolean valueExists=new Boolean(true);
  if (implRow == -1) {
    valueExists=(Boolean)getEventThreadQueuer().invokeAndWait("String_Node_Str",new IRunnable(){
      public Object run() throws StepExecutionException {
        for (int k=getStartingColIndex(searchType); k < m_table.getColumnCount(); ++k) {
          String header=m_table.getColumnName(k);
          if (MatchUtil.getInstance().match(header,value,operator)) {
            return new Boolean(true);
          }
        }
        return new Boolean(false);
      }
    }
);
  }
 else {
    valueExists=(Boolean)getEventThreadQueuer().invokeAndWait("String_Node_Str",new IRunnable(){
      public Object run() throws StepExecutionException {
        for (int i=getStartingColIndex(searchType); i < m_table.getColumnCount(); ++i) {
          if (MatchUtil.getInstance().match(m_table.getValueAt(implRow,i).toString(),value,operator)) {
            return new Boolean(true);
          }
        }
        return new Boolean(false);
      }
    }
);
  }
  Verifier.equals(exists,valueExists.booleanValue());
}

Fixed version (ground truth):
/** 
 * Verifies, if value exists in row.
 * @param row The row of the cell.
 * @param rowOperator the row header operator
 * @param value The cell text to verify.
 * @param operator The operation used to verify
 * @param searchType Determines where the search begins ("relative" or "absolute")
 * @param exists true if value exists, false otherwise
 * @throws StepExecutionException If the row or the column is invalid, or if the rendered text cannot be extracted.
 */
public void gdVerifyValueInRow(final String row,final String rowOperator,final String value,final String operator,final String searchType,boolean exists) throws StepExecutionException {
  final int implRow=getRowFromString(row,rowOperator);
  Boolean valueExists=Boolean.TRUE;
  if (implRow == -1) {
    valueExists=(Boolean)getEventThreadQueuer().invokeAndWait("String_Node_Str",new IRunnable(){
      public Object run() throws StepExecutionException {
        for (int k=getStartingColIndex(searchType); k < m_table.getColumnCount(); ++k) {
          String header=m_table.getColumnName(k);
          if (MatchUtil.getInstance().match(header,value,operator)) {
            return Boolean.TRUE;
          }
        }
        return Boolean.FALSE;
      }
    }
);
  }
 else {
    valueExists=(Boolean)getEventThreadQueuer().invokeAndWait("String_Node_Str",new IRunnable(){
      public Object run() throws StepExecutionException {
        for (int i=getStartingColIndex(searchType); i < m_table.getColumnCount(); ++i) {
          if (MatchUtil.getInstance().match(getCellText(implRow,i),value,operator)) {
            return Boolean.TRUE;
          }
        }
        return Boolean.FALSE;
      }
    }
);
  }
  Verifier.equals(exists,valueExists.booleanValue());
}