diff --git a/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java b/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java
index ee2627a482..e478aca417 100644
--- a/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java
+++ b/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java
@@ -18,6 +18,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
 import mage.filter.predicate.permanent.TokenPredicate;
 import mage.game.Game;
 import mage.game.events.GameEvent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 import mage.watchers.common.CastFromHandWatcher;
 
@@ -147,7 +148,7 @@ class ChainerNightmareAdeptWatcher extends Watcher {
                 source.getSourceId(), source.getSourceObjectZoneChangeCounter(), game
         );
         morMap.computeIfAbsent(mor, m -> new HashMap<>())
-                .compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+                .compute(source.getControllerId(), CardUtil::setOrIncrementValue);
     }
 }
 
diff --git a/Mage.Sets/src/mage/cards/c/ChromeReplicator.java b/Mage.Sets/src/mage/cards/c/ChromeReplicator.java
index cc05f6e7bd..3bfecae7b0 100644
--- a/Mage.Sets/src/mage/cards/c/ChromeReplicator.java
+++ b/Mage.Sets/src/mage/cards/c/ChromeReplicator.java
@@ -17,6 +17,7 @@ import mage.filter.predicate.Predicates;
 import mage.filter.predicate.permanent.TokenPredicate;
 import mage.game.Game;
 import mage.game.permanent.token.Construct4Token;
+import mage.util.CardUtil;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -75,6 +76,6 @@ enum ChromeReplicatorCondition implements Condition {
                 .map(MageObject::getName)
                 .filter(Objects::nonNull)
                 .filter(s -> !s.isEmpty())
-                .anyMatch(s -> nameMap.compute(s, (x, i) -> i == null ? 1 : Integer.sum(i, 1)) >= 2);
+                .anyMatch(s -> nameMap.compute(s, CardUtil::setOrIncrementValue) >= 2);
     }
 }
diff --git a/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java b/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java
index 40b2188487..53c5deacce 100644
--- a/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java
+++ b/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java
@@ -16,6 +16,7 @@ import mage.players.Player;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetCardInLibrary;
 import mage.target.common.TargetControlledPermanent;
+import mage.util.CardUtil;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -115,7 +116,7 @@ class ClarionUltimatumTarget extends TargetCardInLibrary {
     }
 
     private void populateNameMap(Set<String> names) {
-        names.stream().forEach(name -> this.nameMap.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
+        names.stream().forEach(name -> this.nameMap.compute(name, CardUtil::setOrIncrementValue));
     }
 
     @Override
@@ -133,7 +134,7 @@ class ClarionUltimatumTarget extends TargetCardInLibrary {
                 .map(game::getCard)
                 .filter(Objects::nonNull)
                 .map(MageObject::getName)
-                .forEach(name -> alreadyChosen.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
+                .forEach(name -> alreadyChosen.compute(name, CardUtil::setOrIncrementValue));
         return nameMap.getOrDefault(card.getName(), 0)
                 > alreadyChosen.getOrDefault(card.getName(), 0);
     }
diff --git a/Mage.Sets/src/mage/cards/c/ConfoundingConundrum.java b/Mage.Sets/src/mage/cards/c/ConfoundingConundrum.java
index 3747315305..f393c1e6cd 100644
--- a/Mage.Sets/src/mage/cards/c/ConfoundingConundrum.java
+++ b/Mage.Sets/src/mage/cards/c/ConfoundingConundrum.java
@@ -19,6 +19,7 @@ import mage.game.events.GameEvent;
 import mage.game.permanent.Permanent;
 import mage.players.Player;
 import mage.target.TargetPermanent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -128,7 +129,7 @@ class ConfoundingConundrumWatcher extends Watcher {
         }
         Permanent permanent = game.getPermanent(event.getTargetId());
         if (permanent != null && permanent.isLand(game)) {
-            playerMap.compute(permanent.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(permanent.getControllerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java b/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java
index 745f8fd3eb..8e36d81518 100644
--- a/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java
+++ b/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java
@@ -126,7 +126,7 @@ class DargoTheShipwreckerWatcher extends Watcher {
         }
         Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
         if (permanent != null && (permanent.isCreature(game) || permanent.isArtifact(game))) {
-            sacMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            sacMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/d/DoublingChant.java b/Mage.Sets/src/mage/cards/d/DoublingChant.java
index 1b12baf233..9607085e06 100644
--- a/Mage.Sets/src/mage/cards/d/DoublingChant.java
+++ b/Mage.Sets/src/mage/cards/d/DoublingChant.java
@@ -15,6 +15,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
 import mage.game.Game;
 import mage.players.Player;
 import mage.target.common.TargetCardInLibrary;
+import mage.util.CardUtil;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -109,7 +110,7 @@ class DoublingChantTarget extends TargetCardInLibrary {
     }
 
     private void populateNameMap(Set<String> names) {
-        names.stream().forEach(name -> this.nameMap.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
+        names.stream().forEach(name -> this.nameMap.compute(name, CardUtil::setOrIncrementValue));
     }
 
     @Override
@@ -127,7 +128,7 @@ class DoublingChantTarget extends TargetCardInLibrary {
                 .map(game::getCard)
                 .filter(Objects::nonNull)
                 .map(MageObject::getName)
-                .forEach(name -> alreadyChosen.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
+                .forEach(name -> alreadyChosen.compute(name, CardUtil::setOrIncrementValue));
         return nameMap.getOrDefault(card.getName(), 0)
                 > alreadyChosen.getOrDefault(card.getName(), 0);
     }
diff --git a/Mage.Sets/src/mage/cards/e/EmergentSequence.java b/Mage.Sets/src/mage/cards/e/EmergentSequence.java
index 6d24719b88..a4016017b4 100644
--- a/Mage.Sets/src/mage/cards/e/EmergentSequence.java
+++ b/Mage.Sets/src/mage/cards/e/EmergentSequence.java
@@ -18,6 +18,7 @@ import mage.game.permanent.token.FractalToken;
 import mage.players.Player;
 import mage.target.common.TargetCardInLibrary;
 import mage.target.targetpointer.FixedTarget;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -114,7 +115,7 @@ class EmergentSequenceWatcher extends Watcher {
     public void watch(GameEvent event, Game game) {
         if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD
                 && ((EntersTheBattlefieldEvent) event).getTarget().isLand(game)) {
-            playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java b/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java
index 3a018582a8..ca7194ecd0 100644
--- a/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java
+++ b/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java
@@ -17,6 +17,7 @@ import mage.game.Controllable;
 import mage.game.Game;
 import mage.game.permanent.token.SalamnderWarriorToken;
 import mage.game.permanent.token.Token;
+import mage.util.CardUtil;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -95,7 +96,7 @@ class GorMuldrakAmphinologistEffect extends OneShotEffect {
                 ).stream()
                 .filter(Objects::nonNull)
                 .map(Controllable::getControllerId)
-                .forEach(uuid -> creatureMap.compute(uuid, (u, i) -> i == null ? 1 : Integer.sum(i, 1)));
+                .forEach(uuid -> creatureMap.compute(uuid, CardUtil::setOrIncrementValue));
         int minValue = creatureMap.values().stream().mapToInt(x -> x).min().orElse(0);
         minValue = Math.max(minValue, 0);
         Token token = new SalamnderWarriorToken();
diff --git a/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java b/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java
index eb9764ca01..0fa4e6d4c0 100644
--- a/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java
+++ b/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java
@@ -27,6 +27,7 @@ import mage.game.permanent.PermanentToken;
 import mage.game.permanent.token.FoodToken;
 import mage.target.common.TargetControlledPermanent;
 import mage.target.common.TargetCreaturePermanent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -118,7 +119,7 @@ class GyomeMasterChefWatcher extends Watcher {
         if (permanent == null || permanent instanceof PermanentToken || !permanent.isCreature(game)) {
             return;
         }
-        playerMap.compute(event.getPlayerId(), (u, i) -> i != null ? Integer.sum(i, 1) : 1);
+        playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
     }
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/h/HawkinsNationalLaboratory.java b/Mage.Sets/src/mage/cards/h/HawkinsNationalLaboratory.java
index 614a9b2263..caa4a6ecc6 100644
--- a/Mage.Sets/src/mage/cards/h/HawkinsNationalLaboratory.java
+++ b/Mage.Sets/src/mage/cards/h/HawkinsNationalLaboratory.java
@@ -16,6 +16,7 @@ import mage.constants.*;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.permanent.Permanent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -90,7 +91,7 @@ class HawkinsNationalLaboratoryWatcher extends Watcher {
         if (permanent == null || !permanent.hasSubtype(SubType.CLUE, game)) {
             return;
         }
-        playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+        playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
     }
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/h/HintOfInsanity.java b/Mage.Sets/src/mage/cards/h/HintOfInsanity.java
index e236b81163..5d8af4de02 100644
--- a/Mage.Sets/src/mage/cards/h/HintOfInsanity.java
+++ b/Mage.Sets/src/mage/cards/h/HintOfInsanity.java
@@ -12,6 +12,7 @@ import mage.constants.Outcome;
 import mage.game.Game;
 import mage.players.Player;
 import mage.target.TargetPlayer;
+import mage.util.CardUtil;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -70,7 +71,7 @@ class HintOfInsanityEffect extends OneShotEffect {
                 .getCards(game)
                 .stream()
                 .map(MageObject::getName)
-                .forEach(s -> nameCounts.compute(s, (u, i) -> i == null ? 1 : Integer.sum(i, 1)));
+                .forEach(s -> nameCounts.compute(s, CardUtil::setOrIncrementValue));
         Cards cards = new CardsImpl(
                 player.getHand()
                         .getCards(game)
diff --git a/Mage.Sets/src/mage/cards/i/IdolOfEndurance.java b/Mage.Sets/src/mage/cards/i/IdolOfEndurance.java
index e23c609a88..8bf959f357 100644
--- a/Mage.Sets/src/mage/cards/i/IdolOfEndurance.java
+++ b/Mage.Sets/src/mage/cards/i/IdolOfEndurance.java
@@ -19,6 +19,7 @@ import mage.game.events.GameEvent;
 import mage.game.events.ZoneChangeEvent;
 import mage.game.permanent.Permanent;
 import mage.players.Player;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.*;
@@ -275,6 +276,6 @@ class IdolOfEnduranceWatcher extends Watcher {
                 source.getSourceId(), source.getSourceObjectZoneChangeCounter(), game
         );
         morMap.computeIfAbsent(mor, m -> new HashMap<>())
-                .compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+                .compute(source.getControllerId(), CardUtil::setOrIncrementValue);
     }
 }
diff --git a/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java b/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java
index dbbe8f22a4..3bdf237636 100644
--- a/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java
+++ b/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java
@@ -149,7 +149,7 @@ class InvasionOfTheGiantsWatcher extends Watcher {
         }
         Spell spell = game.getSpell(event.getSourceId());
         if (spell != null && spell.hasSubtype(SubType.GIANT, game)) {
-            playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/i/IridescentHornbeetle.java b/Mage.Sets/src/mage/cards/i/IridescentHornbeetle.java
index 7f5cfa5852..bc0f62c5ee 100644
--- a/Mage.Sets/src/mage/cards/i/IridescentHornbeetle.java
+++ b/Mage.Sets/src/mage/cards/i/IridescentHornbeetle.java
@@ -16,6 +16,7 @@ import mage.counters.CounterType;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.permanent.token.InsectToken;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -92,7 +93,7 @@ class IridescentHornbeetleWatcher extends Watcher {
                 || !event.getData().equals(CounterType.P1P1.getName())) {
             return;
         }
-        playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+        playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
     }
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/k/KazaRoilChaser.java b/Mage.Sets/src/mage/cards/k/KazaRoilChaser.java
index 1beb5ca09d..af14498a2c 100644
--- a/Mage.Sets/src/mage/cards/k/KazaRoilChaser.java
+++ b/Mage.Sets/src/mage/cards/k/KazaRoilChaser.java
@@ -141,7 +141,7 @@ class KazaRoilChaserWatcher extends Watcher {
         }
         Spell spell = game.getSpell(event.getSourceId());
         if (spell != null && spell.isInstantOrSorcery(game)) {
-            playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/l/LilianasStandardBearer.java b/Mage.Sets/src/mage/cards/l/LilianasStandardBearer.java
index af65fc92e7..f505ea1140 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasStandardBearer.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasStandardBearer.java
@@ -15,6 +15,7 @@ import mage.constants.WatcherScope;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.events.ZoneChangeEvent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -89,7 +90,7 @@ class LilianasStandardBearerWatcher extends Watcher {
         }
         ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
         if (zEvent.isDiesEvent() && zEvent.getTarget().isCreature(game)) {
-            playerMap.compute(zEvent.getTarget().getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(zEvent.getTarget().getControllerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/m/MaelstromMuse.java b/Mage.Sets/src/mage/cards/m/MaelstromMuse.java
index cdb2b60064..fbff34b067 100644
--- a/Mage.Sets/src/mage/cards/m/MaelstromMuse.java
+++ b/Mage.Sets/src/mage/cards/m/MaelstromMuse.java
@@ -126,7 +126,7 @@ class MaelstromMuseWatcher extends Watcher {
         }
         Spell spell = game.getSpell(event.getSourceId());
         if (spell != null && spell.isInstantOrSorcery(game)) {
-            playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/r/RionyaFireDancer.java b/Mage.Sets/src/mage/cards/r/RionyaFireDancer.java
index 4d0ab71efc..65f3990d29 100644
--- a/Mage.Sets/src/mage/cards/r/RionyaFireDancer.java
+++ b/Mage.Sets/src/mage/cards/r/RionyaFireDancer.java
@@ -16,6 +16,7 @@ import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.stack.Spell;
 import mage.target.TargetPermanent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -121,7 +122,7 @@ class RionyaFireDancerWatcher extends Watcher {
         }
         Spell spell = game.getSpell(event.getTargetId());
         if (spell != null && spell.isInstantOrSorcery(game)) {
-            playerMap.compute(spell.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(spell.getControllerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/s/SerpentsSoulJar.java b/Mage.Sets/src/mage/cards/s/SerpentsSoulJar.java
index e5a3f7c327..53de04b455 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentsSoulJar.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentsSoulJar.java
@@ -18,6 +18,7 @@ import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.permanent.Permanent;
 import mage.players.Player;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.*;
@@ -185,6 +186,6 @@ class SerpentsSoulJarWatcher extends Watcher {
                 source.getSourceId(), source.getSourceObjectZoneChangeCounter(), game
         );
         morMap.computeIfAbsent(mor, m -> new HashMap<>())
-                .compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+                .compute(source.getControllerId(), CardUtil::setOrIncrementValue);
     }
 }
diff --git a/Mage.Sets/src/mage/cards/s/SorcererClass.java b/Mage.Sets/src/mage/cards/s/SorcererClass.java
index 54ce5a2226..98ae21ab21 100644
--- a/Mage.Sets/src/mage/cards/s/SorcererClass.java
+++ b/Mage.Sets/src/mage/cards/s/SorcererClass.java
@@ -27,6 +27,7 @@ import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.stack.Spell;
 import mage.players.Player;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -182,7 +183,7 @@ class SorcererClassWatcher extends Watcher {
         if (spell == null || !spell.isInstantOrSorcery(game)) {
             return;
         }
-        spellMap.compute(spell.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+        spellMap.compute(spell.getControllerId(), CardUtil::setOrIncrementValue);
     }
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/t/ThalisseReverentMedium.java b/Mage.Sets/src/mage/cards/t/ThalisseReverentMedium.java
index 8b984e5734..b45ef79bbb 100644
--- a/Mage.Sets/src/mage/cards/t/ThalisseReverentMedium.java
+++ b/Mage.Sets/src/mage/cards/t/ThalisseReverentMedium.java
@@ -14,6 +14,7 @@ import mage.constants.*;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.permanent.token.SpiritWhiteToken;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -93,7 +94,7 @@ class ThalisseReverentMediumWatcher extends Watcher {
         if (event.getType() != GameEvent.EventType.CREATED_TOKEN) {
             return;
         }
-        tokenMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+        tokenMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
     }
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/t/TheSpaceFamilyGoblinson.java b/Mage.Sets/src/mage/cards/t/TheSpaceFamilyGoblinson.java
index 3a20bc148f..dc9b65d9aa 100644
--- a/Mage.Sets/src/mage/cards/t/TheSpaceFamilyGoblinson.java
+++ b/Mage.Sets/src/mage/cards/t/TheSpaceFamilyGoblinson.java
@@ -19,6 +19,7 @@ import mage.constants.*;
 import mage.counters.CounterType;
 import mage.game.Game;
 import mage.game.events.GameEvent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -103,7 +104,7 @@ class TheSpaceFamilyGoblinsonWatcher extends Watcher {
     @Override
     public void watch(GameEvent event, Game game) {
         if (event.getType() == GameEvent.EventType.DIE_ROLLED) {
-            map.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            map.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }
 
diff --git a/Mage.Sets/src/mage/cards/v/ValiantRescuer.java b/Mage.Sets/src/mage/cards/v/ValiantRescuer.java
index 52df6596b7..3014e4aad7 100644
--- a/Mage.Sets/src/mage/cards/v/ValiantRescuer.java
+++ b/Mage.Sets/src/mage/cards/v/ValiantRescuer.java
@@ -16,6 +16,7 @@ import mage.game.events.GameEvent;
 import mage.game.permanent.token.HumanSoldierToken;
 import mage.game.stack.StackAbility;
 import mage.game.stack.StackObject;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -114,7 +115,7 @@ class ValiantRescuerWatcher extends Watcher {
                 && item.getStackAbility() instanceof CyclingAbility) {
             playerMap.computeIfAbsent(event.getPlayerId(), u -> new HashMap<>());
             playerMap.get(event.getPlayerId()).compute(
-                    event.getSourceId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1)
+                    event.getSourceId(), CardUtil::setOrIncrementValue
             );
         }
     }
diff --git a/Mage.Sets/src/mage/cards/w/WhispersteelDagger.java b/Mage.Sets/src/mage/cards/w/WhispersteelDagger.java
index ee3e33bb52..7937707bcd 100644
--- a/Mage.Sets/src/mage/cards/w/WhispersteelDagger.java
+++ b/Mage.Sets/src/mage/cards/w/WhispersteelDagger.java
@@ -15,6 +15,7 @@ import mage.constants.*;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.players.ManaPoolItem;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -189,6 +190,6 @@ class WhispersteelDaggerWatcher extends Watcher {
         );
         morMap.computeIfAbsent(mor, m -> new HashMap<>())
                 .computeIfAbsent(ownerId, m -> new HashMap<>())
-                .compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+                .compute(source.getControllerId(), CardUtil::setOrIncrementValue);
     }
 }
diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/GreatestSharedCreatureTypeCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/GreatestSharedCreatureTypeCount.java
index 3c830fc666..493df46a47 100644
--- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/GreatestSharedCreatureTypeCount.java
+++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/GreatestSharedCreatureTypeCount.java
@@ -10,6 +10,7 @@ import mage.constants.SubTypeSet;
 import mage.filter.StaticFilters;
 import mage.game.Game;
 import mage.game.permanent.Permanent;
+import mage.util.CardUtil;
 
 import java.util.*;
 
@@ -43,7 +44,7 @@ public enum GreatestSharedCreatureTypeCount implements DynamicValue {
                 .map(permanent -> permanent.getSubtype(game))
                 .flatMap(Collection::stream)
                 .filter(subType -> subType.getSubTypeSet() == SubTypeSet.CreatureType)
-                .forEach(subType -> typeMap.compute(subType, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
+                .forEach(subType -> typeMap.compute(subType, CardUtil::setOrIncrementValue));
         return changelings
                 + typeMap
                 .values()
diff --git a/Mage/src/main/java/mage/choices/VoteHandler.java b/Mage/src/main/java/mage/choices/VoteHandler.java
index ba561d770f..dffd2f41f5 100644
--- a/Mage/src/main/java/mage/choices/VoteHandler.java
+++ b/Mage/src/main/java/mage/choices/VoteHandler.java
@@ -6,6 +6,7 @@ import mage.game.Game;
 import mage.game.events.VoteEvent;
 import mage.game.events.VotedEvent;
 import mage.players.Player;
+import mage.util.CardUtil;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -86,7 +87,7 @@ public abstract class VoteHandler<T> {
                 .stream()
                 .flatMap(votesList -> votesList.getValue().stream())
                 .forEach(vote -> {
-                    totalVotes.compute(vote, (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+                    totalVotes.compute(vote, CardUtil::setOrIncrementValue);
                 });
 
         Set<T> winners = this.getMostVoted();
@@ -157,7 +158,7 @@ public abstract class VoteHandler<T> {
                 .values()
                 .stream()
                 .flatMap(Collection::stream)
-                .forEach(t -> map.compute(t, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
+                .forEach(t -> map.compute(t, CardUtil::setOrIncrementValue));
         int max = map.values().stream().mapToInt(x -> x).max().orElse(0);
         return map
                 .entrySet()
diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java
index d1bd3a5375..d997530266 100644
--- a/Mage/src/main/java/mage/util/CardUtil.java
+++ b/Mage/src/main/java/mage/util/CardUtil.java
@@ -1452,4 +1452,8 @@ public final class CardUtil {
         effect.apply(game, source);
         return true;
     }
+
+    public static <T> int setOrIncrementValue(T u, Integer i) {
+        return i == null ? 1 : Integer.sum(i, 1);
+    }
 }
diff --git a/Mage/src/main/java/mage/watchers/common/DiscardedCardWatcher.java b/Mage/src/main/java/mage/watchers/common/DiscardedCardWatcher.java
index a6483f6781..692295b655 100644
--- a/Mage/src/main/java/mage/watchers/common/DiscardedCardWatcher.java
+++ b/Mage/src/main/java/mage/watchers/common/DiscardedCardWatcher.java
@@ -3,6 +3,7 @@ package mage.watchers.common;
 import mage.constants.WatcherScope;
 import mage.game.Game;
 import mage.game.events.GameEvent;
+import mage.util.CardUtil;
 import mage.watchers.Watcher;
 
 import java.util.HashMap;
@@ -23,7 +24,7 @@ public class DiscardedCardWatcher extends Watcher {
     @Override
     public void watch(GameEvent event, Game game) {
         if (event.getType() == GameEvent.EventType.DISCARDED_CARD) {
-            playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
+            playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
         }
     }