} finally { context.exitScope(); }
	private void executeCell( IRowContent rowContent, CellDesign cell,			IContentEmitter emitter )	{		ICellContent cellContent = report.createCellContent( );		assert ( cellContent instanceof CellContent );		context.pushContent( cellContent );		initializeContent( rowContent, cell, cellContent );		cellContent.setColumn( cell.getColumn( ) );		cellContent.setColSpan( cell.getColSpan( ) );		cellContent.setRowSpan( cell.getRowSpan( ) );		processAction( cell, cellContent );		processBookmark( cell, cellContent );		processStyle( cell, cellContent );		processVisibility( cell, cellContent );		if ( context.isInFactory( ) )		{			try			{				context.newScope( cellContent );				//TODO: Get datarow from somewhere				CellScriptExecutor.handleOnCreate( ( CellContent ) cellContent,						null, context );			}			finally			{				context.exitScope();			}		}		if ( emitter != null )		{			emitter.startCell( cellContent );		}		for ( int m = 0; m < cell.getContentCount( ); m++ )		{			ReportItemDesign ri = cell.getContent( m );			if ( ri != null )			{				ri.accept( this.visitor, emitter );			}		}		if ( emitter != null )		{			emitter.endCell( cellContent );		}		context.popContent( );	}