* @param ctx Context of the row to be modified or removed.
* @return The data object that the row represents.
*/
@Override
public Object registerDataProvider(final RowContext ctx) {
changeListeners.broadcast().dataChanged(new DataChangeEvent(this, ctx));
if (logger.isFine()) {
logger.fine("registerDataProvider master:{0}, accessor:{1}, index:{2}, nullCont:{3}, container:{4}, provider:{5}, type:{6}", new Object[] {
ctx.getMasterRowDataProvider(), ctx.getMasterAccessorName(), ctx.getCurrentRowIndex(),
ctx.isNullContainer(), ctx.getRowDataContainer(), ctx.getRowDataProvider(),
ctx.getRowDataProviderType()