package week13; public class Gearbox { private int gear = 1; public static class IllegalGearChangeException extends RuntimeException {} void changeGear(int newGear) { if(newGear == gear) return; if(newGear != -1 && (newGear < 1 || newGear > 5)) throw new IllegalArgumentException(); // newGear is now either -1 or 1..=5 var gearToCheck = newGear; if(gearToCheck == -1) gearToCheck++; if(Math.abs(gear - newGear) != 1) throw new IllegalGearChangeException(); gear = newGear; } }