code: public static <V, C extends Set<? extends V>> ImmutableListMultimap<V, C> makeSetElementsToContainersMultimap(
        final Iterable<C> sets) {
      // because these are sets we can safely use a list multimap without having to worry
      // about duplicates
      final ImmutableListMultimap.Builder<V, C> ret = ImmutableListMultimap.builder();
  
      for (final C set : sets) {
        for (final V item : set) {
          ret.put(item, set);
        }
      }
  
      return ret.build();
    }
docs: Takes some collections and creates a {@link com.google.common.collect.ListMultimap} from their
  elements to which collections contain them.  Unlike {@link #makeElementsToContainersMap(Iterable)},
  the same element may appear in multiple collections. However, {@code null} may not appear in
  any of the collections.  The returned multimap is a {@link com.google.common.collect.ListMultimap}
  to avoid having to do potentially expensive comparisons between the sets; we know there will be
  no duplicates because the input collections are sets.