if ( refNode.getType( ) == Token.GETPROP
if ( !str.equals( ROW_INDICATOR ) ) { if ( rowColumn != null && rowColumn.getNext( ) != null ) processChild( rowColumn.getNext( ), tree, columnExprList ); return; } if ( ( refNode.getType( ) == Token.GETPROP || refNode.getType( ) == Token.SETPROP )
	private void compileSimpleColumnRefExpr( Node refNode, Node rowName,			List columnExprList )	{		String str = rowName.getString( );		assert ( str != null );		if ( !str.equals( ROW_INDICATOR ) )			return;		Node rowColumn = rowName.getNext( );		assert ( rowColumn != null );		if ( refNode.getType( ) == Token.GETPROP				&& rowColumn.getType( ) == Token.STRING )		{			int outer_count = 0;			if ( "__rownum".equals( rowColumn.getString( ) )					|| "0".equals( rowColumn.getString( ) ) )				return;			if ( "_outer".equals( rowColumn.getString( ) ) )			{				outer_count++;				Node outer_Node = refNode.getNext( );				Node before_Node = outer_Node;				while ( outer_Node != null						&& outer_Node.getString( ) != null						&&  "_outer".equals( outer_Node.getString( ) ) )				{					outer_count++;					before_Node = outer_Node;					outer_Node = outer_Node.getNext( );				}				ColumnBinding info = new ColumnBinding( before_Node.getString( ),						"",						outer_count );				columnExprList.add( info );				return;			}			ColumnBinding binding = new ColumnBinding( rowColumn.getString( ),					DATASETROW_INDICATOR							+ "[\"" + rowColumn.getString( ) + "\"]" );			columnExprList.add( binding );		}		if ( refNode.getType( ) == Token.GETELEM )		{			if ( rowColumn.getType( ) == Token.NUMBER )			{				if ( 0 == rowColumn.getDouble( ) )					return;				// columnExprList.add( DATASETROW_INDICATOR				// + "[" + (int) rowColumn.getDouble( ) + "]" );			}			else if ( rowColumn.getType( ) == Token.STRING )			{				if ( "_rownum".equals( rowColumn.getString( ) ) )					return;				ColumnBinding binding = new ColumnBinding( rowColumn.getString( ),						DATASETROW_INDICATOR								+ "[\"" + rowColumn.getString( ) + "\"]" );				columnExprList.add( binding );			}		}	}