MultiPassExpressionCompiler helper = new MultiPassExpressionCompiler( rsPopulator, baseQuery, dataset.getScriptScope( ), availabeAggrList );
MultiPassExpressionCompiler helper = this.getMultiPassCompilerHelper( );
	public void evaluateMultiPassExprOnGroup( Object[] exprArray,			int[] currentGroupLevel, int arrayType ) throws DataException	{		assert exprArray != null;		IBaseExpression baseExpression = null;		Context context = Context.enter( );		MultiPassExpressionCompiler helper = new MultiPassExpressionCompiler( rsPopulator,				baseQuery,				dataset.getScriptScope( ),				availabeAggrList );		helper.setDataSetMode( isDataSetMode );				try		{			ExpressionInfo exprInfo;			for ( int i = 0; i < exprArray.length; i++ )			{				baseExpression = (IBaseExpression) exprArray[i];				if ( baseExpression instanceof IConditionalExpression )				{					compileConditionalExpression( (IConditionalExpression) baseExpression,							helper,							rsPopulator,							arrayType,							currentGroupLevel[i],							context );				}				else if ( baseExpression instanceof IScriptExpression )				{					exprInfo = new ExpressionInfo( (IScriptExpression) baseExpression,							arrayType,							currentGroupLevel[i],							true );					baseExpression.setHandle( helper.compileExpression( exprInfo,							context ) );				}			}		}		finally		{			Context.exit( );		}		calculate( helper );	}