public void visitEnd() {
		if (!subroutineHeads.isEmpty()) {
			markSubroutines();
			if (LOGGING) {
				log(mainSubroutine.toString());
				Iterator it = subroutineHeads.values().iterator();
				while (it.hasNext()) {
					Subroutine sub = (Subroutine) it.next();
					log(sub.toString());
				}
			}
			emitCode();
		}

		// Forward the translate opcodes on if appropriate:
		if (mv != null) {
			accept(mv);
		}
	}