private void resolveConflicts() {
        ArrayList<HumanAgent> humans;
        ArrayList<ZombieAgent> zombies;
        ArrayList<AgentsGroup> cellGroups;
        EnvironmentCell cell;
        final int rows, columns;
        
        cellGroups = new ArrayList<>();
        rows       = this.configuration.getEnvironment().getNumberOfRows();
        columns    = this.configuration.getEnvironment().getNumberOfColumns();
        
        for(int row = 0; row < rows; row++) {
            for(int column = 0; column < columns; column++) {
                cellGroups.clear();
                        
                cell = this.environment[row][column];
                
                //Calculate the different groups in the cell (the groups are separated
                //by a wall)
                for(Iterator<BaseAgent> iterator = cell.getAgentsIterator(); iterator.hasNext();) {
                    this.addToCellGroup(cellGroups, iterator.next());
                }
                
                //For each group, if there are both human and zombies in it, resolve the confrontation
                for(AgentsGroup cellGroup: cellGroups) {
                    humans  = cellGroup.getHumans();
                    zombies = cellGroup.getZombies();
                    
                    if(!humans.isEmpty() && !zombies.isEmpty()) {
                        this.resolveConflict(row, column, humans, zombies);
                    }
                }
            }
        }
    }