public void visitReturnExprStmt(final ReturnExprStmt stmt) {
		if (CodeGenerator.DEBUG) {
			System.out.println("code for " + stmt);
		}

		stmt.visitChildren(this);

		genPostponed(stmt);

		final Type type = stmt.expr().type();

		// Stack should be empty after return

		if (type.isReference()) {
			method.addInstruction(Opcode.opcx_areturn);
			stackHeight = 0;
		} else if (type.isIntegral()) {
			method.addInstruction(Opcode.opcx_ireturn);
			stackHeight = 0;
		} else if (type.equals(Type.LONG)) {
			method.addInstruction(Opcode.opcx_lreturn);
			stackHeight = 0;
		} else if (type.equals(Type.FLOAT)) {
			method.addInstruction(Opcode.opcx_freturn);
			stackHeight = 0;
		} else if (type.equals(Type.DOUBLE)) {
			method.addInstruction(Opcode.opcx_dreturn);
			stackHeight = 0;
		}
	}