else {
else {*/
    public void visitPushExpression(SIRPushExpression self,                                    CType tapeType,                                    JExpression val)    {	//based on the type of the tape, call the approp function	if (ratematch) {	    if (tapeType.isClassType()) {	    }	    else if (tapeType.isClassType()) {		CType baseType = ((CArrayType)tapeType).getBaseType();		String dims[] = Util.makeString(((CArrayType)tapeType).getDims());				for (int i = 0; i < dims.length; i++) {		    print("for (" + ARRAY_INDEX + i + " = 0; " +			  ARRAY_INDEX + i + " < " + dims[i] + " ; " +			  ARRAY_INDEX + i + "++)\n");		}		print("{");		print(sendBuffer + "[(++" + sendBufferIndex + ") & " + SENDBITS + "]");		for (int i = 0; i < dims.length; i++) {		    print("[" + ARRAY_INDEX + i + "]");		}		print(" = (" + baseType + ") ");		val.accept(this);		print(");\n}\n");	    }	    else {		print(sendBuffer + "[(++" + sendBufferIndex + ") & " + SENDBITS + "] = ");		print("(" + tapeType + ")");		val.accept(this);		print(";\n");	    }	}	else {	    if (tapeType.isArrayType())		pushArray(self, tapeType, val);	    else if (tapeType.isClassType())		pushClass(self, tapeType, val);	    else 		pushScalar(self, tapeType, val);	}    }