public boolean checkIfPossible(final Game game) {
		// As an early sanity check, it's completely impossible if the
		// transition doesn't exist in the current level or if the player's not
		// in a level at all.
		final Transition transition = getTransition(game);
		if (transition == null) {
			return false;
		}

		// It's only possible for the player to take the transition if the
		// player is on the same road. Otherwise, the player needs to take some
		// other transition first.
		final Player player = game.getPlayer();
		final Position playerPos = player.getPos();
		boolean possible = (transition.getSrcPos().getRoadIndex() == playerPos
				.getRoadIndex());

		if (transition instanceof Exit) {
			// Additionally, the player can only exit a level if the player has
			// Yoshi or if the player just entered and is still on the pipe.
			// TODO Add something to actually check when Pokey comes up instead
			// of assuming that the player won't ever be on the pipe without
			// Yoshi.
			possible = possible
					&& (player.hasYoshi() || transition.isActiveAt(playerPos));
		} else if (transition instanceof Entrance) {
			// Also, the player can only enter a level that hasn't already been
			// completed, and the player can only exit the floor when all of the
			// levels have been completed.
			final Entrance entrance = (Entrance) transition;
			final Floor floor = game.getFloor(player.getFloor());
			if (entrance.isFloorExit()) {
				possible = possible && floor.isCompleted();
			} else {
				possible = possible
						&& !floor.getLevel(entrance.getLevelId()).isCompleted();
			}
		}
		return possible;
	}