code: public Map<IslandCompetition, List<Island>> analyzeConflictsBetweenPossibleIslands(List<Island> possibleIslands) {
          Map<IslandCompetition, List<Island>> conflictMap = new HashMap<>();
          Set<Island> competingIslands = getCompetingIslands(possibleIslands);
          for (Island island : competingIslands) {
              if (selection.doesCandidateLayOnVectorOfCommittedIsland(island)) {
                  conflictMap.computeIfAbsent(IslandCompetition.CompetingIslandAndOnIdealIine, c -> new ArrayList<>()).add(island);
              } else {
                  conflictMap.computeIfAbsent(IslandCompetition.CompetingIsland, c -> new ArrayList<>()).add(island);
              }
          }
          for (Island island : getNonCompetingIslands(possibleIslands, competingIslands)) {
              conflictMap.computeIfAbsent(IslandCompetition.NonCompetingIsland, c -> new ArrayList<>()).add(island);
          }
          return conflictMap;
      }
docs: /*
  This method analyzes the relationship between all the islands of the same
  size that have yet to be selected. They can compete with one another
  (choosing one locks out the other), some of them can be on the ideal line.
  
  Parameters: the size of the islands that you want to analyze