[Ahead-of-time Subcomponents] Use the subcomponent supermodel's
SubcomponentNames to generate the builder supertype when implementing the
builder for a nested implementation of a subcomponent.

Also, make SubcomponentNames a strict dependency of GeneratedComponentModel.

RELNOTES=n/a

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=214606745
diff --git a/java/dagger/internal/codegen/ComponentBindingExpressions.java b/java/dagger/internal/codegen/ComponentBindingExpressions.java
index 9a8ee1d..1a57151 100644
--- a/java/dagger/internal/codegen/ComponentBindingExpressions.java
+++ b/java/dagger/internal/codegen/ComponentBindingExpressions.java
@@ -61,7 +61,6 @@
   private final Optional<ComponentBindingExpressions> parent;
   private final BindingGraph graph;
   private final GeneratedComponentModel generatedComponentModel;
-  private final SubcomponentNames subcomponentNames;
   private final ComponentRequirementFields componentRequirementFields;
   private final ReferenceReleasingManagerFields referenceReleasingManagerFields;
   private final OptionalFactories optionalFactories;
@@ -76,7 +75,6 @@
   ComponentBindingExpressions(
       BindingGraph graph,
       GeneratedComponentModel generatedComponentModel,
-      SubcomponentNames subcomponentNames,
       ComponentRequirementFields componentRequirementFields,
       OptionalFactories optionalFactories,
       DaggerTypes types,
@@ -86,7 +84,6 @@
         Optional.empty(),
         graph,
         generatedComponentModel,
-        subcomponentNames,
         componentRequirementFields,
         new ReferenceReleasingManagerFields(graph, generatedComponentModel, compilerOptions),
         new StaticSwitchingProviders(generatedComponentModel, types),
@@ -100,7 +97,6 @@
       Optional<ComponentBindingExpressions> parent,
       BindingGraph graph,
       GeneratedComponentModel generatedComponentModel,
-      SubcomponentNames subcomponentNames,
       ComponentRequirementFields componentRequirementFields,
       ReferenceReleasingManagerFields referenceReleasingManagerFields,
       StaticSwitchingProviders staticSwitchingProviders,
@@ -111,7 +107,6 @@
     this.parent = parent;
     this.graph = graph;
     this.generatedComponentModel = generatedComponentModel;
-    this.subcomponentNames = checkNotNull(subcomponentNames);
     this.componentRequirementFields = checkNotNull(componentRequirementFields);
     this.referenceReleasingManagerFields = checkNotNull(referenceReleasingManagerFields);
     this.optionalFactories = checkNotNull(optionalFactories);
@@ -136,7 +131,6 @@
         Optional.of(this),
         childGraph,
         childComponentModel,
-        subcomponentNames,
         childComponentRequirementFields,
         referenceReleasingManagerFields,
         staticSwitchingProviders,
@@ -609,7 +603,7 @@
 
       case SUBCOMPONENT_BUILDER:
         return new SubcomponentBuilderProviderCreationExpression(
-            binding.key().type(), subcomponentNames.get(binding.key()));
+            binding.key().type(), generatedComponentModel.getSubcomponentName(binding.key()));
 
       case INJECTION:
       case PROVISION:
@@ -818,7 +812,8 @@
       case SUBCOMPONENT_BUILDER:
         return Optional.of(
             new SubcomponentBuilderBindingExpression(
-                resolvedBindings, subcomponentNames.get(resolvedBindings.key())));
+                resolvedBindings,
+                generatedComponentModel.getSubcomponentName(resolvedBindings.key())));
 
       case MULTIBOUND_SET:
         return Optional.of(