code: public static <K1, K2, V1 extends K2, V2> ImmutableSetMultimap<K1, V2> composeToSetMultimapStrictly(
        final Multimap<K1, V1> first, final Multimap<K2, V2> second) {
      checkArgument(second.keySet().containsAll(first.values()));
      return composeToSetMultimap(first, second);
    }
docs: Performs a (strict) composition of two multimaps to an {@link ImmutableSetMultimap}. This
  returns a new {@link ImmutableSetMultimap} which will contain an entry {@code (k,v)} if and
  only if there is some {@code i} such that {@code (k, i)} is in {@code first} and {@code (i, v)}
  is in {@code second}.  Neither {@code first} nor {@code second} is permitted to contain null
  keys or values. The output of this method is not a view and will not be updated for changes to
  the input multimaps. Strict compositions require that for each entry {@code (k,i)} in {@code
  first}, there exists an entry {@code (i,v)} in {@code second}.