Program: 158993
Project: 158993
Buggy source:
/** 
 * Retrieves all requirements that apply and creates a Map with blockers and attackers // Map<creature that can block, Set< all attackers the creature can block and force it to block the attacker>>
 * @param attackingPlayer - attacker
 * @param game 
 */
private void retrieveMustBlockAttackerRequirements(Player attackingPlayer,Game game){
  if (!game.getContinuousEffects().existRequirementEffects()) {
    return;
  }
  for (  Permanent possibleBlocker : game.getBattlefield().getActivePermanents(filterBlockers,attackingPlayer.getId(),game)) {
    for (    Map.Entry<RequirementEffect,HashSet<Ability>> requirementEntry : game.getContinuousEffects().getApplicableRequirementEffects(possibleBlocker,game).entrySet()) {
      if (requirementEntry.getKey().mustBlock(game)) {
        for (        Ability ability : requirementEntry.getValue()) {
          UUID attackingCreatureId=requirementEntry.getKey().mustBlockAttacker(ability,game);
          Player defender=game.getPlayer(possibleBlocker.getControllerId());
          if (attackingCreatureId != null && defender != null) {
            if (creatureMustBlockAttackers.containsKey(possibleBlocker.getId())) {
              creatureMustBlockAttackers.get(possibleBlocker.getId()).add(attackingCreatureId);
            }
 else {
              Set<UUID> forcingAttackers=new HashSet<>();
              forcingAttackers.add(attackingCreatureId);
              creatureMustBlockAttackers.put(possibleBlocker.getId(),forcingAttackers);
              defender.declareBlocker(defender.getId(),possibleBlocker.getId(),attackingCreatureId,game);
            }
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Retrieves all requirements that apply and creates a Map with blockers and attackers it contains only records if attackers can be retrieved // Map<creature that can block, Set< all attackers the creature can block and force it to block the attacker>>
 * @param attackingPlayer - attacker
 * @param game 
 */
private void retrieveMustBlockAttackerRequirements(Player attackingPlayer,Game game){
  if (!game.getContinuousEffects().existRequirementEffects()) {
    return;
  }
  for (  Permanent possibleBlocker : game.getBattlefield().getActivePermanents(filterBlockers,attackingPlayer.getId(),game)) {
    for (    Map.Entry<RequirementEffect,HashSet<Ability>> requirementEntry : game.getContinuousEffects().getApplicableRequirementEffects(possibleBlocker,game).entrySet()) {
      if (requirementEntry.getKey().mustBlock(game)) {
        for (        Ability ability : requirementEntry.getValue()) {
          UUID attackingCreatureId=requirementEntry.getKey().mustBlockAttacker(ability,game);
          Player defender=game.getPlayer(possibleBlocker.getControllerId());
          if (attackingCreatureId != null && defender != null) {
            if (creatureMustBlockAttackers.containsKey(possibleBlocker.getId())) {
              creatureMustBlockAttackers.get(possibleBlocker.getId()).add(attackingCreatureId);
            }
 else {
              Set<UUID> forcingAttackers=new HashSet<>();
              forcingAttackers.add(attackingCreatureId);
              creatureMustBlockAttackers.put(possibleBlocker.getId(),forcingAttackers);
              defender.declareBlocker(defender.getId(),possibleBlocker.getId(),attackingCreatureId,game);
            }
          }
        }
      }
    }
  }
}