Introduce an AspectClass: a representation of a class of aspects.

For native aspects, AspectClass is a facade for Class<AspectFactory<...>>.

--
MOS_MIGRATED_REVID=105986390
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index 884d5db..336056f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -19,12 +19,12 @@
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.analysis.Aspect;
 import com.google.devtools.build.lib.analysis.AspectWithParameters;
-import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.packages.AspectClass;
 import com.google.devtools.build.lib.packages.AspectParameters;
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.skyframe.SkyFunctionName;
@@ -72,15 +72,15 @@
     private NativeAspectKey(
         Label label,
         BuildConfiguration configuration,
-        Class<? extends ConfiguredAspectFactory> aspectFactory,
+        AspectClass aspectClass ,
         AspectParameters parameters) {
       super(label, configuration);
       Preconditions.checkNotNull(parameters);
-      this.aspect = new AspectWithParameters(aspectFactory, parameters);
+      this.aspect = new AspectWithParameters(aspectClass, parameters);
     }
 
-    public Class<? extends ConfiguredAspectFactory> getAspect() {
-      return aspect.getAspectFactory();
+    public AspectClass getAspect() {
+      return aspect.getAspectClass();
     }
 
     @Override
@@ -91,7 +91,7 @@
 
     @Override
     public String getDescription() {
-      return String.format("%s of %s", aspect.getAspectFactory().getName(), getLabel());
+      return String.format("%s of %s", aspect.getAspectClass().getName(), getLabel());
     }
 
     @Override
@@ -122,7 +122,7 @@
 
     @Override
     public String toString() {
-      return label + "#" + aspect.getAspectFactory().getSimpleName() + " "
+      return label + "#" + aspect.getAspectClass().getName() + " "
           + (configuration == null ? "null" : configuration.checksum()) + " "
           + aspect.getParameters();
     }
@@ -209,8 +209,10 @@
     return transitivePackages;
   }
 
-  public static SkyKey key(Label label, BuildConfiguration configuration,
-      Class<? extends ConfiguredAspectFactory> aspectFactory,
+  public static SkyKey key(
+      Label label,
+      BuildConfiguration configuration,
+      AspectClass aspectFactory,
       AspectParameters additionalConfiguration) {
     return new SkyKey(
         SkyFunctions.NATIVE_ASPECT,
@@ -222,9 +224,7 @@
   }
 
   public static NativeAspectKey createAspectKey(
-      Label label,
-      BuildConfiguration configuration,
-      Class<? extends ConfiguredAspectFactory> aspectFactory) {
+      Label label, BuildConfiguration configuration, AspectClass aspectFactory) {
     return new NativeAspectKey(label, configuration, aspectFactory, AspectParameters.EMPTY);
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index addf514..237feea 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -29,7 +29,6 @@
 import com.google.devtools.build.lib.analysis.Aspect;
 import com.google.devtools.build.lib.analysis.AspectWithParameters;
 import com.google.devtools.build.lib.analysis.CachingAnalysisEnvironment;
-import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.DependencyResolver.Dependency;
 import com.google.devtools.build.lib.analysis.LabelAndConfiguration;
@@ -46,6 +45,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.StoredEventHandler;
+import com.google.devtools.build.lib.packages.AspectClass;
 import com.google.devtools.build.lib.packages.AspectDefinition;
 import com.google.devtools.build.lib.packages.AspectFactory;
 import com.google.devtools.build.lib.packages.AspectParameters;
@@ -510,7 +510,7 @@
       }
       ConfiguredTarget depConfiguredTarget = configuredTargetMap.get(depKey);
       for (AspectWithParameters depAspect : dep.getAspects()) {
-        if (!aspectMatchesConfiguredTarget(depConfiguredTarget, depAspect.getAspectFactory())) {
+        if (!aspectMatchesConfiguredTarget(depConfiguredTarget, depAspect.getAspectClass())) {
           continue;
         }
 
@@ -523,7 +523,7 @@
           throw new IllegalStateException(e);
         } catch (NoSuchThingException e) {
           AspectFactory<?, ?, ?> depAspectFactory =
-              AspectFactory.Util.create(depAspect.getAspectFactory());
+              AspectFactory.Util.create(depAspect.getAspectClass());
           throw new AspectCreationException(
               String.format("Evaluation of aspect %s on %s failed: %s",
                   depAspectFactory.getDefinition().getName(), dep.getLabel(), e.toString()));
@@ -544,13 +544,13 @@
       AspectWithParameters depAspect) {
     return AspectValue.key(label,
         buildConfiguration,
-        depAspect.getAspectFactory(),
+        depAspect.getAspectClass(),
         depAspect.getParameters());
   }
 
-  private static boolean aspectMatchesConfiguredTarget(ConfiguredTarget dep,
-      Class<? extends ConfiguredAspectFactory> aspectFactory) {
-    AspectDefinition aspectDefinition = AspectFactory.Util.create(aspectFactory).getDefinition();
+  private static boolean aspectMatchesConfiguredTarget(
+      ConfiguredTarget dep, AspectClass aspectClass) {
+    AspectDefinition aspectDefinition = AspectFactory.Util.create(aspectClass).getDefinition();
     for (Class<?> provider : aspectDefinition.getRequiredProviders()) {
       if (dep.getProvider(provider.asSubclass(TransitiveInfoProvider.class)) == null) {
         return false;