@Override public WeaponJudgingResult judgeWinningWeapon(Weapon weaponOne, Weapon weaponTwo) { validateNumberOfWeaponsOrFail(); if (weaponOne.equals(weaponTwo)) { return WeaponJudgingResult.tie(); } else { int numWeapons = Weapon.values().length; int mod = (numWeapons + weaponOne.ordinal() - weaponTwo.ordinal()) % numWeapons; if (mod % 2 == 1) { return new WeaponJudgingResult(weaponOne); } else { return new WeaponJudgingResult(weaponTwo); } } }