receive.setTapeType(self.getType()); return receive;
        public Object visitPopExpression(SIRPopExpression oldSelf,                                         CType oldTapeType) {            // do the super            SIRPopExpression self = (SIRPopExpression) super                .visitPopExpression(oldSelf, oldTapeType);            // if this is a struct, use the struct's pop method, generated in            // struct.h            if (self.getType().isClassType()) {                return new JMethodCallExpression(null,                                                 new JThisExpression(null), "pop" + self.getType(),                                                 new JExpression[0]);            } else if (self.getType().isArrayType()) {                return null;            } else {                JMethodCallExpression receive = new JMethodCallExpression(null,                                                                          new JThisExpression(null),                                                                          RawExecutionCode.receiveMethod, new JExpression[0]);                receive.setTapeType(self.getType());                return receive;            }            /*             * else { if (self.getType().isFloatingPoint()) return new             * JLocalVariableExpression (null, new JGeneratedLocalVariable(null,             * 0, CStdType.Float, dynamic ? Util.CGNIFPVAR : Util.CSTIFPVAR,             * null)); else return new JLocalVariableExpression (null, new             * JGeneratedLocalVariable(null, 0, CStdType.Integer, dynamic ?             * Util.CGNIINTVAR : Util.CSTIINTVAR, null)); }             */        }