} finally { context.exitScope(); }
	private void executeRow( int rowId, ITableBandContent body, RowDesign row,			IContentEmitter emitter )	{		IRowContent rowContent = report.createRowContent( );		assert ( rowContent instanceof RowContent );		context.pushContent( rowContent );		initializeContent( body, row, rowContent );		// rowContent.setRowId(rowId);		processAction( row, rowContent );		processBookmark( row, rowContent );		processStyle( row, rowContent );		processVisibility( row, rowContent );		if ( context.isInFactory( ) )		{			try			{				context.newScope( rowContent );				// TODO: Get datarow from somewhere				DetailRowScriptExecutor.handleOnCreate( ( RowContent ) rowContent,						null, context );			}			finally			{				context.exitScope();			}		}		if ( emitter != null )		{			emitter.startRow( rowContent );		}		for ( int j = 0; j < row.getCellCount( ); j++ )		{			CellDesign cell = row.getCell( j );			if ( cell != null )			{				executeCell( rowContent, cell, emitter );			}		}		if ( emitter != null )		{			emitter.endRow( rowContent );		}		context.popContent( );	}