else { break; }
	public void evaluateMultiPassExprOnCmp( IComputedColumnsState iccState,			boolean useResultSetMeta ) throws DataException	{		assert ( iccState != null );		Context context = Context.enter( );		try		{			int exprType = COMPUTED_COLUMN_EXPR;			int currentGroupLevel = 0;			ExpressionInfo exprInfo;			MultiPassExpressionCompiler helper = this.getMultiPassCompilerHelper( );			helper.setDataSetMode( isDataSetMode );			for ( int i = 0; i < iccState.getCount( ); i++ )			{				if ( iccState.isValueAvailable( i ) )				{					helper.addAvailableCmpColumn( iccState.getName( i ) );				}			}			for ( int i = 0; i < iccState.getCount( ); i++ )			{				if ( !iccState.isValueAvailable( i ) )				{					IBaseExpression baseExpression = iccState.getExpression( i );					String name = iccState.getName( i );					if ( useResultSetMeta							&& name.matches( "\\Q_{$TEMP_GROUP_\\E\\d*\\Q$}_\\E" ) )					{						exprType = GROUP_COLUMN_EXPR;						// group level is 1-based						currentGroupLevel = getCurrentGroupLevel( name,								currentGroupLevel,								rsPopulator.getQuery( ) );						iccState.setValueAvailable( i );					}					if ( baseExpression instanceof IScriptExpression )					{						exprInfo = new ExpressionInfo( (IScriptExpression) baseExpression,								exprType,								currentGroupLevel,								useResultSetMeta );						baseExpression.setHandle( helper.compileExpression( exprInfo,								context ) );					}					else if ( baseExpression instanceof IConditionalExpression )					{						compileConditionalExpression( (IConditionalExpression) baseExpression,								helper,								rsPopulator,								exprType,								currentGroupLevel,								context );					}					// if the expression is group column , compile it then					// return, do not compile the next expression					if ( exprType == GROUP_COLUMN_EXPR )					{						return;					}					// if this computed column can be caculated, set value					// available.					if ( helper.getExpressionPassLevel( ) <= 1 )					{						iccState.setValueAvailable( i );					}				}			}			calculate( helper );		}		finally		{			Context.exit( );		}	}