public boolean sameState(final Level level) {
		if (completed != level.completed) {
			return false;
		}

		if (kiosks.size() != level.kiosks.size()) {
			return false;
		}
		for (int i = 0; i < kiosks.size(); i++) {
			final Kiosk expectedKiosk = kiosks.get(i);
			if (expectedKiosk == null) {
				continue;
			}

			final Kiosk actualKiosk = level.kiosks.get(i);
			if (expectedKiosk.isCompleted() != actualKiosk.isCompleted()) {
				return false;
			}
		}

		if (koopas.size() != level.koopas.size()) {
			return false;
		}
		for (int i = 0; i < koopas.size(); i++) {
			final Koopa expectedKoopa = koopas.get(i);
			if (expectedKoopa == null) {
				continue;
			}

			final Koopa actualKoopa = level.koopas.get(i);
			if (!expectedKoopa.sameState(actualKoopa)) {
				return false;
			}
		}

		return true;
	}