Do not access SkylarkProviders anywhere outside of ConfiguredTarget implementation.

A first step towards applying the same memory optimizations we do for
native provider representation to Skylark providers (declared and
legacy).

RELNOTES: None.
PiperOrigin-RevId: 156111749
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 be92473..f1c4b4d 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
@@ -88,9 +88,14 @@
   @Nullable
   @VisibleForTesting
   public <P extends TransitiveInfoProvider> P getProvider(Class<P> providerClass) {
+    AnalysisUtils.checkProvider(providerClass);
     return providers.getProvider(providerClass);
   }
 
+  SkylarkProviders getSkylarkProviders() {
+    return providers.getProvider(SkylarkProviders.class);
+  }
+
   public Object getProvider(SkylarkProviderIdentifier id) {
     if (id.isLegacy()) {
       return get(id.getLegacyId());
@@ -103,7 +108,7 @@
     if (OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey().equals(key)) {
       return getProvider(OutputGroupProvider.class);
     }
-    SkylarkProviders skylarkProviders = getProvider(SkylarkProviders.class);
+    SkylarkProviders skylarkProviders = providers.getProvider(SkylarkProviders.class);
     return skylarkProviders != null ? skylarkProviders.getDeclaredProvider(key) : null;
   }
 
@@ -111,7 +116,7 @@
     if (OutputGroupProvider.SKYLARK_NAME.equals(legacyKey)) {
       return getProvider(OutputGroupProvider.class);
     }
-    SkylarkProviders skylarkProviders = getProvider(SkylarkProviders.class);
+    SkylarkProviders skylarkProviders = providers.getProvider(SkylarkProviders.class);
     return skylarkProviders != null
         ? skylarkProviders.get(SkylarkProviderIdentifier.forLegacy(legacyKey))
         : null;