diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD
index 39c9a7e..197b13a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD
@@ -11,8 +11,8 @@
 )
 
 java_test(
-    name = "SkylarkConfigurationFieldProcessorTest",
-    srcs = ["SkylarkConfigurationFieldProcessorTest.java"],
+    name = "StarlarkConfigurationFieldProcessorTest",
+    srcs = ["StarlarkConfigurationFieldProcessorTest.java"],
     resources = [":ProcessorTestFiles"],
     runtime_deps = [
         "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/SkylarkConfigurationFieldProcessorTest.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/StarlarkConfigurationFieldProcessorTest.java
similarity index 70%
rename from src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/SkylarkConfigurationFieldProcessorTest.java
rename to src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/StarlarkConfigurationFieldProcessorTest.java
index 507553e..d881c6a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/SkylarkConfigurationFieldProcessorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/StarlarkConfigurationFieldProcessorTest.java
@@ -25,21 +25,21 @@
 import org.junit.runners.JUnit4;
 
 /**
- * Unit tests for SkylarkConfigurationFieldProcessor.
+ * Unit tests for StarlarkConfigurationFieldProcessor.
  */
 @RunWith(JUnit4.class)
-public final class SkylarkConfigurationFieldProcessorTest {
+public final class StarlarkConfigurationFieldProcessorTest {
 
   private static JavaFileObject getFile(String pathToFile) {
     return JavaFileObjects.forResource(Resources.getResource(
-        SkylarkConfigurationFieldProcessorTest.class, "optiontestsources/" + pathToFile));
+        StarlarkConfigurationFieldProcessorTest.class, "optiontestsources/" + pathToFile));
   }
 
   @Test
   public void testGoldenConfigurationField() throws Exception {
     assertAbout(javaSource())
         .that(getFile("GoldenConfigurationField.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .compilesWithoutError();
   }
 
@@ -47,7 +47,7 @@
   public void testGoldenConfigurationFieldThroughApi() throws Exception {
     assertAbout(javaSource())
         .that(getFile("GoldenConfigurationFieldThroughApi.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .compilesWithoutError();
   }
 
@@ -55,37 +55,37 @@
   public void testHasMethodParameters() throws Exception {
     assertAbout(javaSource())
         .that(getFile("HasMethodParameters.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .failsToCompile()
         .withErrorContaining(
-            "@SkylarkConfigurationField annotated methods must have zero arguments.");
+            "@StarlarkConfigurationField annotated methods must have zero arguments.");
   }
 
   @Test
   public void testMethodIsPrivate() throws Exception {
     assertAbout(javaSource())
         .that(getFile("MethodIsPrivate.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .failsToCompile()
-        .withErrorContaining("@SkylarkConfigurationField annotated methods must be public.");
+        .withErrorContaining("@StarlarkConfigurationField annotated methods must be public.");
   }
 
   @Test
   public void testMethodThrowsException() throws Exception {
     assertAbout(javaSource())
         .that(getFile("MethodThrowsException.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .failsToCompile()
-        .withErrorContaining("@SkylarkConfigurationField annotated must not throw exceptions.");
+        .withErrorContaining("@StarlarkConfigurationField annotated must not throw exceptions.");
   }
 
   @Test
   public void testNonConfigurationFragment() throws Exception {
     assertAbout(javaSource())
         .that(getFile("NonConfigurationFragment.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .failsToCompile()
-        .withErrorContaining("@SkylarkConfigurationField annotated methods must be methods "
+        .withErrorContaining("@StarlarkConfigurationField annotated methods must be methods "
             + "of configuration fragments.");
   }
 
@@ -93,7 +93,7 @@
   public void testNonExposedConfigurationFragment() throws Exception {
     assertAbout(javaSource())
         .that(getFile("NonExposedConfigurationFragment.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .compilesWithoutError();
   }
 
@@ -101,8 +101,8 @@
   public void testReturnsOtherType() throws Exception {
     assertAbout(javaSource())
         .that(getFile("ReturnsOtherType.java"))
-        .processedWith(new SkylarkConfigurationFieldProcessor())
+        .processedWith(new StarlarkConfigurationFieldProcessor())
         .failsToCompile()
-        .withErrorContaining("@SkylarkConfigurationField annotated methods must return Label.");
+        .withErrorContaining("@StarlarkConfigurationField annotated methods must return Label.");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationField.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationField.java
index d641a8d..3772b1a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationField.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationField.java
@@ -15,12 +15,12 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
@@ -30,12 +30,11 @@
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public Label getXcodeConfigLabel() {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java
index 66a9bf0..4112846 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java
@@ -15,23 +15,22 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 public class GoldenConfigurationFieldThroughApi extends Fragment implements ApiInterface {
 
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public Label getXcodeConfigLabel() {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/HasMethodParameters.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/HasMethodParameters.java
index 412ab76..dfc978d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/HasMethodParameters.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/HasMethodParameters.java
@@ -15,12 +15,12 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
@@ -30,12 +30,11 @@
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public Label getXcodeConfigLabel(int x) {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodIsPrivate.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodIsPrivate.java
index ab81203..4a02373 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodIsPrivate.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodIsPrivate.java
@@ -15,12 +15,12 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
@@ -30,12 +30,11 @@
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   private Label getXcodeConfigLabel() {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodThrowsException.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodThrowsException.java
index c6569d5..da54ac3 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodThrowsException.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/MethodThrowsException.java
@@ -15,12 +15,12 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
@@ -30,12 +30,11 @@
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public Label getXcodeConfigLabel() throws IllegalArgumentException {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonConfigurationFragment.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonConfigurationFragment.java
index caeb7c8..0fcc9cb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonConfigurationFragment.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonConfigurationFragment.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
@@ -30,12 +30,11 @@
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public Label getXcodeConfigLabel() {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonExposedConfigurationFragment.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonExposedConfigurationFragment.java
index 2beb2fc..ea41c3a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonExposedConfigurationFragment.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/NonExposedConfigurationFragment.java
@@ -15,21 +15,20 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 public class NonExposedConfigurationFragment extends Fragment {
 
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public Label getXcodeConfigLabel() {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/ReturnsOtherType.java b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/ReturnsOtherType.java
index 9dd5a0d..2326e52 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/ReturnsOtherType.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/optiontestsources/ReturnsOtherType.java
@@ -15,11 +15,11 @@
 package com.google.devtools.build.lib.analysis.skylark.annotations.processor.optiontestsources;
 
 import com.google.devtools.build.lib.analysis.config.Fragment;
-import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField;
+import com.google.devtools.build.lib.analysis.skylark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDocumentationCategory;
 
-/** A test case of SkylarkConfigurationFieldProcessorTest. */
+/** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
@@ -29,12 +29,11 @@
   /**
    * Returns the label of the xcode_config rule to use for resolving the host system xcode version.
    */
-  @SkylarkConfigurationField(
+  @StarlarkConfigurationField(
       name = "some_field",
       doc = "Documentation ",
       defaultLabel = "defaultLabel",
-      defaultInToolRepository = true
-  )
+      defaultInToolRepository = true)
   public String getXcodeConfigLabel() {
     return null;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java b/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java
index e18d2fd..026738b 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java
@@ -185,8 +185,8 @@
         .isEqualTo("no providers accepted");
     assertThat(
             RequiredProviders.acceptAnyBuilder()
-                .addSkylarkSet(ImmutableSet.of(ID_LEGACY, ID_SKYLARK))
-                .addSkylarkSet(ImmutableSet.of(ID_SKYLARK))
+                .addStarlarkSet(ImmutableSet.of(ID_LEGACY, ID_SKYLARK))
+                .addStarlarkSet(ImmutableSet.of(ID_SKYLARK))
                 .addNativeSet(ImmutableSet.of(P1.class, P2.class))
                 .build()
                 .getDescription())
@@ -222,8 +222,8 @@
     RequiredProviders.Builder anyBuilder = RequiredProviders.acceptAnyBuilder();
     RequiredProviders.Builder noneBuilder = RequiredProviders.acceptNoneBuilder();
     for (ImmutableSet<StarlarkProviderIdentifier> set : sets) {
-      anyBuilder.addSkylarkSet(set);
-      noneBuilder.addSkylarkSet(set);
+      anyBuilder.addStarlarkSet(set);
+      noneBuilder.addStarlarkSet(set);
     }
 
     RequiredProviders rpStartingFromAny = anyBuilder.build();
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
index ea4172a..1cd4e41 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
@@ -47,7 +47,7 @@
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventCollector;
 import com.google.devtools.build.lib.events.EventKind;
-import com.google.devtools.build.lib.packages.Attribute.SkylarkComputedDefaultTemplate.CannotPrecomputeDefaultsException;
+import com.google.devtools.build.lib.packages.Attribute.StarlarkComputedDefaultTemplate.CannotPrecomputeDefaultsException;
 import com.google.devtools.build.lib.packages.Attribute.ValidityPredicate;
 import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy;
 import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkCommonTest.java
similarity index 94%
rename from src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommonTest.java
rename to src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkCommonTest.java
index 1c7b74e..b6f1340 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkCommonTest.java
@@ -23,9 +23,9 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-/** Tests for {@link com.google.devtools.build.lib.rules.android.AndroidSkylarkCommon}. */
+/** Tests for {@link AndroidStarlarkCommon}. */
 @RunWith(JUnit4.class)
-public class AndroidSkylarkCommonTest extends AndroidBuildViewTestCase {
+public class AndroidStarlarkCommonTest extends AndroidBuildViewTestCase {
 
   @Before
   public void setupCcToolchain() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
index d478008..248b694 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
@@ -48,8 +48,8 @@
 )
 
 java_test(
-    name = "AndroidSkylarkCommonTest",
-    srcs = ["AndroidSkylarkCommonTest.java"],
+    name = "AndroidStarlarkCommonTest",
+    srcs = ["AndroidStarlarkCommonTest.java"],
     deps = [
         ":AndroidBuildViewTestCase",
         "//src/main/java/com/google/devtools/build/lib/rules/java:java-compilation",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
index 4d1eddb..42f6f16 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
@@ -181,7 +181,7 @@
     StarlarkRuleContext ctx =
         new StarlarkRuleContext(getRuleContextForStarlark(wrapper), null, getStarlarkSemantics());
     update("ruleContext", ctx);
-    update("config_common", new ConfigSkylarkCommon());
+    update("config_common", new ConfigStarlarkCommon());
     String value = (String) eval("ruleContext.attr.flag[config_common.FeatureFlagInfo].value");
     assertThat(value).isEqualTo("configured");
   }
@@ -232,7 +232,7 @@
         ")");
     StarlarkRuleContext ctx = createRuleContext("//test:wrapper");
     update("ruleContext", ctx);
-    update("config_common", new ConfigSkylarkCommon());
+    update("config_common", new ConfigStarlarkCommon());
     String provider = "ruleContext.attr.flag[config_common.FeatureFlagInfo]";
     Boolean isDefaultValid = (Boolean) eval(provider + ".is_valid_value('default')");
     Boolean isConfiguredValid = (Boolean) eval(provider + ".is_valid_value('configured')");
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java
index aeef261..f27bb98 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java
@@ -40,7 +40,7 @@
 import com.google.devtools.build.lib.packages.RequiredProviders;
 import com.google.devtools.build.lib.packages.RuleClass;
 import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
-import com.google.devtools.build.lib.packages.SkylarkAspectClass;
+import com.google.devtools.build.lib.packages.StarlarkAspectClass;
 import com.google.devtools.build.lib.packages.StarlarkDefinedAspect;
 import com.google.devtools.build.lib.packages.StarlarkInfo;
 import com.google.devtools.build.lib.packages.StarlarkProvider;
@@ -1615,9 +1615,7 @@
     assertThat(p.getKey()).isEqualTo(new StarlarkProvider.Key(FAKE_LABEL, "p"));
     assertThat(p1.getPrintableName()).isEqualTo("p1");
     assertThat(p1.getKey()).isEqualTo(new StarlarkProvider.Key(FAKE_LABEL, "p1"));
-    assertThat(a.getAspectClass()).isEqualTo(
-        new SkylarkAspectClass(FAKE_LABEL, "a")
-    );
+    assertThat(a.getAspectClass()).isEqualTo(new StarlarkAspectClass(FAKE_LABEL, "a"));
   }
 
   @Test
