Don't reuse the same method name from a previously generated modifiable binding method.

RELNOTES=n/a

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=224501727
diff --git a/java/dagger/internal/codegen/ComponentImplementation.java b/java/dagger/internal/codegen/ComponentImplementation.java
index d7e9133..8c84ee3 100644
--- a/java/dagger/internal/codegen/ComponentImplementation.java
+++ b/java/dagger/internal/codegen/ComponentImplementation.java
@@ -521,6 +521,18 @@
   }
 
   /**
+   * Returns the names of every modifiable binding method of this implementation and any superclass
+   * implementations.
+   */
+  ImmutableSet<String> getAllModifiableBindingMethodNames() {
+    ImmutableSet.Builder<String> names = ImmutableSet.builder();
+    modifiableBindingMethods.allMethods().forEach(method -> names.add(method.methodSpec().name));
+    superclassImplementation.ifPresent(
+        superclass -> names.addAll(superclass.getAllModifiableBindingMethodNames()));
+    return names.build();
+  }
+
+  /**
    * Returns the {@link ModifiableBindingMethod} for this subcomponent for the given binding, if it
    * exists.
    */
diff --git a/java/dagger/internal/codegen/ComponentImplementationFactory.java b/java/dagger/internal/codegen/ComponentImplementationFactory.java
index ca98509..381d7ec 100644
--- a/java/dagger/internal/codegen/ComponentImplementationFactory.java
+++ b/java/dagger/internal/codegen/ComponentImplementationFactory.java
@@ -198,6 +198,14 @@
 
       getLocalAndInheritedMethods(graph.componentTypeElement(), types, elements)
           .forEach(method -> componentImplementation.claimMethodName(method.getSimpleName()));
+      componentImplementation
+          .superclassImplementation()
+          .ifPresent(
+              superclassImplementation -> {
+                superclassImplementation
+                    .getAllModifiableBindingMethodNames()
+                    .forEach(componentImplementation::claimMethodName);
+              });
 
       addFactoryMethods();
       addInterfaceMethods();
diff --git a/java/dagger/internal/codegen/ModifiableBindingMethods.java b/java/dagger/internal/codegen/ModifiableBindingMethods.java
index 6183ae4..e19abb9 100644
--- a/java/dagger/internal/codegen/ModifiableBindingMethods.java
+++ b/java/dagger/internal/codegen/ModifiableBindingMethods.java
@@ -70,6 +70,11 @@
     return Optional.ofNullable(methods.get(request));
   }
 
+  /** Returns all of the {@link ModifiableBindingMethod}s. */
+  ImmutableList<ModifiableBindingMethod> allMethods() {
+    return ImmutableList.copyOf(methods.values());
+  }
+
   /**
    * Mark the {@link ModifiableBindingMethod} as having been implemented, thus modifying the
    * binding.