assert pop.getNumPop() == 1: "Need to update code here to deal with multiple pop";
	public Object visitAssignmentExpression(JAssignmentExpression oldself,						JExpression oldleft,						JExpression oldright) 	{	    //a little optimization, use the pointer version of the 	    //structure's pop in struct.h to avoid copying			    if (oldright instanceof JCastExpression && 		(((JCastExpression)oldright).getExpr() instanceof SIRPopExpression)) {		SIRPopExpression pop = (SIRPopExpression)((JCastExpression)oldright).getExpr();	    		if (pop.getType().isClassType()) {		    JExpression left = (JExpression)oldleft.accept(this);				    JExpression[] arg = 			{left};				    return new JMethodCallExpression(null, new JThisExpression(null), 						     RawExecutionCode.structReceiveMethodPrefix + 						     pop.getType(),						     arg);		} 		if (pop.getType().isArrayType()) {		    return null;		}	    }	    //otherwise do the normal thing	    JExpression self = (JExpression)super.visitAssignmentExpression(oldself,									    oldleft, 									    oldright);	    return self;	}