code: @Provides
    @Singleton
    ImmutableMap<String, ? extends SoyPrintDirective> provideSoyDirectivesMap(
        Set<SoyPrintDirective> soyDirectivesSet) {
      Map<String, SoyPrintDirective> mapBuilder = new LinkedHashMap<>();
      for (SoyPrintDirective directive : soyDirectivesSet) {
        SoyPrintDirective old = mapBuilder.put(directive.getName(), directive);
        if (old != null && !old.getClass().getName().equals(directive.getClass().getName())) {
          throw new IllegalStateException(
              "Found two print directives with the same name: '"
                  + directive.getName()
                  + "' and different implementations: "
                  + directive
                  + " vs "
                  + old);
        }
      }
      return ImmutableMap.copyOf(mapBuilder);
    }
docs: Builds and provides the map of all installed SoyPrintDirectives (name to directive).
  
  @param soyDirectivesSet The installed set of SoyPrintDirectives (from Guice Multibinder).