public void updateRace(Integer lane, HoleType hole) {
        assertPositiveInteger(lane, Race.class.getSimpleName() + " - updateRace: lane is mandatory!");
        if (hole == null) {
            throw new IllegalArgumentException("Setting the hole is mandatory!");
        }
        if (!holeTypes.contains(hole)) {
            throw new IllegalArgumentException("The Hole " + hole + " is not specified for this race!");
        }
        if (lanesStatus == null || lanesStatus.isEmpty()) {
            throw new IllegalStateException("The race is not initialized!");
        }
        if (lanesStatus.get(lane) == null) {
            System.out.println("WARN: Could not find a horse on lane " + lane + "!");
        } else if (!isRaceOver()) {
            lanesStatus.get(lane).updateYards(hole.getYards());
            if (lanesStatus.get(lane).getYards() >= length) {
                raceOver = true;
            }
        }
    }