code: public static ImmutableList<ImmutableMap<String, String>> applyAllSuggestedFixChoicesToCode(
        Iterable<SuggestedFix> fixChoices, Map<String, String> fileNameToCodeMap) {
      if (Iterables.isEmpty(fixChoices)) {
        return ImmutableList.of(ImmutableMap.of());
      }
      int alternativeCount = Iterables.getFirst(fixChoices, null).getAlternatives().size();
      Preconditions.checkArgument(
          Streams.stream(fixChoices)
              .map(f -> f.getAlternatives().size())
              .allMatch(Predicate.isEqual(alternativeCount)),
          "All SuggestedFixAlternatives must offer an equal number of choices for this "
              + "utility to make sense");
      return IntStream.range(0, alternativeCount)
          .mapToObj(i -> applySuggestedFixChoicesToCode(fixChoices, i, fileNameToCodeMap))
          .collect(ImmutableList.toImmutableList());
    }
docs: Applies all possible options from each {@code SuggestedFixAlternative} to the provided code and
  returns the new code. This only makes sense if all the SuggestedFixAlternatives come from the
  same checker, i.e. they offer the same number of choices and the same index corresponds to
  similar fixes. The {@code filenameToCodeMap} must contain all the files that the provided fixes
  apply to. The fixes can be provided in any order, but they may not have any overlapping
  modifications for the same file. This function will return new code only for the files that
  have been modified.