Rename some of native declared providers according to the new naming scheme.

RELNOTES: None
PiperOrigin-RevId: 165910455
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 18b40a4..08fb8a1 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -914,10 +914,10 @@
         "rules/java/JavaConfigurationLoader.java",
         "rules/java/JavaImport.java",
         "rules/java/JavaImportBaseRule.java",
+        "rules/java/JavaInfo.java",
         "rules/java/JavaLibrary.java",
         "rules/java/JavaPlugin.java",
         "rules/java/JavaPrimaryClassProvider.java",
-        "rules/java/JavaProvider.java",
         "rules/java/JavaRuntime.java",
         "rules/java/JavaRuntimeAlias.java",
         "rules/java/JavaRuntimeClasspathProvider.java",
@@ -1010,15 +1010,15 @@
         "rules/java/JavaGenJarsProvider.java",
         "rules/java/JavaHeaderCompileAction.java",
         "rules/java/JavaHelper.java",
+        "rules/java/JavaInfo.java",
         "rules/java/JavaLibraryHelper.java",
         "rules/java/JavaNativeLibraryProvider.java",
         "rules/java/JavaNeverlinkInfoProvider.java",
         "rules/java/JavaOptions.java",
         "rules/java/JavaPluginInfoProvider.java",
-        "rules/java/JavaProvider.java",
         "rules/java/JavaRuleOutputJarsProvider.java",
         "rules/java/JavaRunfilesProvider.java",
-        "rules/java/JavaRuntimeProvider.java",
+        "rules/java/JavaRuntimeInfo.java",
         "rules/java/JavaSemantics.java",
         "rules/java/JavaSkylarkApiProvider.java",
         "rules/java/JavaSourceJarsProvider.java",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
index 235dc37..8e63a2e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
@@ -47,7 +47,7 @@
   private final NestedSet<PackageSpecification> visibility;
 
   // Cached on-demand default provider
-  private final AtomicReference<DefaultProvider> defaultProvider = new AtomicReference<>();
+  private final AtomicReference<DefaultInfo> defaultProvider = new AtomicReference<>();
 
   // Accessors for Skylark
   private static final String DATA_RUNFILES_FIELD = "data_runfiles";
@@ -165,11 +165,11 @@
   protected void addExtraSkylarkKeys(Consumer<String> result) {
   }
 
-  private DefaultProvider getDefaultProvider() {
+  private DefaultInfo getDefaultProvider() {
     if (defaultProvider.get() == null) {
       defaultProvider.compareAndSet(
           null,
-          DefaultProvider.build(
+          DefaultInfo.build(
               getProvider(RunfilesProvider.class),
               getProvider(FileProvider.class),
               getProvider(FilesToRunProvider.class)));
@@ -181,7 +181,7 @@
   @Nullable
   @Override
   public final Info get(Provider.Key providerKey) {
-    if (providerKey.equals(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey())) {
+    if (providerKey.equals(DefaultInfo.PROVIDER.getKey())) {
       return getDefaultProvider();
     }
     return rawGetSkylarkProvider(providerKey);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index df7d1d5..817f4d1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -296,7 +296,7 @@
           <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
           .add(attr("toolchains", LABEL_LIST)
               .allowedFileTypes(FileTypeSet.NO_FILE)
-              .mandatoryProviders(ImmutableList.of(MakeVariableProvider.SKYLARK_CONSTRUCTOR.id())))
+              .mandatoryProviders(ImmutableList.of(MakeVariableInfo.PROVIDER.id())))
           .build();
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
similarity index 90%
rename from src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java
rename to src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
index 26ba931..7becc71 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
@@ -26,9 +26,9 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 
-/** DefaultProvider is provided by all targets implicitly and contains all standard fields. */
+/** DefaultInfo is provided by all targets implicitly and contains all standard fields. */
 @Immutable
-public final class DefaultProvider extends Info {
+public final class DefaultInfo extends Info {
 
   // Accessors for Skylark
   private static final String DATA_RUNFILES_FIELD = "data_runfiles";
@@ -47,7 +47,7 @@
   private final AtomicReference<SkylarkNestedSet> files = new AtomicReference<>();
 
   public static final String SKYLARK_NAME = "DefaultInfo";
-  public static final Provider SKYLARK_CONSTRUCTOR =
+  public static final Provider PROVIDER =
       new NativeProvider<Info>(Info.class, SKYLARK_NAME) {
         @Override
         protected Info createInstanceFromSkylark(Object[] args, Location loc) {
@@ -57,7 +57,7 @@
         }
       };
 
-  private DefaultProvider(
+  private DefaultInfo(
       Provider constructor,
       RunfilesProvider runfilesProvider,
       FileProvider fileProvider,
@@ -69,12 +69,12 @@
     this.filesToRunProvider = filesToRunProvider;
   }
 
-  public static DefaultProvider build(
+  public static DefaultInfo build(
       RunfilesProvider runfilesProvider,
       FileProvider fileProvider,
       FilesToRunProvider filesToRunProvider) {
-    return new DefaultProvider(
-        SKYLARK_CONSTRUCTOR, runfilesProvider, fileProvider, filesToRunProvider);
+    return new DefaultInfo(
+        PROVIDER, runfilesProvider, fileProvider, filesToRunProvider);
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/MakeVariableProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/MakeVariableInfo.java
similarity index 82%
rename from src/main/java/com/google/devtools/build/lib/analysis/MakeVariableProvider.java
rename to src/main/java/com/google/devtools/build/lib/analysis/MakeVariableInfo.java
index 3c58c70..d33af68 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/MakeVariableProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/MakeVariableInfo.java
@@ -24,16 +24,16 @@
 /** Provides access to make variables from the current fragments. */
 @SkylarkModule(name = "MakeVariables", doc = "Make variables exposed by the current target.")
 @Immutable
-public final class MakeVariableProvider extends Info {
+public final class MakeVariableInfo extends Info {
   public static final String SKYLARK_NAME = "MakeVariableInfo";
 
-  public static final NativeProvider<MakeVariableProvider> SKYLARK_CONSTRUCTOR =
-      new NativeProvider<MakeVariableProvider>(MakeVariableProvider.class, SKYLARK_NAME) {};
+  public static final NativeProvider<MakeVariableInfo> PROVIDER =
+      new NativeProvider<MakeVariableInfo>(MakeVariableInfo.class, SKYLARK_NAME) {};
 
   private final ImmutableMap<String, String> makeVariables;
 
-  public MakeVariableProvider(ImmutableMap<String, String> makeVariables) {
-    super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+  public MakeVariableInfo(ImmutableMap<String, String> makeVariables) {
+    super(PROVIDER, ImmutableMap.<String, Object>of());
     this.makeVariables = makeVariables;
   }
 
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 67b4a6c..7522d09 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
@@ -24,10 +24,10 @@
 import com.google.devtools.build.lib.analysis.constraints.EnvironmentCollection;
 import com.google.devtools.build.lib.analysis.constraints.SupportedEnvironments;
 import com.google.devtools.build.lib.analysis.constraints.SupportedEnvironmentsProvider;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
 import com.google.devtools.build.lib.analysis.test.TestActionBuilder;
-import com.google.devtools.build.lib.analysis.test.TestEnvironmentProvider;
+import com.google.devtools.build.lib.analysis.test.TestEnvironmentInfo;
 import com.google.devtools.build.lib.analysis.test.TestProvider;
 import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams;
 import com.google.devtools.build.lib.cmdline.Label;
@@ -190,9 +190,9 @@
         new TestActionBuilder(ruleContext)
             .setInstrumentedFiles(providersBuilder.getProvider(InstrumentedFilesProvider.class));
 
-    TestEnvironmentProvider environmentProvider =
-        (TestEnvironmentProvider)
-            providersBuilder.getProvider(TestEnvironmentProvider.SKYLARK_CONSTRUCTOR.getKey());
+    TestEnvironmentInfo environmentProvider =
+        (TestEnvironmentInfo)
+            providersBuilder.getProvider(TestEnvironmentInfo.PROVIDER.getKey());
     if (environmentProvider != null) {
       testActionBuilder.addExtraEnv(environmentProvider.getEnvironment());
     }
@@ -201,8 +201,8 @@
         testActionBuilder
             .setFilesToRunProvider(filesToRunProvider)
             .setExecutionRequirements(
-                (ExecutionInfoProvider) providersBuilder
-                    .getProvider(ExecutionInfoProvider.SKYLARK_CONSTRUCTOR.getKey()))
+                (ExecutionInfo) providersBuilder
+                    .getProvider(ExecutionInfo.PROVIDER.getKey()))
             .setShardCount(explicitShardCount)
             .build();
     ImmutableList<String> testTags = ImmutableList.copyOf(ruleContext.getRule().getRuleTags());
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index eaa634d..9c13d4b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -1079,20 +1079,20 @@
   }
 
   public ImmutableMap<String, String> getMakeVariables(Iterable<String> attributeNames) {
-    ArrayList<MakeVariableProvider> makeVariableProviders = new ArrayList<>();
+    ArrayList<MakeVariableInfo> makeVariableInfos = new ArrayList<>();
 
     for (String attributeName : attributeNames) {
       // TODO(b/37567440): Remove this continue statement.
       if (!attributes().has(attributeName)) {
         continue;
       }
-      Iterables.addAll(makeVariableProviders, getPrerequisites(
-          attributeName, Mode.DONT_CHECK, MakeVariableProvider.SKYLARK_CONSTRUCTOR));
+      Iterables.addAll(makeVariableInfos, getPrerequisites(
+          attributeName, Mode.DONT_CHECK, MakeVariableInfo.PROVIDER));
     }
 
     LinkedHashMap<String, String> makeVariables = new LinkedHashMap<>();
-    for (MakeVariableProvider makeVariableProvider : makeVariableProviders) {
-      makeVariables.putAll(makeVariableProvider.getMakeVariables());
+    for (MakeVariableInfo makeVariableInfo : makeVariableInfos) {
+      makeVariables.putAll(makeVariableInfo.getMakeVariables());
     }
 
     return ImmutableMap.copyOf(makeVariables);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
index e790180..6ba8b5a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
@@ -53,7 +53,7 @@
           /*types=*/ ImmutableList.<SkylarkType>of(SkylarkType.of(Label.class)));
 
   /** Skylark constructor and identifier for this provider. */
-  public static final NativeProvider<ConstraintSettingInfo> SKYLARK_CONSTRUCTOR =
+  public static final NativeProvider<ConstraintSettingInfo> PROVIDER =
       new NativeProvider<ConstraintSettingInfo>(
           ConstraintSettingInfo.class, SKYLARK_NAME, SIGNATURE) {
         @Override
@@ -68,7 +68,7 @@
   private final Label label;
 
   private ConstraintSettingInfo(Label label, Location location) {
-    super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of("label", label), location);
+    super(PROVIDER, ImmutableMap.<String, Object>of("label", label), location);
 
     this.label = label;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformProviderUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformProviderUtils.java
index 148fea7..51582d3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformProviderUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformProviderUtils.java
@@ -33,7 +33,7 @@
 
   /** Retrieves and casts the {@link ConstraintSettingInfo} provider from the given target. */
   public static ConstraintSettingInfo constraintSetting(SkylarkProviderCollection target) {
-    return target.get(ConstraintSettingInfo.SKYLARK_CONSTRUCTOR);
+    return target.get(ConstraintSettingInfo.PROVIDER);
   }
 
   /** Retrieves and casts {@link ConstraintSettingInfo} providers from the given targets. */
@@ -55,6 +55,6 @@
 
   /** Retrieves and casts the {@link ToolchainInfo} provider from the given target. */
   public static ToolchainInfo toolchain(SkylarkProviderCollection target) {
-    return target.get(ToolchainInfo.SKYLARK_CONSTRUCTOR);
+    return target.get(ToolchainInfo.PROVIDER);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
index b99a2a9..bff0be6 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
@@ -56,7 +56,7 @@
           /*types=*/ ImmutableList.<SkylarkType>of(SkylarkType.DICT));
 
   /** Skylark constructor and identifier for this provider. */
-  public static final NativeProvider<ToolchainInfo> SKYLARK_CONSTRUCTOR =
+  public static final NativeProvider<ToolchainInfo> PROVIDER =
       new NativeProvider<ToolchainInfo>(ToolchainInfo.class, SKYLARK_NAME, SIGNATURE) {
         @Override
         protected ToolchainInfo createInstanceFromSkylark(Object[] args, Location loc)
@@ -68,7 +68,7 @@
       };
 
   protected ToolchainInfo(Map<String, Object> toolchainData, Location loc) {
-    super(SKYLARK_CONSTRUCTOR, ImmutableMap.copyOf(toolchainData), loc);
+    super(PROVIDER, ImmutableMap.copyOf(toolchainData), loc);
   }
 
   public static ToolchainInfo create(Map<String, Object> toolchainData) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index f4f5084..5b4363e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -37,7 +37,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.ActionsProvider;
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
-import com.google.devtools.build.lib.analysis.DefaultProvider;
+import com.google.devtools.build.lib.analysis.DefaultInfo;
 import com.google.devtools.build.lib.analysis.OutputGroupProvider;
 import com.google.devtools.build.lib.analysis.PlatformSemantics;
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
@@ -236,7 +236,7 @@
             + "<li><code>default_runfiles</code></li>"
             + "</ul>"
   )
-  private static final Provider defaultInfo = DefaultProvider.SKYLARK_CONSTRUCTOR;
+  private static final Provider defaultInfo = DefaultInfo.PROVIDER;
 
   @SkylarkSignature(
     name = "OutputGroupInfo",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
index 74a69ca..077b499 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
@@ -19,7 +19,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.ActionsProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.DefaultProvider;
+import com.google.devtools.build.lib.analysis.DefaultInfo;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.Runfiles;
@@ -317,7 +317,7 @@
       if (declaredProvider
           .getProvider()
           .getKey()
-          .equals(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey())) {
+          .equals(DefaultInfo.PROVIDER.getKey())) {
         parseDefaultProviderKeys(declaredProvider, ruleContext, builder);
         defaultProviderProvidedExplicitly = true;
       } else {
@@ -398,7 +398,7 @@
       } else if (provider
           .getProvider()
           .getKey()
-          .equals(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey())) {
+          .equals(DefaultInfo.PROVIDER.getKey())) {
         // Custom keys are not allowed for default providers
         throw new EvalException(loc, "Invalid key for default provider: " + key);
       }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 5f383d6..7569fe7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -27,7 +27,7 @@
 import com.google.devtools.build.lib.analysis.AliasProvider;
 import com.google.devtools.build.lib.analysis.AnalysisUtils;
 import com.google.devtools.build.lib.analysis.ConfigurationMakeVariableContext;
-import com.google.devtools.build.lib.analysis.DefaultProvider;
+import com.google.devtools.build.lib.analysis.DefaultInfo;
 import com.google.devtools.build.lib.analysis.FilesToRunProvider;
 import com.google.devtools.build.lib.analysis.LabelExpander;
 import com.google.devtools.build.lib.analysis.LabelExpander.NotUniqueExpansionException;
@@ -629,7 +629,7 @@
     doc = "Deprecated. Use <a href=\"globals.html#DefaultInfo\">DefaultInfo</a> instead."
   )
   public static Provider getDefaultProvider() {
-    return DefaultProvider.SKYLARK_CONSTRUCTOR;
+    return DefaultInfo.PROVIDER;
   }
 
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfoProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java
similarity index 75%
rename from src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfoProvider.java
rename to src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java
index 616db25..9dfa3d7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java
@@ -24,16 +24,16 @@
  * tests).
  */
 @Immutable
-public final class ExecutionInfoProvider extends Info {
+public final class ExecutionInfo extends Info {
 
-  /** Skylark constructor and identifier for ExecutionInfoProvider. */
-  public static final NativeProvider<ExecutionInfoProvider> SKYLARK_CONSTRUCTOR =
-      new NativeProvider<ExecutionInfoProvider>(ExecutionInfoProvider.class, "ExecutionInfo") {};
+  /** Skylark constructor and identifier for ExecutionInfo. */
+  public static final NativeProvider<ExecutionInfo> PROVIDER =
+      new NativeProvider<ExecutionInfo>(ExecutionInfo.class, "ExecutionInfo") {};
 
   private final ImmutableMap<String, String> executionInfo;
 
-  public ExecutionInfoProvider(Map<String, String> requirements) {
-    super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of("requirements", requirements));
+  public ExecutionInfo(Map<String, String> requirements) {
+    super(PROVIDER, ImmutableMap.<String, Object>of("requirements", requirements));
     this.executionInfo = ImmutableMap.copyOf(requirements);
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
index 3194f3f5..bb6b609 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
@@ -55,7 +55,7 @@
   private final RuleContext ruleContext;
   private RunfilesSupport runfilesSupport;
   private Artifact executable;
-  private ExecutionInfoProvider executionRequirements;
+  private ExecutionInfo executionRequirements;
   private InstrumentedFilesProvider instrumentedFiles;
   private int explicitShardCount;
   private Map<String, String> extraEnv;
@@ -113,7 +113,7 @@
   }
 
   public TestActionBuilder setExecutionRequirements(
-      @Nullable ExecutionInfoProvider executionRequirements) {
+      @Nullable ExecutionInfo executionRequirements) {
     this.executionRequirements = executionRequirements;
     return this;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java
similarity index 74%
rename from src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentProvider.java
rename to src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java
index fb1125f..ec16185 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java
@@ -23,18 +23,18 @@
 
 /** Provider containing any additional environment variables for use in the test action. */
 @Immutable
-public final class TestEnvironmentProvider extends Info {
+public final class TestEnvironmentInfo extends Info {
 
-  /** Skylark constructor and identifier for TestEnvironmentProvider. */
-  public static final NativeProvider<TestEnvironmentProvider> SKYLARK_CONSTRUCTOR =
-      new NativeProvider<TestEnvironmentProvider>(
-          TestEnvironmentProvider.class, "TestEnvironment") {};
+  /** Skylark constructor and identifier for TestEnvironmentInfo. */
+  public static final NativeProvider<TestEnvironmentInfo> PROVIDER =
+      new NativeProvider<TestEnvironmentInfo>(
+          TestEnvironmentInfo.class, "TestEnvironment") {};
 
   private final Map<String, String> environment;
 
   /** Constructs a new provider with the given variable name to variable value mapping. */
-  public TestEnvironmentProvider(Map<String, String> environment) {
-    super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of("environment", environment));
+  public TestEnvironmentInfo(Map<String, String> environment) {
+    super(PROVIDER, ImmutableMap.<String, Object>of("environment", environment));
     this.environment = Preconditions.checkNotNull(environment);
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
index d55d066..a2e33d4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
@@ -74,7 +74,7 @@
    * will be called only for test configured targets.
    */
   TestTargetProperties(RuleContext ruleContext,
-      ExecutionInfoProvider executionRequirements) {
+      ExecutionInfo executionRequirements) {
     Rule rule = ruleContext.getRule();
 
     Preconditions.checkState(TargetUtils.isTestRule(rule));
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
index ff65748..1b363de 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
@@ -43,8 +43,8 @@
 import com.google.devtools.build.lib.packages.RuleClass.PackageNameConstraint;
 import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
 import com.google.devtools.build.lib.packages.TriState;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaSemantics;
 import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
 import com.google.devtools.build.lib.syntax.Type;
@@ -76,19 +76,19 @@
 
   /**
    * Meant to be an element of {@code mandatoryProvidersLists} in order to accept rules providing
-   * a {@link JavaProvider} through an attribute. Other providers can be included in
+   * a {@link JavaInfo} through an attribute. Other providers can be included in
    * {@code mandatoryProvidersLists} as well.
    */
   public static final ImmutableList<SkylarkProviderIdentifier> CONTAINS_JAVA_PROVIDER =
-      ImmutableList.of(SkylarkProviderIdentifier.forKey(JavaProvider.JAVA_PROVIDER.getKey()));
+      ImmutableList.of(SkylarkProviderIdentifier.forKey(JavaInfo.PROVIDER.getKey()));
 
   public static final ImmutableList<SkylarkProviderIdentifier> CONTAINS_CC_LINK_PARAMS =
       ImmutableList.of(
-          SkylarkProviderIdentifier.forKey(CcLinkParamsProvider.CC_LINK_PARAMS.getKey()));
+          SkylarkProviderIdentifier.forKey(CcLinkParamsInfo.PROVIDER.getKey()));
 
   /**
    * Meant to be the value of {@code mandatoryProvidersLists} in order for the rule to provide only
-   * a {@link JavaProvider} through an attribute.
+   * a {@link JavaInfo} through an attribute.
    */
   public static final ImmutableList<ImmutableList<SkylarkProviderIdentifier>>
       MANDATORY_JAVA_PROVIDER_ONLY = ImmutableList.of(CONTAINS_JAVA_PROVIDER);
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java b/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java
index f6f7d8e..f400255 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java
@@ -31,7 +31,7 @@
  * <p>Typical implementation of a non-constructable from Skylark declared provider is as follows:
  *
  * <pre>
- *     public static final Provider CC_LINK_PARAMS =
+ *     public static final Provider PROVIDER =
  *       new NativeProvider("link_params") { };
  * </pre>
  *
diff --git a/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java b/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java
index da23eb3..a7c4c43 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java
@@ -16,7 +16,7 @@
 
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
 import com.google.devtools.build.lib.analysis.RuleContext;
@@ -63,7 +63,7 @@
     // out the lookup rule -> toolchain rule mapping. For now, it only provides Make variables that
     // come from BuildConfiguration so no need to ask Skyframe.
     return new RuleConfiguredTargetBuilder(ruleContext)
-        .addNativeDeclaredProvider(new MakeVariableProvider(ImmutableMap.copyOf(makeVariables)))
+        .addNativeDeclaredProvider(new MakeVariableInfo(ImmutableMap.copyOf(makeVariables)))
         .addProvider(RunfilesProvider.simple(Runfiles.EMPTY))
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 05c667c..0e6eef9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
 import com.google.devtools.build.lib.rules.java.JavaHelper;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
 import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
 import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
@@ -126,7 +126,7 @@
         .addOutputJar(mergedJar, null, ImmutableList.<Artifact>of());
     for (TransitiveInfoCollection export : ruleContext.getPrerequisites("exports", Mode.TARGET)) {
       for (OutputJar jar :
-          JavaProvider.getProvider(JavaRuleOutputJarsProvider.class, export).getOutputJars()) {
+          JavaInfo.getProvider(JavaRuleOutputJarsProvider.class, export).getOutputJars()) {
         jarProviderBuilder.addOutputJar(jar);
         filesToBuildBuilder.add(jar.getClassJar());
       }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index c7ca121..e535c15 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -47,7 +47,7 @@
 import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
 import com.google.devtools.build.lib.rules.android.ResourceContainer.ResourceType;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
 import com.google.devtools.build.lib.rules.java.ClasspathConfiguredFragment;
 import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
@@ -927,7 +927,7 @@
             // Link in Android-specific C++ code (e.g., android_libraries) in the transitive closure
             AndroidCcLinkParamsProvider.TO_LINK_PARAMS,
             // Link in non-language-specific C++ code in the transitive closure
-            CcLinkParamsProvider.TO_LINK_PARAMS);
+            CcLinkParamsInfo.TO_LINK_PARAMS);
         builder.addLinkOpts(linkOpts);
       }
     };
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
index 355416e..2845148 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
@@ -40,7 +40,7 @@
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Template;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.packages.TargetUtils;
@@ -120,7 +120,7 @@
         .setFilesToBuild(filesToBuild)
         .addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
         .setRunfilesSupport(runfilesSupport, executable)
-        .addNativeDeclaredProvider(new ExecutionInfoProvider(executionInfo))
+        .addNativeDeclaredProvider(new ExecutionInfo(executionInfo))
         .addProvider(
             DeviceBrokerTypeProvider.class, new DeviceBrokerTypeProvider(DEVICE_BROKER_TYPE))
         .build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java
index 6f29f80..1fb52d2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Template;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.syntax.Type;
@@ -309,20 +309,20 @@
   }
 
   /**
-   * Propagates the {@link ExecutionInfoProvider} from the {@code android_device} rule in the {@code
+   * Propagates the {@link ExecutionInfo} from the {@code android_device} rule in the {@code
    * target_device} attribute.
    *
    * <p>This allows the dependent {@code android_device} rule to specify some requirements on the
    * machine that the {@code android_instrumentation_test} runs on.
    */
-  private static ExecutionInfoProvider getExecutionInfoProvider(RuleContext ruleContext) {
-    ExecutionInfoProvider executionInfoProvider =
+  private static ExecutionInfo getExecutionInfoProvider(RuleContext ruleContext) {
+    ExecutionInfo executionInfo =
             ruleContext.getPrerequisite(
-                "target_device", Mode.HOST, ExecutionInfoProvider.SKYLARK_CONSTRUCTOR);
+                "target_device", Mode.HOST, ExecutionInfo.PROVIDER);
     ImmutableMap<String, String> executionRequirements =
-        (executionInfoProvider != null)
-            ? executionInfoProvider.getExecutionInfo()
+        (executionInfo != null)
+            ? executionInfo.getExecutionInfo()
             : ImmutableMap.of();
-    return new ExecutionInfoProvider(executionRequirements);
+    return new ExecutionInfo(executionRequirements);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 5f845ae..eead30e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -34,7 +34,7 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
 import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -418,7 +418,7 @@
     if (ApplePlatform.isApplePlatform(cppConfiguration.getTargetCpu())
         && TargetUtils.isTestRule(ruleContext.getRule())) {
       ruleBuilder.addNativeDeclaredProvider(
-          new ExecutionInfoProvider(ImmutableMap.of(ExecutionRequirements.REQUIRES_DARWIN, "")));
+          new ExecutionInfo(ImmutableMap.of(ExecutionRequirements.REQUIRES_DARWIN, "")));
     }
 
     // If PDB file is generated by the link action, we add it to pdb_file output group
@@ -707,7 +707,7 @@
     } else {
       builder.addTransitiveTargets(
           context.getPrerequisites("deps", Mode.TARGET),
-          CcLinkParamsProvider.TO_LINK_PARAMS, CcSpecificLinkParamsProvider.TO_LINK_PARAMS);
+          CcLinkParamsInfo.TO_LINK_PARAMS, CcSpecificLinkParamsProvider.TO_LINK_PARAMS);
       builder.addTransitiveTarget(CppHelper.mallocForTarget(context));
       builder.addLinkOpts(linkopts);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 7a28ba9..4856b0a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
 import com.google.devtools.build.lib.analysis.FileProvider;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.MakeVariableSupplier;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.analysis.RuleContext;
@@ -685,7 +685,7 @@
    */
   public static String computeCcFlags(RuleContext ruleContext, TransitiveInfoCollection toolchain) {
     CcToolchainProvider toolchainProvider =
-        (CcToolchainProvider) toolchain.get(ToolchainInfo.SKYLARK_CONSTRUCTOR);
+        (CcToolchainProvider) toolchain.get(ToolchainInfo.PROVIDER);
     FeatureConfiguration featureConfiguration =
         CcCommon.configureFeatures(ruleContext, toolchainProvider);
     if (!featureConfiguration.actionIsConfigured(
@@ -702,10 +702,10 @@
                 featureConfiguration.getCommandLine(
                     CppCompileAction.CC_FLAGS_MAKE_VARIABLE_ACTION_NAME, buildVariables));
     String oldCcFlags = "";
-    MakeVariableProvider makeVariableProvider =
-        toolchain.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR);
-    if (makeVariableProvider != null) {
-      oldCcFlags = makeVariableProvider.getMakeVariables().getOrDefault(
+    MakeVariableInfo makeVariableInfo =
+        toolchain.get(MakeVariableInfo.PROVIDER);
+    if (makeVariableInfo != null) {
+      oldCcFlags = makeVariableInfo.getMakeVariables().getOrDefault(
           CppConfiguration.CC_FLAGS_MAKE_VARIABLE_NAME, "");
     }
     return FluentIterable.of(oldCcFlags)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
index 690de23..a7ffab3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
@@ -848,7 +848,7 @@
 
   /**
    * This adds the {@link CcSpecificLinkParamsProvider} to the providers created by this class.
-   * Otherwise the result will contain an instance of {@link CcLinkParamsProvider}.
+   * Otherwise the result will contain an instance of {@link CcLinkParamsInfo}.
    */
   public CcLibraryHelper enableCcSpecificLinkParamsProvider() {
     this.emitCcSpecificLinkParamsProvider = true;
@@ -1082,7 +1082,7 @@
               createCcLinkParamsStore(ccLinkingOutputs, cppCompilationContext, forcePic)));
     } else {
       providers.put(
-          new CcLinkParamsProvider(
+          new CcLinkParamsInfo(
               createCcLinkParamsStore(ccLinkingOutputs, cppCompilationContext, forcePic)));
     }
     return new Info(
@@ -1551,7 +1551,7 @@
         builder.addLinkstamps(linkstamps.build(), cppCompilationContext);
         builder.addTransitiveTargets(
             deps,
-            CcLinkParamsProvider.TO_LINK_PARAMS,
+            CcLinkParamsInfo.TO_LINK_PARAMS,
             CcSpecificLinkParamsProvider.TO_LINK_PARAMS);
         if (!neverlink) {
           builder.addLibraries(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
index 83d539d..7d9a0dc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
@@ -201,11 +201,11 @@
     /**
      * Includes link parameters from a dependency target.
      *
-     * <p>The target should implement {@link CcLinkParamsProvider}. If it does not,
+     * <p>The target should implement {@link CcLinkParamsInfo}. If it does not,
      * the method does not do anything.
      */
     public Builder addTransitiveTarget(TransitiveInfoCollection target) {
-      return addTransitiveProvider(target.get(CcLinkParamsProvider.CC_LINK_PARAMS));
+      return addTransitiveProvider(target.get(CcLinkParamsInfo.PROVIDER));
     }
 
     /**
@@ -230,9 +230,9 @@
     }
 
     /**
-     * Includes link parameters from a CcLinkParamsProvider provider.
+     * Includes link parameters from a CcLinkParamsInfo provider.
      */
-    public Builder addTransitiveProvider(CcLinkParamsProvider provider) {
+    public Builder addTransitiveProvider(CcLinkParamsInfo provider) {
       if (provider != null) {
         add(provider.getCcLinkParamsStore());
       }
@@ -329,7 +329,7 @@
         CcLinkingOutputs linkingOutputs) {
       addTransitiveTargets(
           context.getPrerequisites("deps", Mode.TARGET),
-          CcLinkParamsProvider.TO_LINK_PARAMS, CcSpecificLinkParamsProvider.TO_LINK_PARAMS);
+          CcLinkParamsInfo.TO_LINK_PARAMS, CcSpecificLinkParamsProvider.TO_LINK_PARAMS);
 
       if (!neverlink) {
         addLibraries(linkingOutputs.getPreferredLibraries(linkingStatically,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
similarity index 77%
rename from src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java
rename to src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
index 1331f7e..5f91a25 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
@@ -24,13 +24,13 @@
 
 /** A target that provides C linker parameters. */
 @Immutable
-public final class CcLinkParamsProvider extends Info {
-  public static final NativeProvider<CcLinkParamsProvider> CC_LINK_PARAMS =
-      new NativeProvider<CcLinkParamsProvider>(CcLinkParamsProvider.class, "link_params") {};
+public final class CcLinkParamsInfo extends Info {
+  public static final NativeProvider<CcLinkParamsInfo> PROVIDER =
+      new NativeProvider<CcLinkParamsInfo>(CcLinkParamsInfo.class, "link_params") {};
   public static final Function<TransitiveInfoCollection, CcLinkParamsStore> TO_LINK_PARAMS =
       input -> {
         // ... then try Skylark.
-        CcLinkParamsProvider provider = input.get(CC_LINK_PARAMS);
+        CcLinkParamsInfo provider = input.get(PROVIDER);
         if (provider != null) {
           return provider.getCcLinkParamsStore();
         }
@@ -39,23 +39,23 @@
 
   private final CcLinkParamsStoreImpl store;
 
-  public CcLinkParamsProvider(CcLinkParamsStore store) {
-    super(CC_LINK_PARAMS, ImmutableMap.<String, Object>of());
+  public CcLinkParamsInfo(CcLinkParamsStore store) {
+    super(PROVIDER, ImmutableMap.<String, Object>of());
     this.store = new CcLinkParamsStoreImpl(store);
   }
 
-  public static CcLinkParamsProvider merge(final Iterable<CcLinkParamsProvider> providers) {
+  public static CcLinkParamsInfo merge(final Iterable<CcLinkParamsInfo> providers) {
     CcLinkParamsStore ccLinkParamsStore =
         new CcLinkParamsStore() {
           @Override
           protected void collect(
               CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) {
-            for (CcLinkParamsProvider provider : providers) {
+            for (CcLinkParamsInfo provider : providers) {
               builder.add(provider.getCcLinkParamsStore());
             }
           }
         };
-    return new CcLinkParamsProvider(ccLinkParamsStore);
+    return new CcLinkParamsInfo(ccLinkParamsStore);
   }
 
   /** Returns the link params store. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
index 9c3961d..8cc4479 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
@@ -28,7 +28,7 @@
  * libraries as in the following example:
  *
  * <pre>
- * class SomeTarget implements CcLinkParamsProvider {
+ * class SomeTarget implements CcLinkParamsInfo {
  *   private final CcLinkParamsStore ccLinkParamsStore = new CcLinkParamsStore() {
  *     @Override
  *     protected void collect(CcLinkParams.Builder builder, boolean linkingStatically,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
index 0cd4ef59..b038c19 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
@@ -62,7 +62,7 @@
               + "(possibly empty but never <code>None</code>)")
   public NestedSet<Artifact> getLibraries() {
     NestedSetBuilder<Artifact> libs = NestedSetBuilder.linkOrder();
-    CcLinkParamsProvider ccLinkParams = getInfo().get(CcLinkParamsProvider.CC_LINK_PARAMS);
+    CcLinkParamsInfo ccLinkParams = getInfo().get(CcLinkParamsInfo.PROVIDER);
     if (ccLinkParams == null) {
       return libs.build();
     }
@@ -81,7 +81,7 @@
               + "<code>MOSTLY STATIC</code> mode (<code>linkstatic=1</code>) "
               + "(possibly empty but never <code>None</code>)")
   public ImmutableList<String> getLinkopts() {
-    CcLinkParamsProvider ccLinkParams = getInfo().get(CcLinkParamsProvider.CC_LINK_PARAMS);
+    CcLinkParamsInfo ccLinkParams = getInfo().get(CcLinkParamsInfo.PROVIDER);
     if (ccLinkParams == null) {
       return ImmutableList.of();
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
index 97fdf98..0a1f13f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
@@ -26,7 +26,7 @@
 import com.google.devtools.build.lib.analysis.FileProvider;
 import com.google.devtools.build.lib.analysis.LicensesProvider;
 import com.google.devtools.build.lib.analysis.LicensesProvider.TargetLicense;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.MiddlemanProvider;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
@@ -381,13 +381,13 @@
             builtInIncludeDirectories,
             sysroot);
 
-    MakeVariableProvider makeVariableProvider =
+    MakeVariableInfo makeVariableInfo =
         createMakeVariableProvider(cppConfiguration, sysroot);
 
     RuleConfiguredTargetBuilder builder =
         new RuleConfiguredTargetBuilder(ruleContext)
             .addNativeDeclaredProvider(ccProvider)
-            .addNativeDeclaredProvider(makeVariableProvider)
+            .addNativeDeclaredProvider(makeVariableInfo)
             .addProvider(
                 fdoSupport.getFdoSupport().createFdoSupportProvider(ruleContext, profileArtifact))
             .setFilesToBuild(new NestedSetBuilder<Artifact>(Order.STABLE_ORDER).build())
@@ -508,7 +508,7 @@
         : NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER);
   }
 
-  private MakeVariableProvider createMakeVariableProvider(
+  private MakeVariableInfo createMakeVariableProvider(
       CppConfiguration cppConfiguration, PathFragment sysroot) {
 
     HashMap<String, String> makeVariables =
@@ -521,7 +521,7 @@
       ccFlags = ccFlags.isEmpty() ? sysrootFlag : ccFlags + " " + sysrootFlag;
       makeVariables.put(CppConfiguration.CC_FLAGS_MAKE_VARIABLE_NAME, ccFlags);
     }
-    return new MakeVariableProvider(ImmutableMap.copyOf(makeVariables));
+    return new MakeVariableInfo(ImmutableMap.copyOf(makeVariables));
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
index 182646f..c691d43 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
@@ -22,7 +22,7 @@
 import static com.google.devtools.build.lib.syntax.Type.STRING;
 
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -63,7 +63,7 @@
     return builder
         .setUndocumented()
         .requiresConfigurationFragments(CppConfiguration.class)
-        .advertiseProvider(MakeVariableProvider.class)
+        .advertiseProvider(MakeVariableInfo.class)
         .add(attr("output_licenses", LICENSE))
         .add(attr("cpu", STRING).mandatory())
         .add(attr("all_files", LABEL).legacyAllowAnyFileType().cfg(HOST).mandatory())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java
index fd9db56..e7d2089 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java
@@ -38,7 +38,7 @@
     NestedSetBuilder<Artifact> filesToBuild = NestedSetBuilder.stableOrder();
     for (TransitiveInfoCollection dep : ruleContext.getPrerequisiteMap("toolchains").values()) {
       CcToolchainProvider provider =
-          (CcToolchainProvider) dep.get(ToolchainInfo.SKYLARK_CONSTRUCTOR);
+          (CcToolchainProvider) dep.get(ToolchainInfo.PROVIDER);
       if (provider != null) {
         filesToBuild.addTransitive(provider.getCrosstool());
       }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 596a991..aca9e31 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -320,11 +320,11 @@
   public static CcToolchainProvider getToolchain(RuleContext ruleContext,
       TransitiveInfoCollection dep) {
     // TODO(bazel-team): Consider checking this generally at the attribute level.
-    if ((dep == null) || (dep.get(ToolchainInfo.SKYLARK_CONSTRUCTOR) == null)) {
+    if ((dep == null) || (dep.get(ToolchainInfo.PROVIDER) == null)) {
       ruleContext.ruleError("The selected C++ toolchain is not a cc_toolchain rule");
       return CcToolchainProvider.EMPTY_TOOLCHAIN_IS_ERROR;
     }
-    return (CcToolchainProvider) dep.get(ToolchainInfo.SKYLARK_CONSTRUCTOR);
+    return (CcToolchainProvider) dep.get(ToolchainInfo.PROVIDER);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
index dd313b1..c6a1f2a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
@@ -22,7 +22,7 @@
 import static com.google.devtools.build.lib.syntax.Type.STRING;
 
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -109,7 +109,7 @@
         .add(
             attr("toolchains", LABEL_LIST)
                 .allowedFileTypes(FileTypeSet.NO_FILE)
-                .mandatoryProviders(MakeVariableProvider.SKYLARK_CONSTRUCTOR.id())
+                .mandatoryProviders(MakeVariableInfo.PROVIDER.id())
         )
         /* <!-- #BLAZE_RULE(genrule).ATTRIBUTE(outs) -->
         A list of files generated by this rule.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 48a3afd..9a093d1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -502,9 +502,9 @@
 
     // Add the JDK files if it comes from the source repository (see java_stub_template.txt).
     TransitiveInfoCollection javabaseTarget = ruleContext.getPrerequisite(":jvm", Mode.TARGET);
-    JavaRuntimeProvider javaRuntime = null;
+    JavaRuntimeInfo javaRuntime = null;
     if (javabaseTarget != null) {
-      javaRuntime = javabaseTarget.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR);
+      javaRuntime = javabaseTarget.get(JavaRuntimeInfo.PROVIDER);
       builder.addTransitiveArtifacts(javaRuntime.javaBaseInputs());
 
       // Add symlinks to the C++ runtime libraries under a path that can be built
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index 9838cb7..79475b2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -289,7 +289,7 @@
       builder.add(outDeps);
     }
 
-    for (JavaCompilationArgsProvider provider : JavaProvider.getProvidersFromListOfTargets(
+    for (JavaCompilationArgsProvider provider : JavaInfo.getProvidersFromListOfTargets(
         JavaCompilationArgsProvider.class, getExports(ruleContext))) {
       builder.addTransitive(provider.getCompileTimeJavaDependencyArtifacts());
     }
@@ -369,7 +369,7 @@
     NestedSetBuilder<Artifact> builder = NestedSetBuilder.<Artifact>stableOrder()
         .addAll(targetSrcJars);
 
-    for (JavaSourceJarsProvider sourceJarsProvider : JavaProvider.getProvidersFromListOfTargets(
+    for (JavaSourceJarsProvider sourceJarsProvider : JavaInfo.getProvidersFromListOfTargets(
         JavaSourceJarsProvider.class, getDependencies())) {
       builder.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
     }
@@ -465,14 +465,14 @@
   }
 
   public static PathFragment getHostJavaExecutable(RuleContext ruleContext) {
-    JavaRuntimeProvider javaRuntime = JavaHelper.getHostJavaRuntime(ruleContext);
+    JavaRuntimeInfo javaRuntime = JavaHelper.getHostJavaRuntime(ruleContext);
     return javaRuntime != null
         ? javaRuntime.javaBinaryExecPath()
         : ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable();
   }
 
   public static PathFragment getJavaExecutable(RuleContext ruleContext) {
-    JavaRuntimeProvider javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
+    JavaRuntimeInfo javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
     return javaRuntime != null
         ? javaRuntime.javaBinaryExecPath()
         : ruleContext.getFragment(Jvm.class).getJavaExecutable();
@@ -486,7 +486,7 @@
       RuleContext ruleContext, @Nullable Artifact launcher) {
     Preconditions.checkState(ruleContext.getConfiguration().hasFragment(Jvm.class));
     PathFragment javaExecutable;
-    JavaRuntimeProvider javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
+    JavaRuntimeInfo javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
 
     if (launcher != null) {
       javaExecutable = launcher.getRootRelativePath();
@@ -786,7 +786,7 @@
   private static Iterable<JavaPluginInfoProvider> getPluginInfoProvidersForAttribute(
       RuleContext ruleContext, String attribute, Mode mode) {
     if (ruleContext.attributes().has(attribute, BuildType.LABEL_LIST)) {
-      return JavaProvider.getProvidersFromListOfTargets(
+      return JavaInfo.getProvidersFromListOfTargets(
           JavaPluginInfoProvider.class, ruleContext.getPrerequisites(attribute, mode));
     }
     return ImmutableList.of();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java
index 5b45b57..f30705b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java
@@ -162,7 +162,7 @@
     public Builder addTransitiveTarget(TransitiveInfoCollection dep, boolean recursive,
         ClasspathType type) {
       JavaCompilationArgsProvider provider =
-          JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep);
+          JavaInfo.getProvider(JavaCompilationArgsProvider.class, dep);
       if (provider != null) {
         addTransitiveCompilationArgs(provider, recursive, type);
         return this;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index 3b75c46..a118f5b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -681,7 +681,7 @@
       List<JavaCompilationArgsProvider> compilationArgsProviders = new LinkedList<>();
       for (TransitiveInfoCollection dep : deps) {
         JavaCompilationArgsProvider provider =
-            JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep);
+            JavaInfo.getProvider(JavaCompilationArgsProvider.class, dep);
         if (provider != null) {
           compilationArgsProviders.add(provider);
         }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
index d7032fa..dd27690 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
@@ -149,22 +149,22 @@
         ruleContext, ":host_jdk" + implicitAttributesSuffix, Mode.HOST);
   }
 
-  public static JavaRuntimeProvider getJavaRuntime(RuleContext ruleContext) {
+  public static JavaRuntimeInfo getJavaRuntime(RuleContext ruleContext) {
     if (!ruleContext.attributes().has(":jvm", BuildType.LABEL)) {
       return null;
     }
 
     TransitiveInfoCollection jvm = ruleContext.getPrerequisite(":jvm", Mode.TARGET);
-    return jvm == null ? null :  jvm.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR);
+    return jvm == null ? null :  jvm.get(JavaRuntimeInfo.PROVIDER);
   }
 
-  public static JavaRuntimeProvider getHostJavaRuntime(RuleContext ruleContext) {
+  public static JavaRuntimeInfo getHostJavaRuntime(RuleContext ruleContext) {
     if (!ruleContext.attributes().has(":host_jdk", BuildType.LABEL)) {
       return null;
     }
 
     TransitiveInfoCollection jvm = ruleContext.getPrerequisite(":host_jdk", Mode.HOST);
-    return jvm == null ? null :  jvm.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR);
+    return jvm == null ? null :  jvm.get(JavaRuntimeInfo.PROVIDER);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 39ca6ae..3157f31 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
 import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
 import com.google.devtools.build.lib.rules.cpp.LinkerInput;
@@ -112,7 +112,7 @@
       protected void collect(CcLinkParams.Builder builder, boolean linkingStatically,
                              boolean linkShared) {
         builder.addTransitiveTargets(common.targetsTreatedAsDeps(ClasspathType.BOTH),
-            JavaCcLinkParamsProvider.TO_LINK_PARAMS, CcLinkParamsProvider.TO_LINK_PARAMS);
+            JavaCcLinkParamsProvider.TO_LINK_PARAMS, CcLinkParamsInfo.TO_LINK_PARAMS);
       }
     };
     RuleConfiguredTargetBuilder ruleBuilder =
@@ -156,7 +156,7 @@
     JavaCompilationArgsProvider compilationArgsProvider =
         JavaCompilationArgsProvider.create(javaCompilationArgs, recursiveJavaCompilationArgs);
     common.addTransitiveInfoProviders(ruleBuilder, filesToBuild, null);
-    JavaProvider javaProvider = JavaProvider.Builder.create()
+    JavaInfo javaInfo = JavaInfo.Builder.create()
         .addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
         .addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
         .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
@@ -165,14 +165,14 @@
         .setFilesToBuild(filesToBuild)
         .addSkylarkTransitiveInfo(
             JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
-        .addNativeDeclaredProvider(javaProvider)
+        .addNativeDeclaredProvider(javaInfo)
         .add(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
         .add(
             JavaRuntimeJarProvider.class,
             new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars()))
         .add(JavaNeverlinkInfoProvider.class, new JavaNeverlinkInfoProvider(neverLink))
         .add(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
-        .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore))
+        .addNativeDeclaredProvider(new CcLinkParamsInfo(ccLinkParamsStore))
         .add(JavaCompilationArgsProvider.class, compilationArgsProvider)
         .add(
             JavaNativeLibraryProvider.class,
@@ -193,7 +193,7 @@
     if (srcJar != null) {
       transitiveJavaSourceJarBuilder.add(srcJar);
     }
-    for (JavaSourceJarsProvider other : JavaProvider.getProvidersFromListOfTargets(
+    for (JavaSourceJarsProvider other : JavaInfo.getProvidersFromListOfTargets(
         JavaSourceJarsProvider.class, ruleContext.getPrerequisites("exports", Mode.TARGET))) {
       transitiveJavaSourceJarBuilder.addTransitive(other.getTransitiveSourceJars());
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
similarity index 78%
rename from src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
rename to src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
index d701b37..81da786 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
@@ -34,10 +34,10 @@
 
 /** A Skylark declared provider that encapsulates all providers that are needed by Java rules. */
 @Immutable
-public final class JavaProvider extends Info {
+public final class JavaInfo extends Info {
 
-  public static final NativeProvider<JavaProvider> JAVA_PROVIDER =
-      new NativeProvider<JavaProvider>(JavaProvider.class, "java_common.provider") {};
+  public static final NativeProvider<JavaInfo> PROVIDER =
+      new NativeProvider<JavaInfo>(JavaInfo.class, "java_common.provider") {};
 
   private static final ImmutableSet<Class<? extends TransitiveInfoProvider>> ALLOWED_PROVIDERS =
       ImmutableSet.of(
@@ -62,21 +62,21 @@
   }
 
   /**
-   * Merges the given providers into one {@link JavaProvider}. All the providers with the same type
+   * Merges the given providers into one {@link JavaInfo}. All the providers with the same type
    * in the given list are merged into one provider that is added to the resulting
-   * {@link JavaProvider}.
+   * {@link JavaInfo}.
    */
-  public static JavaProvider merge(List<JavaProvider> providers) {
+  public static JavaInfo merge(List<JavaInfo> providers) {
     List<JavaCompilationArgsProvider> javaCompilationArgsProviders =
-        JavaProvider.fetchProvidersFromList(providers, JavaCompilationArgsProvider.class);
+        JavaInfo.fetchProvidersFromList(providers, JavaCompilationArgsProvider.class);
     List<JavaSourceJarsProvider> javaSourceJarsProviders =
-        JavaProvider.fetchProvidersFromList(providers, JavaSourceJarsProvider.class);
+        JavaInfo.fetchProvidersFromList(providers, JavaSourceJarsProvider.class);
     List<ProtoJavaApiInfoAspectProvider> protoJavaApiInfoAspectProviders =
-        JavaProvider.fetchProvidersFromList(providers, ProtoJavaApiInfoAspectProvider.class);
+        JavaInfo.fetchProvidersFromList(providers, ProtoJavaApiInfoAspectProvider.class);
     List<JavaRunfilesProvider> javaRunfilesProviders =
-        JavaProvider.fetchProvidersFromList(providers, JavaRunfilesProvider.class);
+        JavaInfo.fetchProvidersFromList(providers, JavaRunfilesProvider.class);
     List<JavaPluginInfoProvider> javaPluginInfoProviders =
-        JavaProvider.fetchProvidersFromList(providers, JavaPluginInfoProvider.class);
+        JavaInfo.fetchProvidersFromList(providers, JavaPluginInfoProvider.class);
 
     Runfiles mergedRunfiles = Runfiles.EMPTY;
     for (JavaRunfilesProvider javaRunfilesProvider : javaRunfilesProviders) {
@@ -84,7 +84,7 @@
       mergedRunfiles = mergedRunfiles == Runfiles.EMPTY ? runfiles : mergedRunfiles.merge(runfiles);
     }
 
-    return JavaProvider.Builder.create()
+    return JavaInfo.Builder.create()
         .addProvider(
             JavaCompilationArgsProvider.class,
             JavaCompilationArgsProvider.merge(javaCompilationArgsProviders))
@@ -104,16 +104,16 @@
 
   /**
    * Returns a list of providers of the specified class, fetched from the given list of
-   * {@link JavaProvider}s.
+   * {@link JavaInfo}s.
    * Returns an empty list if no providers can be fetched.
    * Returns a list of the same size as the given list if the requested providers are of type
    * JavaCompilationArgsProvider.
    */
   public static <C extends TransitiveInfoProvider> List<C> fetchProvidersFromList(
-      Iterable<JavaProvider> javaProviders, Class<C> providersClass) {
+      Iterable<JavaInfo> javaProviders, Class<C> providersClass) {
     List<C> fetchedProviders = new LinkedList<>();
-    for (JavaProvider javaProvider : javaProviders) {
-      C provider = javaProvider.getProvider(providersClass);
+    for (JavaInfo javaInfo : javaProviders) {
+      C provider = javaInfo.getProvider(providersClass);
       if (provider != null) {
         fetchedProviders.add(provider);
       }
@@ -123,11 +123,11 @@
 
   /**
    * Returns a provider of the specified class, fetched from the specified target or, if not found,
-   * from the JavaProvider of the given target. JavaProvider can be found as a declared provider
+   * from the JavaInfo of the given target. JavaInfo can be found as a declared provider
    * in SkylarkProviders.
    * Returns null if no such provider exists.
    *
-   * <p>A target can either have both the specified provider and JavaProvider that encapsulates the
+   * <p>A target can either have both the specified provider and JavaInfo that encapsulates the
    * same information, or just one of them.</p>
    */
   @Nullable
@@ -137,12 +137,12 @@
     if (provider != null) {
       return provider;
     }
-    JavaProvider javaProvider =
-        (JavaProvider) target.get(JavaProvider.JAVA_PROVIDER.getKey());
-    if (javaProvider == null) {
+    JavaInfo javaInfo =
+        (JavaInfo) target.get(JavaInfo.PROVIDER.getKey());
+    if (javaInfo == null) {
       return null;
     }
-    return javaProvider.getProvider(providerClass);
+    return javaInfo.getProvider(providerClass);
   }
 
   public static <T extends TransitiveInfoProvider> List<T> getProvidersFromListOfTargets(
@@ -159,14 +159,14 @@
 
   /**
    * Returns a list of the given provider class with all the said providers retrieved from the
-   * given {@link JavaProvider}s.
+   * given {@link JavaInfo}s.
    */
   public static <T extends TransitiveInfoProvider> ImmutableList<T>
       getProvidersFromListOfJavaProviders(
-          Class<T> providerClass, Iterable<JavaProvider> javaProviders) {
+          Class<T> providerClass, Iterable<JavaInfo> javaProviders) {
     ImmutableList.Builder<T> providersList = new ImmutableList.Builder<>();
-    for (JavaProvider javaProvider : javaProviders) {
-      T provider = javaProvider.getProvider(providerClass);
+    for (JavaInfo javaInfo : javaProviders) {
+      T provider = javaInfo.getProvider(providerClass);
       if (provider != null) {
         providersList.add(provider);
       }
@@ -174,8 +174,8 @@
     return providersList.build();
   }
 
-  private JavaProvider(TransitiveInfoProviderMap providers) {
-    super(JAVA_PROVIDER, ImmutableMap.<String, Object>of(
+  private JavaInfo(TransitiveInfoProviderMap providers) {
+    super(PROVIDER, ImmutableMap.<String, Object>of(
         "transitive_runtime_jars", SkylarkNestedSet.of(
             Artifact.class,
             providers.getProvider(JavaCompilationArgsProvider.class)
@@ -193,7 +193,7 @@
   }
 
   /**
-   * A Builder for {@link JavaProvider}.
+   * A Builder for {@link JavaInfo}.
    */
   public static class Builder {
     TransitiveInfoProviderMapBuilder providerMap;
@@ -206,9 +206,9 @@
       return new Builder(new TransitiveInfoProviderMapBuilder());
     }
 
-    public static Builder copyOf(JavaProvider javaProvider) {
+    public static Builder copyOf(JavaInfo javaInfo) {
       return new Builder(
-          new TransitiveInfoProviderMapBuilder().addAll(javaProvider.getProviders()));
+          new TransitiveInfoProviderMapBuilder().addAll(javaInfo.getProviders()));
     }
 
     public <P extends TransitiveInfoProvider> Builder addProvider(
@@ -218,9 +218,9 @@
       return this;
     }
 
-    public JavaProvider build() {
+    public JavaInfo build() {
       Preconditions.checkArgument(providerMap.contains(JavaCompilationArgsProvider.class));
-      return new JavaProvider(providerMap.build());
+      return new JavaInfo(providerMap.build());
     }
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index b1e5ab2..5932b19 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -27,7 +27,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
 import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
 import com.google.devtools.build.lib.rules.cpp.LinkerInput;
@@ -175,7 +175,7 @@
       protected void collect(CcLinkParams.Builder builder, boolean linkingStatically,
                              boolean linkShared) {
         builder.addTransitiveTargets(common.targetsTreatedAsDeps(ClasspathType.BOTH),
-            JavaCcLinkParamsProvider.TO_LINK_PARAMS, CcLinkParamsProvider.TO_LINK_PARAMS);
+            JavaCcLinkParamsProvider.TO_LINK_PARAMS, CcLinkParamsInfo.TO_LINK_PARAMS);
       }
     };
 
@@ -183,7 +183,7 @@
         ProtoJavaApiInfoAspectProvider.builder();
     for (TransitiveInfoCollection dep : common.getDependencies()) {
       ProtoJavaApiInfoAspectProvider protoProvider =
-          JavaProvider.getProvider(ProtoJavaApiInfoAspectProvider.class, dep);
+          JavaInfo.getProvider(ProtoJavaApiInfoAspectProvider.class, dep);
       if (protoProvider != null) {
         protoAspectBuilder.addTransitive(protoProvider);
       }
@@ -213,7 +213,7 @@
 
     NestedSet<Artifact> proguardSpecs = new ProguardLibrary(ruleContext).collectProguardSpecs();
 
-    CcLinkParamsProvider ccLinkParamsProvider = new CcLinkParamsProvider(ccLinkParamsStore);
+    CcLinkParamsInfo ccLinkParamsInfo = new CcLinkParamsInfo(ccLinkParamsStore);
     JavaPluginInfoProvider pluginInfoProvider = isJavaPluginRule
         // For java_plugin we create the provider with content retrieved from the rule attributes.
         ? common.getJavaPluginInfoProvider(ruleContext)
@@ -221,7 +221,7 @@
         : JavaCommon.getTransitivePlugins(ruleContext);
 
     // java_library doesn't need to return JavaRunfilesProvider
-    JavaProvider javaProvider = JavaProvider.Builder.create()
+    JavaInfo javaInfo = JavaInfo.Builder.create()
         .addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
         .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
         .addProvider(ProtoJavaApiInfoAspectProvider.class, protoAspectBuilder.build())
@@ -241,14 +241,14 @@
         .addProvider(new JavaNeverlinkInfoProvider(neverLink))
         .addProvider(transitiveCppDeps)
         .addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
-        .addNativeDeclaredProvider(ccLinkParamsProvider)
+        .addNativeDeclaredProvider(ccLinkParamsInfo)
         .addProvider(new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
         .addProvider(JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
         // TODO(bazel-team): this should only happen for java_plugin
         .addProvider(pluginInfoProvider)
         .addProvider(new ProguardSpecProvider(proguardSpecs))
         .addProvider(sourceJarsProvider)
-        .addNativeDeclaredProvider(javaProvider)
+        .addNativeDeclaredProvider(javaInfo)
         .addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveSourceJars)
         .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, proguardSpecs);
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRunfilesProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRunfilesProvider.java
index 67291a5..eea5b55 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRunfilesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRunfilesProvider.java
@@ -41,7 +41,7 @@
    */
   public static final Function<TransitiveInfoCollection, Runfiles> TO_RUNFILES =
       (TransitiveInfoCollection input) -> {
-        JavaRunfilesProvider provider = JavaProvider.getProvider(JavaRunfilesProvider.class, input);
+        JavaRunfilesProvider provider = JavaInfo.getProvider(JavaRunfilesProvider.class, input);
         return provider == null ? Runfiles.EMPTY : provider.getRunfiles();
       };
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
index 784ff23..9291fb3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
@@ -19,7 +19,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.CompilationHelper;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.MiddlemanProvider;
 import com.google.devtools.build.lib.analysis.PrerequisiteArtifacts;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
@@ -73,10 +73,10 @@
             .addTransitiveArtifacts(filesToBuild)
             .build();
 
-    JavaRuntimeProvider javaRuntime = new JavaRuntimeProvider(
+    JavaRuntimeInfo javaRuntime = new JavaRuntimeInfo(
         filesToBuild, javaHome, javaBinaryExecPath, javaBinaryRunfilesPath);
 
-    MakeVariableProvider makeVariableProvider = new MakeVariableProvider(ImmutableMap.of(
+    MakeVariableInfo makeVariableInfo = new MakeVariableInfo(ImmutableMap.of(
         "JAVA", javaBinaryExecPath.getPathString(),
         "JAVABASE", javaHome.getPathString()));
 
@@ -85,7 +85,7 @@
         .setFilesToBuild(filesToBuild)
         .addNativeDeclaredProvider(javaRuntime)
         .addProvider(MiddlemanProvider.class, new MiddlemanProvider(middleman))
-        .addNativeDeclaredProvider(makeVariableProvider)
+        .addNativeDeclaredProvider(makeVariableInfo)
         .build();
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java
index 2636372..e1eec2e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java
@@ -20,7 +20,7 @@
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.FileProvider;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.MiddlemanProvider;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
@@ -49,8 +49,8 @@
 
     if (runtime != null) {
       builder
-          .addNativeDeclaredProvider(runtime.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR))
-          .addNativeDeclaredProvider(runtime.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR))
+          .addNativeDeclaredProvider(runtime.get(JavaRuntimeInfo.PROVIDER))
+          .addNativeDeclaredProvider(runtime.get(MakeVariableInfo.PROVIDER))
           .addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
           .addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class))
           .setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
similarity index 87%
rename from src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java
rename to src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
index e7f5708..32b830c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
@@ -27,21 +27,21 @@
 /** Information about the Java runtime used by the <code>java_*</code> rules. */
 @SkylarkModule(name = "JavaRuntimeInfo", doc = "Information about the Java runtime being used.")
 @Immutable
-public class JavaRuntimeProvider extends Info {
+public class JavaRuntimeInfo extends Info {
   public static final String SKYLARK_NAME = "JavaRuntimeInfo";
 
-  public static final NativeProvider<JavaRuntimeProvider> SKYLARK_CONSTRUCTOR =
-      new NativeProvider<JavaRuntimeProvider>(JavaRuntimeProvider.class, SKYLARK_NAME) {};
+  public static final NativeProvider<JavaRuntimeInfo> PROVIDER =
+      new NativeProvider<JavaRuntimeInfo>(JavaRuntimeInfo.class, SKYLARK_NAME) {};
 
   private final NestedSet<Artifact> javaBaseInputs;
   private final PathFragment javaHome;
   private final PathFragment javaBinaryExecPath;
   private final PathFragment javaBinaryRunfilesPath;
 
-  public JavaRuntimeProvider(
+  public JavaRuntimeInfo(
       NestedSet<Artifact> javaBaseInputs, PathFragment javaHome,
       PathFragment javaBinaryExecPath, PathFragment javaBinaryRunfilesPath) {
-    super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+    super(PROVIDER, ImmutableMap.<String, Object>of());
     this.javaBaseInputs = javaBaseInputs;
     this.javaHome = javaHome;
     this.javaBinaryExecPath = javaBinaryExecPath;
@@ -73,7 +73,7 @@
     return javaBinaryRunfilesPath;
   }
 
-  // Not all of JavaRuntimeProvider is exposed to Skylark, which makes implementing deep equality
+  // Not all of JavaRuntimeInfo is exposed to Skylark, which makes implementing deep equality
   // impossible: if Java-only parts are considered, the behavior is surprising in Skylark, if they
   // are not, the behavior is surprising in Java. Thus, object identity it is.
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java
index 88cf23c..b07d7c2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java
@@ -20,7 +20,7 @@
 import static com.google.devtools.build.lib.syntax.Type.STRING;
 
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 import com.google.devtools.build.lib.packages.RuleClass;
@@ -32,7 +32,7 @@
   @Override
   public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
     return builder
-        .advertiseProvider(MakeVariableProvider.class)
+        .advertiseProvider(MakeVariableInfo.class)
         /* <!-- #BLAZE_RULE(java_runtime).ATTRIBUTE(srcs) -->
         All files in the runtime.
         <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java
index 828924a..21fd4d3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java
@@ -16,7 +16,7 @@
 
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.FileProvider;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.MiddlemanProvider;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
@@ -41,14 +41,14 @@
           "could not resolve runtime for cpu " + ruleContext.getConfiguration().getCpu());
     }
 
-    MakeVariableProvider makeVariableProvider =
-        runtime.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR);
+    MakeVariableInfo makeVariableInfo =
+        runtime.get(MakeVariableInfo.PROVIDER);
 
     return new RuleConfiguredTargetBuilder(ruleContext)
-        .addNativeDeclaredProvider(runtime.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR))
+        .addNativeDeclaredProvider(runtime.get(JavaRuntimeInfo.PROVIDER))
         .addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
         .addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class))
-        .addNativeDeclaredProvider(makeVariableProvider)
+        .addNativeDeclaredProvider(makeVariableInfo)
         .setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild())
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java
index 379501e..181beef 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java
@@ -41,7 +41,7 @@
         <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
         .add(
             attr("default", BuildType.LABEL)
-                .mandatoryProviders(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR.id())
+                .mandatoryProviders(JavaRuntimeInfo.PROVIDER.id())
                 .allowedFileTypes(FileTypeSet.NO_FILE))
         .add(attr("output_licenses", LICENSE))
         .build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index 929982d..da255f7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -51,7 +51,7 @@
     doc = "Returns the Java declared provider."
   )
   public Provider getJavaProvider() {
-    return JavaProvider.JAVA_PROVIDER;
+    return JavaInfo.PROVIDER;
   }
 
   @SkylarkCallable(
@@ -120,7 +120,7 @@
       )
     }
   )
-  public JavaProvider create(
+  public JavaInfo create(
       Object compileTimeJars,
       Object runtimeJars,
       Object transitiveCompileTimeJars,
@@ -149,8 +149,8 @@
           .addTransitiveRuntimeJars(transitiveRuntimeJarsNestedSet);
     }
 
-    JavaProvider javaProvider =
-        JavaProvider.Builder.create()
+    JavaInfo javaInfo =
+        JavaInfo.Builder.create()
             .addProvider(
                 JavaCompilationArgsProvider.class,
                 JavaCompilationArgsProvider.create(
@@ -161,7 +161,7 @@
                     NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
                     asArtifactNestedSet(sourceJars)))
             .build();
-    return javaProvider;
+    return javaInfo;
   }
 
   /**
@@ -224,7 +224,7 @@
         positional = false,
         named = true,
         type = SkylarkList.class,
-        generic1 = JavaProvider.class,
+        generic1 = JavaInfo.class,
         defaultValue = "[]",
         doc = "A list of dependencies. Optional."
       ),
@@ -233,7 +233,7 @@
           positional = false,
           named = true,
           type = SkylarkList.class,
-          generic1 = JavaProvider.class,
+          generic1 = JavaInfo.class,
           defaultValue = "[]",
           doc = "A list of exports. Optional."
       ),
@@ -242,7 +242,7 @@
           positional = false,
           named = true,
           type = SkylarkList.class,
-          generic1 = JavaProvider.class,
+          generic1 = JavaInfo.class,
           defaultValue = "[]",
           doc = "A list of plugins. Optional."
       ),
@@ -251,7 +251,7 @@
           positional = false,
           named = true,
           type = SkylarkList.class,
-          generic1 = JavaProvider.class,
+          generic1 = JavaInfo.class,
           defaultValue = "[]",
           doc = "A list of exported plugins. Optional."
       ),
@@ -298,16 +298,16 @@
       )
     }
   )
-  public JavaProvider createJavaCompileAction(
+  public JavaInfo createJavaCompileAction(
       SkylarkRuleContext skylarkRuleContext,
       SkylarkList<Artifact> sourceJars,
       SkylarkList<Artifact> sourceFiles,
       Artifact outputJar,
       SkylarkList<String> javacOpts,
-      SkylarkList<JavaProvider> deps,
-      SkylarkList<JavaProvider> exports,
-      SkylarkList<JavaProvider> plugins,
-      SkylarkList<JavaProvider> exportedPlugins,
+      SkylarkList<JavaInfo> deps,
+      SkylarkList<JavaInfo> exports,
+      SkylarkList<JavaInfo> plugins,
+      SkylarkList<JavaInfo> exportedPlugins,
       String strictDepsMode,
       ConfiguredTarget javaToolchain,
       ConfiguredTarget hostJavabase,
@@ -324,17 +324,17 @@
             .setJavacOpts(javacOpts);
 
     List<JavaCompilationArgsProvider> depsCompilationArgsProviders =
-        JavaProvider.fetchProvidersFromList(deps, JavaCompilationArgsProvider.class);
+        JavaInfo.fetchProvidersFromList(deps, JavaCompilationArgsProvider.class);
     List<JavaCompilationArgsProvider> exportsCompilationArgsProviders =
-        JavaProvider.fetchProvidersFromList(exports, JavaCompilationArgsProvider.class);
+        JavaInfo.fetchProvidersFromList(exports, JavaCompilationArgsProvider.class);
     helper.addAllDeps(depsCompilationArgsProviders);
     helper.addAllExports(exportsCompilationArgsProviders);
     helper.setCompilationStrictDepsMode(getStrictDepsMode(strictDepsMode));
     MiddlemanProvider hostJavabaseProvider = hostJavabase.getProvider(MiddlemanProvider.class);
 
     helper.addAllPlugins(
-        JavaProvider.fetchProvidersFromList(plugins, JavaPluginInfoProvider.class));
-    helper.addAllPlugins(JavaProvider.fetchProvidersFromList(deps, JavaPluginInfoProvider.class));
+        JavaInfo.fetchProvidersFromList(plugins, JavaPluginInfoProvider.class));
+    helper.addAllPlugins(JavaInfo.fetchProvidersFromList(deps, JavaPluginInfoProvider.class));
 
     NestedSet<Artifact> hostJavabaseArtifacts =
         hostJavabaseProvider == null
@@ -362,13 +362,13 @@
 
     JavaPluginInfoProvider transitivePluginsProvider =
         JavaPluginInfoProvider.merge(Iterables.concat(
-          JavaProvider.getProvidersFromListOfJavaProviders(
+          JavaInfo.getProvidersFromListOfJavaProviders(
               JavaPluginInfoProvider.class, exportedPlugins),
-          JavaProvider.getProvidersFromListOfJavaProviders(
+          JavaInfo.getProvidersFromListOfJavaProviders(
               JavaPluginInfoProvider.class, exports)
         ));
 
-    return JavaProvider.Builder.create()
+    return JavaInfo.Builder.create()
              .addProvider(JavaCompilationArgsProvider.class, javaCompilationArgsProvider)
              .addProvider(JavaSourceJarsProvider.class, createJavaSourceJarsProvider(sourceJars))
              .addProvider(JavaRuleOutputJarsProvider.class, javaRuleOutputJarsProvider)
@@ -417,8 +417,8 @@
     // We have one positional argument: the list of providers to merge.
     mandatoryPositionals = 1
   )
-  public static JavaProvider mergeJavaProviders(SkylarkList<JavaProvider> providers) {
-    return JavaProvider.merge(providers);
+  public static JavaInfo mergeJavaProviders(SkylarkList<JavaInfo> providers) {
+    return JavaInfo.merge(providers);
   }
 
   @SkylarkCallable(
@@ -428,11 +428,11 @@
       // There's only one mandatory positional, the Java provider.
       mandatoryPositionals = 1
   )
-  public static JavaProvider makeNonStrict(JavaProvider javaProvider) {
+  public static JavaInfo makeNonStrict(JavaInfo javaInfo) {
     JavaCompilationArgsProvider directCompilationArgs =
-        StrictDepsUtils.makeNonStrict(javaProvider.getProvider(JavaCompilationArgsProvider.class));
+        StrictDepsUtils.makeNonStrict(javaInfo.getProvider(JavaCompilationArgsProvider.class));
 
-    return JavaProvider.Builder.copyOf(javaProvider)
+    return JavaInfo.Builder.copyOf(javaInfo)
         // Overwrites the old provider.
         .addProvider(JavaCompilationArgsProvider.class, directCompilationArgs)
         .build();
@@ -454,13 +454,13 @@
   }
 
   @SkylarkCallable(
-    name = JavaRuntimeProvider.SKYLARK_NAME,
+    name = JavaRuntimeInfo.SKYLARK_NAME,
     doc =
         "The key used to retrieve the provider that contains information about the Java "
             + "runtime being used.",
     structField = true
   )
   public static Provider getJavaRuntimeProvider() {
-    return JavaRuntimeProvider.SKYLARK_CONSTRUCTOR;
+    return JavaRuntimeInfo.PROVIDER;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
index 956db03..507b70c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
@@ -107,7 +107,7 @@
   }
 
   // TODO(b/34175492): eventually the Jvm fragement will containg only the label of a java_runtime
-  // rule, and all of the configuration will be accessed using JavaRuntimeProvider.
+  // rule, and all of the configuration will be accessed using JavaRuntimeInfo.
   private static Jvm createFromRuntimeSuite(
       ConfigurationEnvironment lookup, Rule javaRuntimeSuite, String cpu)
       throws InvalidConfigurationException, InterruptedException, NoSuchTargetException,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
index ac86856..f8dfc6a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
@@ -37,7 +37,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
 import com.google.devtools.build.lib.rules.java.JavaRunfilesProvider;
 import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider;
@@ -81,14 +81,14 @@
 
     JavaRunfilesProvider javaRunfilesProvider = new JavaRunfilesProvider(runfiles);
 
-    JavaProvider javaProvider =
-        JavaProvider.Builder.create()
+    JavaInfo javaInfo =
+        JavaInfo.Builder.create()
             .addProvider(JavaCompilationArgsProvider.class, dependencyArgsProviders)
             .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
             .addProvider(
                 ProtoJavaApiInfoAspectProvider.class,
                 ProtoJavaApiInfoAspectProvider.merge(
-                    JavaProvider.getProvidersFromListOfTargets(
+                    JavaInfo.getProvidersFromListOfTargets(
                         ProtoJavaApiInfoAspectProvider.class,
                         ruleContext.getPrerequisites("deps", TARGET))))
             .addProvider(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.EMPTY)
@@ -107,7 +107,7 @@
         .addProvider(javaRunfilesProvider)
         .addProvider(getJavaLiteRuntimeSpec(ruleContext))
         .addProvider(JavaRuleOutputJarsProvider.EMPTY)
-        .addNativeDeclaredProvider(javaProvider)
+        .addNativeDeclaredProvider(javaInfo)
         .addProvider(createCcLinkParamsStore(ruleContext, ImmutableList.of()))
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
index d7af246..ddd83f1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
 import com.google.devtools.build.lib.rules.java.JavaRunfilesProvider;
 import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider;
@@ -73,14 +73,14 @@
 
     JavaRunfilesProvider javaRunfilesProvider = new JavaRunfilesProvider(runfiles);
 
-    JavaProvider javaProvider =
-        JavaProvider.Builder.create()
+    JavaInfo javaInfo =
+        JavaInfo.Builder.create()
             .addProvider(JavaCompilationArgsProvider.class, dependencyArgsProviders)
             .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
             .addProvider(
                 ProtoJavaApiInfoAspectProvider.class,
                 ProtoJavaApiInfoAspectProvider.merge(
-                    JavaProvider.getProvidersFromListOfTargets(
+                    JavaInfo.getProvidersFromListOfTargets(
                         ProtoJavaApiInfoAspectProvider.class,
                         ruleContext.getPrerequisites("deps", TARGET))))
             .addProvider(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.EMPTY)
@@ -99,7 +99,7 @@
             .addProvider(sourceJarsProvider)
             .addProvider(javaRunfilesProvider)
             .addProvider(JavaRuleOutputJarsProvider.EMPTY)
-            .addNativeDeclaredProvider(javaProvider);
+            .addNativeDeclaredProvider(javaInfo);
 
     if (ruleContext.getFragment(JavaConfiguration.class).jplPropagateCcLinkParamsStore()) {
       result.addProvider(createCcLinkParamsStore(ruleContext, ImmutableList.of()));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
index bd8a1e7..abf8907 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaSemantics;
 import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
 import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
@@ -113,12 +113,12 @@
       @Param(name = "proto_toolchain_attr", positional = false, named = true, type = String.class)
     }
   )
-  public static JavaProvider getRuntimeToolchainProvider(
+  public static JavaInfo getRuntimeToolchainProvider(
       SkylarkRuleContext skylarkRuleContext, String protoToolchainAttr) throws EvalException {
     TransitiveInfoCollection runtime =
         getProtoToolchainProvider(skylarkRuleContext, protoToolchainAttr).runtime();
     return
-        JavaProvider.Builder.create()
+        JavaInfo.Builder.create()
             .addProvider(
                 JavaCompilationArgsProvider.class,
                 runtime.getProvider(JavaCompilationArgsProvider.class))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
index 678d5cd..28db1c7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
 import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
-
 import java.util.ArrayList;
 import java.util.List;
 
@@ -31,7 +30,7 @@
 public class JplCcLinkParams {
 
   /**
-   * Creates a CcLinkParamsProvider based on 'deps' and an explicit list of proto runtimes, in the
+   * Creates a CcLinkParamsInfo based on 'deps' and an explicit list of proto runtimes, in the
    * context of a java_xxx_proto_library and its aspects.
    *
    * @param ruleContext used to extract 'deps'. the 'deps' are expected to provide
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index 88d0dc0..e8549a6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -33,7 +33,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
 import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.cpp.CppHelper;
 import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
@@ -80,9 +80,9 @@
     ImmutableListMultimap<BuildConfiguration, ObjcProvider> configToObjcAvoidDepsMap =
         ruleContext.getPrerequisitesByConfiguration(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME,
             Mode.SPLIT, ObjcProvider.SKYLARK_CONSTRUCTOR);
-    ImmutableListMultimap<BuildConfiguration, CcLinkParamsProvider> configToCcAvoidDepsMap =
+    ImmutableListMultimap<BuildConfiguration, CcLinkParamsInfo> configToCcAvoidDepsMap =
         ruleContext.getPrerequisitesByConfiguration(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME,
-            Mode.SPLIT, CcLinkParamsProvider.CC_LINK_PARAMS);
+            Mode.SPLIT, CcLinkParamsInfo.PROVIDER);
     Iterable<ObjcProtoProvider> avoidProtoProviders =
         ruleContext.getPrerequisites(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME, Mode.TARGET,
             ObjcProtoProvider.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
index c6a8473..24f1f98 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.analysis.Runfiles;
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.analysis.RunfilesSupport;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -228,7 +228,7 @@
     return new RuleConfiguredTargetBuilder(ruleContext)
         .setFilesToBuild(filesToBuildBuilder.build())
         .addProvider(RunfilesProvider.simple(runfiles))
-        .addNativeDeclaredProvider(new ExecutionInfoProvider(execInfoMapBuilder.build()))
+        .addNativeDeclaredProvider(new ExecutionInfo(execInfoMapBuilder.build()))
         .addNativeDeclaredProviders(testSupport.getExtraProviders())
         .addProvider(InstrumentedFilesProvider.class, instrumentedFilesProvider)
         .setRunfilesSupport(runfilesSupport, executable)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
index a8a095f..27e050d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.rules.apple.ApplePlatform;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs;
 import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
@@ -57,7 +57,7 @@
     // this attribute. b/28403953 tracks cc toolchain usage.
     ImmutableListMultimap<BuildConfiguration, ToolchainInfo> configToProvider =
         ruleContext.getPrerequisitesByConfiguration(
-            ObjcRuleClasses.CHILD_CONFIG_ATTR, Mode.SPLIT, ToolchainInfo.SKYLARK_CONSTRUCTOR);
+            ObjcRuleClasses.CHILD_CONFIG_ATTR, Mode.SPLIT, ToolchainInfo.PROVIDER);
 
     ImmutableMap.Builder<BuildConfiguration, CcToolchainProvider> result = ImmutableMap.builder();
     for (BuildConfiguration config : configToProvider.keySet()) {
@@ -273,7 +273,7 @@
               additionalDepProviders);
       ObjcProvider objcProviderWithDylibSymbols = common.getObjcProvider();
       ObjcProvider objcProvider = objcProviderWithDylibSymbols.subtractSubtrees(dylibObjcProviders,
-          ImmutableList.<CcLinkParamsProvider>of());
+          ImmutableList.<CcLinkParamsInfo>of());
 
       childInfoBuilder.add(
           DependencySpecificConfiguration.create(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index 07e0e6b..a58beff 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -68,7 +68,7 @@
 import com.google.devtools.build.lib.packages.NativeProvider;
 import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
 import com.google.devtools.build.lib.util.FileType;
@@ -164,7 +164,7 @@
     private Optional<Artifact> linkedBinary = Optional.absent();
     private Optional<Artifact> linkmapFile = Optional.absent();
     private Iterable<CppCompilationContext> depCcHeaderProviders = ImmutableList.of();
-    private Iterable<CcLinkParamsProvider> depCcLinkProviders = ImmutableList.of();
+    private Iterable<CcLinkParamsInfo> depCcLinkProviders = ImmutableList.of();
 
     /**
      * Builder for {@link ObjcCommon} obtaining both attribute data and configuration data from
@@ -252,14 +252,14 @@
           ImmutableList.<ObjcProvider>builder();
       ImmutableList.Builder<CppCompilationContext> cppDeps =
           ImmutableList.<CppCompilationContext>builder();
-      ImmutableList.Builder<CcLinkParamsProvider> cppDepLinkParams =
-          ImmutableList.<CcLinkParamsProvider>builder();
+      ImmutableList.Builder<CcLinkParamsInfo> cppDepLinkParams =
+          ImmutableList.<CcLinkParamsInfo>builder();
 
       for (TransitiveInfoCollection dep : deps) {
         addAnyProviders(propagatedObjcDeps, dep, ObjcProvider.SKYLARK_CONSTRUCTOR);
         addAnyProviders(cppDeps, dep, CppCompilationContext.class);
         if (isCcLibrary(dep)) {
-          cppDepLinkParams.add(dep.get(CcLinkParamsProvider.CC_LINK_PARAMS));
+          cppDepLinkParams.add(dep.get(CcLinkParamsInfo.PROVIDER));
           addDefines(dep.getProvider(CppCompilationContext.class).getDefines());
         }
       }
@@ -440,7 +440,7 @@
         objcProvider.addAll(INCLUDE_SYSTEM, headerProvider.getSystemIncludeDirs());
         objcProvider.addAll(DEFINE, headerProvider.getDefines());
       }
-      for (CcLinkParamsProvider linkProvider : depCcLinkProviders) {
+      for (CcLinkParamsInfo linkProvider : depCcLinkProviders) {
         CcLinkParams params = linkProvider.getCcLinkParams(true, false);
         ImmutableList<String> linkOpts = params.flattenedLinkopts();
         ImmutableSet.Builder<SdkFramework> frameworkLinkOpts = new ImmutableSet.Builder<>();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index 63cfcd6..bb7429f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
 import com.google.devtools.build.lib.syntax.Type;
 import java.util.Map;
@@ -97,7 +97,7 @@
             InstrumentedFilesProvider.class,
             compilationSupport.getInstrumentedFilesProvider(common))
         .addNativeDeclaredProvider(
-            new CcLinkParamsProvider(new ObjcLibraryCcLinkParamsStore(common)))
+            new CcLinkParamsInfo(new ObjcLibraryCcLinkParamsStore(common)))
         .addOutputGroups(outputGroupCollector)
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index f63d411..502e055 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.packages.Info;
 import com.google.devtools.build.lib.packages.NativeProvider;
 import com.google.devtools.build.lib.packages.NativeProvider.WithLegacySkylarkName;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
 import com.google.devtools.build.lib.rules.cpp.LinkerInputs;
 import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
@@ -586,16 +586,16 @@
   // TODO(b/19795062): Investigate subtraction generalized to NestedSet.
   @SuppressWarnings("unchecked") // Due to depending on Key types, when the keys map erases type.
   public ObjcProvider subtractSubtrees(Iterable<ObjcProvider> avoidObjcProviders,
-      Iterable<CcLinkParamsProvider> avoidCcProviders) {
+      Iterable<CcLinkParamsInfo> avoidCcProviders) {
     // LIBRARY and CC_LIBRARY need to be special cased for objc-cc interop.
     // A library which is a dependency of a cc_library may be present in all or any of
     // three possible locations (and may be duplicated!):
     // 1. ObjcProvider.LIBRARY
     // 2. ObjcProvider.CC_LIBRARY
-    // 3. CcLinkParamsProvider->LibraryToLink->getArtifact()
+    // 3. CcLinkParamsInfo->LibraryToLink->getArtifact()
     // TODO(cpeyser): Clean up objc-cc interop.
     HashSet<PathFragment> avoidLibrariesSet = new HashSet<>();
-    for (CcLinkParamsProvider linkProvider : avoidCcProviders) {
+    for (CcLinkParamsInfo linkProvider : avoidCcProviders) {
       NestedSet<LibraryToLink> librariesToLink =
           linkProvider.getCcLinkParams(true, false).getLibraries();
       for (LibraryToLink libraryToLink : librariesToLink.toList()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
index ffb4e1c..9e69388 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
-import com.google.devtools.build.lib.analysis.test.TestEnvironmentProvider;
+import com.google.devtools.build.lib.analysis.test.TestEnvironmentInfo;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.packages.Info;
@@ -274,7 +274,7 @@
       envBuilder.put("APPLE_COVERAGE", "1");
     }
 
-    return ImmutableList.<Info>of(new TestEnvironmentProvider(envBuilder.build()));
+    return ImmutableList.<Info>of(new TestEnvironmentInfo(envBuilder.build()));
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java
index ca95be9..b2ebaa0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java
@@ -49,7 +49,7 @@
                 .allowedRuleClasses(ConstraintSettingRule.RULE_NAME)
                 .allowedFileTypes(FileTypeSet.NO_FILE)
                 .mandatoryProviders(
-                    ImmutableList.of(ConstraintSettingInfo.SKYLARK_CONSTRUCTOR.id())))
+                    ImmutableList.of(ConstraintSettingInfo.PROVIDER.id())))
         .removeAttribute("deps")
         .removeAttribute("data")
         .exemptFromConstraintChecking("this rule *defines* a constraint")
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java
index c793dea..fdbd31b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java
@@ -49,7 +49,7 @@
     structField = true
   )
   public Provider getConstraintSettingInfoConstructor() {
-    return ConstraintSettingInfo.SKYLARK_CONSTRUCTOR;
+    return ConstraintSettingInfo.PROVIDER;
   }
 
   @SkylarkCallable(
@@ -72,7 +72,7 @@
     structField = true
   )
   public Provider getToolchainInfoConstructor() {
-    return ToolchainInfo.SKYLARK_CONSTRUCTOR;
+    return ToolchainInfo.PROVIDER;
   }
 
   static {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
index 9f809dd..9ca8d90 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
@@ -26,7 +26,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.ArrayList;
@@ -118,7 +118,7 @@
         .setFilesToBuild(common.getFilesToBuild())
         .add(RunfilesProvider.class, runfilesProvider)
         .setRunfilesSupport(runfilesSupport, realExecutable)
-        .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore))
+        .addNativeDeclaredProvider(new CcLinkParamsInfo(ccLinkParamsStore))
         .add(PythonImportsProvider.class, new PythonImportsProvider(imports));
   }
 
@@ -146,7 +146,7 @@
                              boolean linkShared) {
         builder.addTransitiveTargets(ruleContext.getPrerequisites("deps", Mode.TARGET),
             PyCcLinkParamsProvider.TO_LINK_PARAMS,
-            CcLinkParamsProvider.TO_LINK_PARAMS);
+            CcLinkParamsInfo.TO_LINK_PARAMS);
       }
     };
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java
index 762af4fc..20399cf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.ArrayList;
@@ -67,7 +67,7 @@
                              boolean linkShared) {
         builder.addTransitiveTargets(ruleContext.getPrerequisites("deps", Mode.TARGET),
             PyCcLinkParamsProvider.TO_LINK_PARAMS,
-            CcLinkParamsProvider.TO_LINK_PARAMS);
+            CcLinkParamsInfo.TO_LINK_PARAMS);
       }
     };
 
@@ -92,7 +92,7 @@
     return builder
         .setFilesToBuild(filesToBuild)
         .add(RunfilesProvider.class, RunfilesProvider.simple(runfilesBuilder.build()))
-        .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore))
+        .addNativeDeclaredProvider(new CcLinkParamsInfo(ccLinkParamsStore))
         .add(PythonImportsProvider.class, new PythonImportsProvider(imports))
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModule.java b/src/main/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModule.java
index 81ce518..d953026 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModule.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.rules.test;
 
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
-import com.google.devtools.build.lib.analysis.test.TestEnvironmentProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
+import com.google.devtools.build.lib.analysis.test.TestEnvironmentInfo;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
@@ -30,11 +30,11 @@
 public class SkylarkTestingModule {
 
   // TODO(bazel-team): Change this BuiltinFunction to be the actual
-  // ExecutionInfoProvider.SKYLARK_CONSTRUCTOR.
+  // ExecutionInfo.PROVIDER.
   @SkylarkSignature(
     name = "ExecutionInfo",
     objectType = SkylarkTestingModule.class,
-    returnType = ExecutionInfoProvider.class,
+    returnType = ExecutionInfo.class,
     doc =
         "Creates a new execution info provider. Use this provider to specify special"
             + "environments requirements needed to run tests.",
@@ -56,17 +56,17 @@
       new BuiltinFunction("ExecutionInfo") {
         @SuppressWarnings("unused")
         // This method is registered statically for skylark, and never called directly.
-        public ExecutionInfoProvider invoke(SkylarkTestingModule self, SkylarkDict requirements) {
-          return new ExecutionInfoProvider(requirements);
+        public ExecutionInfo invoke(SkylarkTestingModule self, SkylarkDict requirements) {
+          return new ExecutionInfo(requirements);
         }
       };
 
   // TODO(bazel-team): Change this BuiltinFunction to be the actual
-  // TestEnvironmentProvider.SKYLARK_CONSTRUCTOR.
+  // TestEnvironmentInfo.PROVIDER.
   @SkylarkSignature(
     name = "TestEnvironment",
     objectType = SkylarkTestingModule.class,
-    returnType = TestEnvironmentProvider.class,
+    returnType = TestEnvironmentInfo.class,
     doc =
         "Creates a new test environment provider. Use this provider to specify extra"
             + "environment variables to be made available during test execution.",
@@ -87,8 +87,8 @@
       new BuiltinFunction("TestEnvironment") {
         @SuppressWarnings("unused")
         // This method is registered statically for skylark, and never called directly.
-        public TestEnvironmentProvider invoke(SkylarkTestingModule self, SkylarkDict environment) {
-          return new TestEnvironmentProvider(environment);
+        public TestEnvironmentInfo invoke(SkylarkTestingModule self, SkylarkDict environment) {
+          return new TestEnvironmentInfo(environment);
         }
       };
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
index dab0cc4..02e82ad 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
@@ -16,7 +16,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -29,7 +29,7 @@
   public void testSmoke() throws Exception {
     ConfiguredTarget cc = getConfiguredTarget(getRuleClassProvider().getToolsRepository()
         + "//tools/cpp:toolchain_type");
-    assertThat(cc.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR).getMakeVariables())
+    assertThat(cc.get(MakeVariableInfo.PROVIDER).getMakeVariables())
         .containsKey("TARGET_CPU");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDeviceTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDeviceTest.java
index 7650b01..73f386b 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDeviceTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDeviceTest.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import java.io.IOException;
 import java.util.HashSet;
@@ -167,10 +167,10 @@
             getToolDependencyExecPathString("//tools/android/emulator:support_file1"),
             getToolDependencyExecPathString("//tools/android/emulator:support_file2"));
 
-    assertThat(target.get(ExecutionInfoProvider.SKYLARK_CONSTRUCTOR.getKey())).isNotNull();
-    ExecutionInfoProvider executionInfoProvider =
-        target.get(ExecutionInfoProvider.SKYLARK_CONSTRUCTOR);
-    assertThat(executionInfoProvider.getExecutionInfo()).doesNotContainKey(REQUIRES_KVM);
+    assertThat(target.get(ExecutionInfo.PROVIDER.getKey())).isNotNull();
+    ExecutionInfo executionInfo =
+        target.get(ExecutionInfo.PROVIDER);
+    assertThat(executionInfo.getExecutionInfo()).doesNotContainKey(REQUIRES_KVM);
     TemplateExpansionAction stubAction = (TemplateExpansionAction) getGeneratingAction(
         getExecutable(target));
     String stubContents = stubAction.getFileContents();
@@ -227,8 +227,8 @@
 
     assertThat(action.getExecutionInfo())
         .containsEntry(REQUIRES_KVM, "");
-    assertThat(target.get(ExecutionInfoProvider.SKYLARK_CONSTRUCTOR.getKey())).isNotNull();
-    assertThat(target.get(ExecutionInfoProvider.SKYLARK_CONSTRUCTOR).getExecutionInfo())
+    assertThat(target.get(ExecutionInfo.PROVIDER.getKey())).isNotNull();
+    assertThat(target.get(ExecutionInfo.PROVIDER).getExecutionInfo())
         .containsKey(REQUIRES_KVM);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index 0413689..a388e41 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -226,7 +226,7 @@
     ConfiguredTarget hello = getConfiguredTarget("//hello:hello");
     assertThat(
             hello
-                .get(CcLinkParamsProvider.CC_LINK_PARAMS)
+                .get(CcLinkParamsInfo.PROVIDER)
                 .getCcLinkParams(false, false)
                 .getLinkopts()
                 .isEmpty())
@@ -1149,7 +1149,7 @@
     Iterable<Artifact> libraries =
         LinkerInputs.toNonSolibArtifacts(
             target
-                .get(CcLinkParamsProvider.CC_LINK_PARAMS)
+                .get(CcLinkParamsInfo.PROVIDER)
                 .getCcLinkParams(true, true)
                 .getLibraries());
     assertThat(artifactsToStrings(libraries)).contains("bin a/libfoo.a");
@@ -1164,7 +1164,7 @@
     Iterable<Artifact> libraries =
         LinkerInputs.toNonSolibArtifacts(
             target
-                .get(CcLinkParamsProvider.CC_LINK_PARAMS)
+                .get(CcLinkParamsInfo.PROVIDER)
                 .getCcLinkParams(true, true)
                 .getLibraries());
     assertThat(artifactsToStrings(libraries)).doesNotContain("bin a/libfoo.a");
@@ -1180,7 +1180,7 @@
     Iterable<Artifact> libraries =
         LinkerInputs.toNonSolibArtifacts(
             target
-                .get(CcLinkParamsProvider.CC_LINK_PARAMS)
+                .get(CcLinkParamsInfo.PROVIDER)
                 .getCcLinkParams(true, true)
                 .getLibraries());
     assertThat(artifactsToStrings(libraries)).doesNotContain("src a/libfoo.so");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
index a8939a5..fa12efd 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
@@ -114,6 +114,6 @@
   public void testToolchainAlias() throws Exception {
     ConfiguredTarget reference = scratchConfiguredTarget("a", "ref",
         "cc_toolchain_alias(name='ref')");
-    assertThat(reference.get(CcToolchainProvider.SKYLARK_CONSTRUCTOR.getKey())).isNotNull();
+    assertThat(reference.get(CcToolchainProvider.PROVIDER.getKey())).isNotNull();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
index 0f0df44..f879b16 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
@@ -21,7 +21,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.config.CompilationMode;
 import com.google.devtools.build.lib.analysis.config.ConfigurationEnvironment;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -163,7 +163,7 @@
   private CcToolchainProvider getCcToolchainProvider(CppConfiguration cppConfiguration)
       throws Exception {
     return (CcToolchainProvider)
-        getCcToolchainTarget(cppConfiguration).get(ToolchainInfo.SKYLARK_CONSTRUCTOR);
+        getCcToolchainTarget(cppConfiguration).get(ToolchainInfo.PROVIDER);
   }
 
   /**
@@ -491,8 +491,8 @@
         create(loader, "--cpu=piii", "--host_cpu=piii", "--android_cpu=", "--fat_apk_cpu=");
     ConfiguredTarget ccToolchainA = getCcToolchainTarget(toolchainA);
     CcToolchainProvider ccProviderA =
-        (CcToolchainProvider) ccToolchainA.get(ToolchainInfo.SKYLARK_CONSTRUCTOR);
-    MakeVariableProvider makeProviderA = ccToolchainA.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR);
+        (CcToolchainProvider) ccToolchainA.get(ToolchainInfo.PROVIDER);
+    MakeVariableInfo makeProviderA = ccToolchainA.get(MakeVariableInfo.PROVIDER);
     assertThat(toolchainA.getToolchainIdentifier()).isEqualTo("toolchain-identifier-A");
     assertThat(toolchainA.getHostSystemName()).isEqualTo("host-system-name-A");
     assertThat(toolchainA.getTargetGnuSystemName()).isEqualTo("target-system-name-A");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProviderTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfoTest.java
similarity index 88%
rename from src/test/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProviderTest.java
rename to src/test/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfoTest.java
index 750390d..8b4184f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfoTest.java
@@ -23,18 +23,18 @@
 import org.junit.runners.JUnit4;
 
 /**
- * Unit tests for {@code JavaRuntimeProvider}
+ * Unit tests for {@code JavaRuntimeInfo}
  */
 @RunWith(JUnit4.class)
-public class JavaRuntimeProviderTest {
+public class JavaRuntimeInfoTest {
   @Test
   public void equalityIsObjectIdentity() {
-    JavaRuntimeProvider a = new JavaRuntimeProvider(
+    JavaRuntimeInfo a = new JavaRuntimeInfo(
         NestedSetBuilder.emptySet(Order.STABLE_ORDER),
         PathFragment.create(""),
         PathFragment.create(""),
         PathFragment.create(""));
-    JavaRuntimeProvider b = new JavaRuntimeProvider(
+    JavaRuntimeInfo b = new JavaRuntimeInfo(
         NestedSetBuilder.emptySet(Order.STABLE_ORDER),
         PathFragment.create(""),
         PathFragment.create(""),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
index d8387a1..e21ef2c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
@@ -225,7 +225,7 @@
 
     // Extract out information from native rule
     JavaCompilationArgsProvider jlJavaCompilationArgsProvider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, javaLibraryTarget);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, javaLibraryTarget);
     NestedSet<Artifact> jlCompileJars =
         jlJavaCompilationArgsProvider.getJavaCompilationArgs().getCompileTimeJars();
     NestedSet<Artifact> jlTransitiveRuntimeJars =
@@ -295,7 +295,7 @@
         "    transitive_runtime_jars = ['libd.jar'],",
         ")");
     ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
-    Info info = target.get(JavaProvider.JAVA_PROVIDER);
+    Info info = target.get(JavaInfo.PROVIDER);
 
     SkylarkNestedSet compileJars = (SkylarkNestedSet) info.getValue("compile_jars");
     assertThat(prettyJarNames(compileJars.getSet(Artifact.class))).containsExactly("foo/liba.jar");
@@ -335,7 +335,7 @@
         "    transitive_runtime_jars = ['libd.jar'],",
         ")");
     ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
-    Info info = target.get(JavaProvider.JAVA_PROVIDER);
+    Info info = target.get(JavaInfo.PROVIDER);
 
     SkylarkNestedSet compileJars = (SkylarkNestedSet) info.getValue("compile_jars");
     assertThat(prettyJarNames(compileJars.getSet(Artifact.class))).containsExactly("foo/liba.jar");
@@ -382,7 +382,7 @@
         ")");
     ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
     JavaCompilationArgsProvider provider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, target);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, target);
     assertThat(provider).isNotNull();
     List<String> compileTimeJars =
         prettyJarNames(provider.getJavaCompilationArgs().getCompileTimeJars());
@@ -399,7 +399,7 @@
     assertThat(transitiveRuntimeJars).containsExactly("foo/libd.jar");
 
     JavaSourceJarsProvider sourcesProvider =
-        JavaProvider.getProvider(JavaSourceJarsProvider.class, target);
+        JavaInfo.getProvider(JavaSourceJarsProvider.class, target);
     List<String> sourceJars = prettyJarNames(sourcesProvider.getSourceJars());
     assertThat(sourceJars).containsExactly("foo/liba-src.jar");
   }
@@ -435,7 +435,7 @@
     );
     ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
     JavaCompilationArgsProvider provider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, target);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, target);
     assertThat(provider).isNotNull();
     List<String> compileTimeJars =
         prettyJarNames(provider.getJavaCompilationArgs().getCompileTimeJars());
@@ -475,7 +475,7 @@
     );
     ConfiguredTarget target = getConfiguredTarget("//foo:java_lib");
     JavaCompilationArgsProvider provider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, target);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, target);
     List<String> compileTimeJars = prettyJarNames(
         provider.getRecursiveJavaCompilationArgs().getCompileTimeJars());
     assertThat(compileTimeJars).containsExactly("foo/libjava_lib-hjar.jar", "foo/liba.jar");
@@ -506,8 +506,8 @@
         new SkylarkKey(Label.parseAbsolute("//foo:extension.bzl"), "my_provider");
     Info declaredProvider = myRuleTarget.get(myProviderKey);
     Object javaProvider = declaredProvider.getValue("p");
-    assertThat(javaProvider).isInstanceOf(JavaProvider.class);
-    assertThat(javaLibraryTarget.get(JavaProvider.JAVA_PROVIDER)).isEqualTo(javaProvider);
+    assertThat(javaProvider).isInstanceOf(JavaInfo.class);
+    assertThat(javaLibraryTarget.get(JavaInfo.PROVIDER)).isEqualTo(javaProvider);
   }
 
   @Test
@@ -529,18 +529,18 @@
     ConfiguredTarget javaLibraryTarget = getConfiguredTarget("//foo:jl");
     ConfiguredTarget topJavaLibraryTarget = getConfiguredTarget("//foo:jl_top");
 
-    Object javaProvider = myRuleTarget.get(JavaProvider.JAVA_PROVIDER.getKey());
-    assertThat(javaProvider).isInstanceOf(JavaProvider.class);
+    Object javaProvider = myRuleTarget.get(JavaInfo.PROVIDER.getKey());
+    assertThat(javaProvider).isInstanceOf(JavaInfo.class);
 
-    JavaProvider jlJavaProvider = javaLibraryTarget.get(JavaProvider.JAVA_PROVIDER);
+    JavaInfo jlJavaInfo = javaLibraryTarget.get(JavaInfo.PROVIDER);
 
-    assertThat(jlJavaProvider == javaProvider).isTrue();
+    assertThat(jlJavaInfo == javaProvider).isTrue();
 
-    JavaProvider jlTopJavaProvider = topJavaLibraryTarget.get(JavaProvider.JAVA_PROVIDER);
+    JavaInfo jlTopJavaInfo = topJavaLibraryTarget.get(JavaInfo.PROVIDER);
 
     javaCompilationArgsHaveTheSameParent(
-        jlJavaProvider.getProvider(JavaCompilationArgsProvider.class).getJavaCompilationArgs(),
-        jlTopJavaProvider.getProvider(JavaCompilationArgsProvider.class).getJavaCompilationArgs());
+        jlJavaInfo.getProvider(JavaCompilationArgsProvider.class).getJavaCompilationArgs(),
+        jlTopJavaInfo.getProvider(JavaCompilationArgsProvider.class).getJavaCompilationArgs());
   }
 
   @Test
@@ -569,7 +569,7 @@
     // Test that all bottom jars are on the runtime classpath of lib_exports.
     ConfiguredTarget jlExports = getConfiguredTarget("//foo:lib_exports");
     JavaCompilationArgsProvider jlExportsProvider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, jlExports);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, jlExports);
     assertThat(prettyJarNames(jlExportsProvider.getRecursiveJavaCompilationArgs().getRuntimeJars()))
         .containsAllOf(
             "foo/libjl_bottom_for_deps.jar",
@@ -579,7 +579,7 @@
     // Test that libjl_bottom_for_exports.jar is in the recursive java compilation args of lib_top.
     ConfiguredTarget jlTop = getConfiguredTarget("//foo:lib_interm");
     JavaCompilationArgsProvider jlTopProvider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, jlTop);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, jlTop);
     assertThat(prettyJarNames(jlTopProvider.getRecursiveJavaCompilationArgs().getRuntimeJars()))
         .contains("foo/libjl_bottom_for_exports.jar");
   }
@@ -632,7 +632,7 @@
     // Test that all bottom jars are on the runtime classpath.
     ConfiguredTarget importTarget = getConfiguredTarget("//foo:import");
     JavaCompilationArgsProvider compilationProvider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, importTarget);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, importTarget);
     assertThat(prettyJarNames(
         compilationProvider.getRecursiveJavaCompilationArgs().getRuntimeJars()))
         .containsAllOf(
@@ -666,7 +666,7 @@
 
     ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:custom");
     JavaCompilationArgsProvider javaCompilationArgsProvider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, myRuleTarget);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, myRuleTarget);
     List<String> directJars = prettyJarNames(
         javaCompilationArgsProvider.getJavaCompilationArgs().getRuntimeJars());
     assertThat(directJars).containsExactly("foo/liba.jar");
@@ -699,7 +699,7 @@
 
     ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:custom");
     JavaCompilationArgsProvider javaCompilationArgsProvider =
-        JavaProvider.getProvider(JavaCompilationArgsProvider.class, myRuleTarget);
+        JavaInfo.getProvider(JavaCompilationArgsProvider.class, myRuleTarget);
     List<String> directJars = prettyJarNames(
         javaCompilationArgsProvider.getJavaCompilationArgs().getRuntimeJars());
     assertThat(directJars).containsExactly("foo/liba.jar", "foo/libb.jar");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
index be78678..62db959 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
@@ -36,7 +36,7 @@
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgs;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
 import com.google.devtools.build.lib.rules.java.JavaCompileAction;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
 import com.google.devtools.build.lib.rules.java.ProguardSpecProvider;
 import com.google.devtools.build.lib.testutil.MoreAsserts;
@@ -586,7 +586,7 @@
 
   private static <P extends TransitiveInfoProvider> P getProvider(
       Class<P> providerClass, ConfiguredTarget target) {
-    JavaProvider javaProvider = target.get(JavaProvider.JAVA_PROVIDER);
-    return javaProvider.getProvider(providerClass);
+    JavaInfo javaInfo = target.get(JavaInfo.PROVIDER);
+    return javaInfo.getProvider(providerClass);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java b/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
index 2bb09f4..7d3fa72 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
@@ -16,8 +16,8 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.test.ExecutionInfoProvider;
-import com.google.devtools.build.lib.analysis.test.TestEnvironmentProvider;
+import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
+import com.google.devtools.build.lib.analysis.test.TestEnvironmentInfo;
 import com.google.devtools.build.lib.analysis.test.TestProvider;
 import com.google.devtools.build.lib.analysis.test.TestRunnerAction;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
@@ -49,7 +49,7 @@
         ")");
 
     ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
-    ExecutionInfoProvider provider = skylarkTarget.get(ExecutionInfoProvider.SKYLARK_CONSTRUCTOR);
+    ExecutionInfo provider = skylarkTarget.get(ExecutionInfo.PROVIDER);
 
     assertThat(provider.getExecutionInfo().get("requires-darwin")).isEqualTo("1");
   }
@@ -74,8 +74,8 @@
         ")");
 
     ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
-    TestEnvironmentProvider provider =
-        skylarkTarget.get(TestEnvironmentProvider.SKYLARK_CONSTRUCTOR);
+    TestEnvironmentInfo provider =
+        skylarkTarget.get(TestEnvironmentInfo.PROVIDER);
 
     assertThat(provider.getEnvironment().get("XCODE_VERSION_OVERRIDE")).isEqualTo("7.3.1");
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index 879cd82..7ab868b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.Info;
-import com.google.devtools.build.lib.rules.java.JavaProvider;
+import com.google.devtools.build.lib.rules.java.JavaInfo;
 import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
 import com.google.devtools.build.lib.rules.python.PyCommon;
 import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
@@ -429,7 +429,7 @@
     Object result = evalRuleContextCode(ruleContext, "ruleContext.attr.srcs");
     // Check for a known provider
     TransitiveInfoCollection tic1 = (TransitiveInfoCollection) ((SkylarkList) result).get(0);
-    assertThat(JavaProvider.getProvider(JavaSourceJarsProvider.class, tic1)).isNotNull();
+    assertThat(JavaInfo.getProvider(JavaSourceJarsProvider.class, tic1)).isNotNull();
     // Check an unimplemented provider too
     assertThat(tic1.get(PyCommon.PYTHON_SKYLARK_PROVIDER_NAME)).isNull();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 8b08168..975a98b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -26,7 +26,7 @@
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.DefaultProvider;
+import com.google.devtools.build.lib.analysis.DefaultInfo;
 import com.google.devtools.build.lib.analysis.FilesToRunProvider;
 import com.google.devtools.build.lib.analysis.Runfiles;
 import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
@@ -910,9 +910,9 @@
     assertThat((Boolean) configuredTarget.get("is_provided")).isTrue();
 
     Object provider = configuredTarget.get("provider");
-    assertThat(provider).isInstanceOf(DefaultProvider.class);
+    assertThat(provider).isInstanceOf(DefaultInfo.class);
     assertThat(((Info) provider).getProvider().getKey())
-        .isEqualTo(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey());
+        .isEqualTo(DefaultInfo.PROVIDER.getKey());
 
     assertThat(configuredTarget.get("dir"))
         .isEqualTo(
@@ -987,9 +987,9 @@
     assertThat((Boolean) configuredTarget.get("is_provided")).isTrue();
 
     Object provider = configuredTarget.get("provider");
-    assertThat(provider).isInstanceOf(DefaultProvider.class);
+    assertThat(provider).isInstanceOf(DefaultInfo.class);
     assertThat(((Info) provider).getProvider().getKey())
-        .isEqualTo(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey());
+        .isEqualTo(DefaultInfo.PROVIDER.getKey());
 
     assertThat(configuredTarget.get("dir"))
         .isEqualTo(
@@ -1080,9 +1080,9 @@
     assertThat((Boolean) configuredTarget.get("is_provided")).isTrue();
 
     Object provider = configuredTarget.get("provider");
-    assertThat(provider).isInstanceOf(DefaultProvider.class);
+    assertThat(provider).isInstanceOf(DefaultInfo.class);
     assertThat(((Info) provider).getProvider().getKey())
-        .isEqualTo(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey());
+        .isEqualTo(DefaultInfo.PROVIDER.getKey());
 
     assertThat(configuredTarget.get("dir"))
         .isEqualTo(
@@ -1143,9 +1143,9 @@
         "bar_rule(name = 'my_rule', deps = [':dep_rule'])");
     ConfiguredTarget configuredTarget = getConfiguredTarget("//test:my_rule");
     Object provider = configuredTarget.get("default");
-    assertThat(provider).isInstanceOf(DefaultProvider.class);
+    assertThat(provider).isInstanceOf(DefaultInfo.class);
     assertThat(((Info) provider).getProvider().getKey())
-        .isEqualTo(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey());
+        .isEqualTo(DefaultInfo.PROVIDER.getKey());
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
index 22e6d0b..7e52634 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.MakeVariableProvider;
+import com.google.devtools.build.lib.analysis.MakeVariableInfo;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
 import com.google.devtools.build.lib.analysis.RuleContext;
@@ -133,7 +133,7 @@
     @Override
     public ConfiguredTarget create(RuleContext ruleContext)
         throws InterruptedException, RuleErrorException {
-      MakeVariableProvider variables = new MakeVariableProvider(ImmutableMap.of(
+      MakeVariableInfo variables = new MakeVariableInfo(ImmutableMap.of(
           "TEST_VARIABLE", "FOOBAR"));
       return new RuleConfiguredTargetBuilder(ruleContext)
           .setFilesToBuild(NestedSetBuilder.emptySet(Order.STABLE_ORDER))
@@ -150,7 +150,7 @@
     @Override
     public RuleClass build(Builder builder, RuleDefinitionEnvironment environment) {
       return builder
-          .advertiseProvider(MakeVariableProvider.class)
+          .advertiseProvider(MakeVariableInfo.class)
           .build();
     }