Node child = exprNode.getFirstChild( ); assert ( child != null ); processChild( exprNode, child, tree, columnExprList );
processChild( exprNode, tree, columnExprList );
	private void CompiledExprFromTree( String expression, Context context,			ScriptOrFnNode tree, List columnExprList ) throws BirtException	{		if ( tree.getFirstChild( ) == tree.getLastChild( ) )		{			if ( tree.getFirstChild( ).getType( ) == Token.FUNCTION )			{				int index = getFunctionIndex( tree.getFirstChild( ).getString( ),						tree );				compileFunctionNode( tree.getFunctionNode( index ),						tree,						columnExprList );			}			else			{				// A single expression				if ( tree.getFirstChild( ).getType( ) != Token.EXPR_RESULT						&& tree.getFirstChild( ).getType( ) != Token.EXPR_VOID						&& tree.getFirstChild( ).getType( ) != Token.BLOCK )				{					// This should never happen?					throw new CoreException( pluginId,							ResourceConstants.INVALID_EXPRESSION );				}				Node exprNode = tree.getFirstChild( );				Node child = exprNode.getFirstChild( );				assert ( child != null );				processChild( exprNode, child, tree, columnExprList );			}		}		else		{			compileComplexExpr( tree, tree, columnExprList );		}	}