Remove shortcut addProvider() methods, to prepare for AutoValue-ed providers.

Such providers have a create() method which returns an object whose runtime class differs from its compile-time class, which makes the shortcut methods behave unexpectedly.

--
MOS_MIGRATED_REVID=109815042
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
index 0af007d..bbc3f02 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
@@ -117,16 +117,11 @@
       return this;
     }
 
-    /**
-     * Adds a provider to the aspect. Shortcut for addProvider(value.getClass(), value).
-     */
-    public Builder addProvider(TransitiveInfoProvider value) {
-      return addProvider(value.getClass(), value);
-    }
-
-    public Builder addProviders(Iterable<? extends TransitiveInfoProvider> providers) {
-      for (TransitiveInfoProvider provider : providers) {
-        addProvider(provider);
+    public Builder addProviders(
+        Map<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> providers) {
+      for (Map.Entry<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> provider :
+          providers.entrySet()) {
+        addProvider(provider.getKey(), provider.getValue());
       }
       return this;
     }
@@ -170,7 +165,7 @@
         providers.put(SkylarkProviders.class, new SkylarkProviders(skylarkProvidersMap));
       }
 
-      addProvider(createExtraActionProvider(ruleContext));
+      addProvider(ExtraActionArtifactsProvider.class, createExtraActionProvider(ruleContext));
 
       return new ConfiguredAspect(name, ImmutableMap.copyOf(providers));
     }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index 2f12034..4deff61 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -235,13 +235,6 @@
   }
 
   /**
-   * Add a specific provider with a given value. Shortcut for addProvider(value.getClass(), value).
-   */
-  public RuleConfiguredTargetBuilder addProvider(TransitiveInfoProvider value) {
-    return addProvider(value.getClass(), value);
-  }
-
-  /**
    * Add multiple providers with given values.
    */
   public RuleConfiguredTargetBuilder addProviders(
@@ -254,17 +247,6 @@
   }
 
   /**
-   * Add multiple providers with given values.
-   */
-  public RuleConfiguredTargetBuilder addProviders(
-      Iterable<? extends TransitiveInfoProvider> providers) {
-    for (TransitiveInfoProvider provider : providers) {
-      addProvider(provider);
-    }
-    return this;
-  }
-
-  /**
    * Add a Skylark transitive info. The provider value must be safe (i.e. a String, a Boolean,
    * an Integer, an Artifact, a Label, None, a Java TransitiveInfoProvider or something composed
    * from these in Skylark using lists, sets, structs or dicts). Otherwise an EvalException is
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index f7f40c6..d4f2801 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -237,6 +237,7 @@
         Object lateBoundPrereq = ruleContext.getPrerequisite(":late", TARGET);
         return new ConfiguredAspect.Builder("testaspect", ruleContext)
             .addProvider(
+                AspectInfo.class,
                 new AspectInfo(
                     NestedSetBuilder.create(
                         Order.STABLE_ORDER, lateBoundPrereq != null ? "non-empty" : "empty")))