bazel syntax: rename SkylarkDict to Dict

This is a breaking change for copybara.

PiperOrigin-RevId: 280231492
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
index 15ba03e..ceaf43a 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
@@ -34,9 +34,9 @@
 import com.google.devtools.build.lib.skylarkbuildapi.ActionApi;
 import com.google.devtools.build.lib.skylarkbuildapi.CommandLineArgsApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.Root;
@@ -548,13 +548,13 @@
   }
 
   @Override
-  public SkylarkDict<String, String> getSkylarkSubstitutions() {
+  public Dict<String, String> getSkylarkSubstitutions() {
     return null;
   }
 
   @Override
-  public SkylarkDict<String, String> getEnv() {
-    return SkylarkDict.copyOf(null, env.getFixedEnv().toMap());
+  public Dict<String, String> getEnv() {
+    return Dict.copyOf(null, env.getFixedEnv().toMap());
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
index d4ca876..8692960 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
 import com.google.devtools.build.lib.analysis.stringtemplate.TemplateContext;
 import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
+import com.google.devtools.build.lib.syntax.Dict;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -121,14 +121,14 @@
     throw new ExpansionException(String.format("$(%s) not defined", name));
   }
 
-  public SkylarkDict<String, String> collectMakeVariables() throws ExpansionException {
+  public Dict<String, String> collectMakeVariables() throws ExpansionException {
     Map<String, String> map = new LinkedHashMap<>();
     // Collect variables in the reverse order as in lookupMakeVariable
     // because each update is overwriting.
     for (MakeVariableSupplier supplier : allMakeVariableSuppliers.reverse()) {
       map.putAll(supplier.getAllMakeVariables());
     }
-    return SkylarkDict.<String, String>copyOf(null, map);
+    return Dict.<String, String>copyOf(null, map);
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
index 1ddb105..9285092 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
@@ -32,9 +32,9 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkbuildapi.OutputGroupInfoApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkIndexable;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import java.util.HashSet;
@@ -290,8 +290,7 @@
     }
 
     @Override
-    public OutputGroupInfoApi constructor(SkylarkDict<?, ?> kwargs, Location loc)
-        throws EvalException {
+    public OutputGroupInfoApi constructor(Dict<?, ?> kwargs, Location loc) throws EvalException {
       Map<String, Object> kwargsMap = kwargs.getContents(String.class, Object.class, "kwargs");
 
       ImmutableMap.Builder<String, NestedSet<Artifact>> builder = ImmutableMap.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
index 4ea4785..ffc8d9d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkbuildapi.TemplateVariableInfoApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import java.util.Map;
 
 /** Provides access to make variables from the current fragments. */
@@ -40,10 +40,10 @@
     }
 
     @Override
-    public TemplateVariableInfo templateVariableInfo(SkylarkDict<?, ?> vars, Location loc)
+    public TemplateVariableInfo templateVariableInfo(Dict<?, ?> vars, Location loc)
         throws EvalException {
       Map<String, String> varsMap =
-          SkylarkDict.castSkylarkDictOrNoneToDict(vars, String.class, String.class, "vars");
+          Dict.castSkylarkDictOrNoneToDict(vars, String.class, String.class, "vars");
       return new TemplateVariableInfo(ImmutableMap.copyOf(varsMap), loc);
     }
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java
index d32b911..638520b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java
@@ -33,7 +33,7 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.util.Fingerprint;
 import java.io.IOException;
 import java.util.Collection;
@@ -200,11 +200,11 @@
   }
 
   @Override
-  public SkylarkDict<String, String> getSkylarkSubstitutions() {
+  public Dict<String, String> getSkylarkSubstitutions() {
     ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
     for (Substitution entry : substitutions) {
       builder.put(entry.getKey(), entry.getValue());
     }
-    return SkylarkDict.copyOf(null, builder.build());
+    return Dict.copyOf(null, builder.build());
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
index 7fca8b7..8ed672e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
@@ -23,10 +23,10 @@
 import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigurationTransitionApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import java.util.List;
@@ -191,13 +191,13 @@
      *
      * <p>In the case of a {@link
      * com.google.devtools.build.lib.analysis.config.transitions.PatchTransition}, the impl fxn
-     * returns a {@link SkylarkDict} of option name strings to option value object.
+     * returns a {@link Dict} of option name strings to option value object.
      *
      * <p>In the case of {@link
      * com.google.devtools.build.lib.analysis.config.transitions.SplitTransition}, the impl fxn can
-     * return either a {@link SkylarkDict} of String keys to {@link SkylarkDict} values. Or it can
-     * return a list of {@link SkylarkDict}s in cases where the consumer doesn't care about
-     * differentiating between the splits (i.e. accessing later via {@code ctx.split_attrs}).
+     * return either a {@link Dict} of String keys to {@link Dict} values. Or it can return a list
+     * of {@link Dict}s in cases where the consumer doesn't care about differentiating between the
+     * splits (i.e. accessing later via {@code ctx.split_attrs}).
      *
      * @param previousSettings a map representing the previous build settings
      * @param attributeMapper a map of attributes
@@ -215,26 +215,25 @@
         throw new EvalException(impl.getLocation(), e.getMessage());
       }
 
-      if (result instanceof SkylarkDict) {
+      if (result instanceof Dict) {
         // If we're receiving an empty dictionary, it's an error. Even if a
         // transition function sometimes evaluates to a no-op, it needs to return the passed in
         // settings. Return early for now since better error reporting will happen in
         // {@link FunctionTransitionUtil#validateFunctionOutputsMatchesDeclaredOutputs}
-        if (((SkylarkDict) result).isEmpty()) {
+        if (((Dict) result).isEmpty()) {
           return ImmutableList.of(ImmutableMap.of());
         }
         // TODO(bazel-team): integrate keys with ctx.split_attr. Currently ctx.split_attr always
         // keys on cpu value - we should be able to key on the keys returned here.
         try {
           @SuppressWarnings("rawtypes")
-          Map<String, SkylarkDict> dictOfDict =
-              ((SkylarkDict<?, ?>) result)
-                  .getContents(
-                      String.class, SkylarkDict.class, "dictionary of options dictionaries");
+          Map<String, Dict> dictOfDict =
+              ((Dict<?, ?>) result)
+                  .getContents(String.class, Dict.class, "dictionary of options dictionaries");
           ImmutableList.Builder<Map<String, Object>> builder = ImmutableList.builder();
-          for (Map.Entry<String, SkylarkDict> entry : dictOfDict.entrySet()) { // rawtypes error
+          for (Map.Entry<String, Dict> entry : dictOfDict.entrySet()) { // rawtypes error
             Map<String, Object> dict =
-                ((SkylarkDict<?, ?>) entry.getValue())
+                ((Dict<?, ?>) entry.getValue())
                     .getContents(String.class, Object.class, "an option dictionary");
             builder.add(dict);
           }
@@ -244,7 +243,7 @@
         }
         try {
           return ImmutableList.of(
-              ((SkylarkDict<?, ?>) result)
+              ((Dict<?, ?>) result)
                   .getContents(String.class, Object.class, "dictionary of options"));
         } catch (EvalException e) {
           throw new EvalException(impl.getLocation(), e.getMessage());
@@ -252,9 +251,9 @@
       } else if (result instanceof Sequence) {
         ImmutableList.Builder<Map<String, Object>> builder = ImmutableList.builder();
         try {
-          for (SkylarkDict<?, ?> toOptions :
+          for (Dict<?, ?> toOptions :
               ((Sequence<?>) result)
-                  .getContents(SkylarkDict.class, "dictionary of options dictionaries")) {
+                  .getContents(Dict.class, "dictionary of options dictionaries")) {
             builder.add(toOptions.getContents(String.class, Object.class, "dictionary of options"));
           }
         } catch (EvalException e) {
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 af41c62..b1e171a 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
@@ -20,8 +20,8 @@
 import com.google.devtools.build.lib.packages.BuiltinProvider;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skylarkbuildapi.platform.ToolchainInfoApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import java.util.Map;
 
 /**
@@ -45,10 +45,9 @@
     }
 
     @Override
-    public ToolchainInfo toolchainInfo(SkylarkDict<?, ?> kwargs, Location loc)
-        throws EvalException {
+    public ToolchainInfo toolchainInfo(Dict<?, ?> kwargs, Location loc) throws EvalException {
       Map<String, Object> data =
-          SkylarkDict.castSkylarkDictOrNoneToDict(kwargs, String.class, Object.class, "data");
+          Dict.castSkylarkDictOrNoneToDict(kwargs, String.class, Object.class, "data");
       return ToolchainInfo.create(data, loc);
     }
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/FunctionTransitionUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/FunctionTransitionUtil.java
index f3267ad..29196cb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/FunctionTransitionUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/FunctionTransitionUtil.java
@@ -25,10 +25,10 @@
 import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.StructImpl;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.common.options.OptionDefinition;
@@ -70,8 +70,7 @@
     // TODO(waltl): consider building this once and use it across different split
     // transitions.
     Map<String, OptionInfo> optionInfoMap = buildOptionInfo(buildOptions);
-    SkylarkDict<String, Object> settings =
-        buildSettings(buildOptions, optionInfoMap, starlarkTransition);
+    Dict<String, Object> settings = buildSettings(buildOptions, optionInfoMap, starlarkTransition);
 
     ImmutableList.Builder<BuildOptions> splitBuildOptions = ImmutableList.builder();
 
@@ -149,7 +148,7 @@
    * @throws EvalException if any of the specified transition inputs do not correspond to a valid
    *     build setting
    */
-  static SkylarkDict<String, Object> buildSettings(
+  static Dict<String, Object> buildSettings(
       BuildOptions buildOptions,
       Map<String, OptionInfo> optionInfoMap,
       StarlarkDefinedConfigTransition starlarkTransition)
@@ -157,7 +156,7 @@
     LinkedHashSet<String> remainingInputs = Sets.newLinkedHashSet(starlarkTransition.getInputs());
 
     try (Mutability mutability = Mutability.create("build_settings")) {
-      SkylarkDict<String, Object> dict = SkylarkDict.withMutability(mutability);
+      Dict<String, Object> dict = Dict.withMutability(mutability);
 
       // Add native options
       for (Map.Entry<String, OptionInfo> entry : optionInfoMap.entrySet()) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index 4f07062..9c83a4f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -51,10 +51,10 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
@@ -607,8 +607,7 @@
     if (envUnchecked != Starlark.NONE) {
       builder.setEnvironment(
           ImmutableMap.copyOf(
-              SkylarkDict.castSkylarkDictOrNoneToDict(
-                  envUnchecked, String.class, String.class, "env")));
+              Dict.castSkylarkDictOrNoneToDict(envUnchecked, String.class, String.class, "env")));
     }
     if (progressMessage != Starlark.NONE) {
       builder.setProgressMessageNonLazy((String) progressMessage);
@@ -651,7 +650,7 @@
   public void expandTemplate(
       FileApi template,
       FileApi output,
-      SkylarkDict<?, ?> substitutionsUnchecked,
+      Dict<?, ?> substitutionsUnchecked,
       Boolean executable,
       Location location)
       throws EvalException {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
index fac239d..acfa1a0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -45,11 +45,11 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAttrApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -72,7 +72,7 @@
 
   // Arguments
 
-  private static boolean containsNonNoneKey(SkylarkDict<String, Object> arguments, String key) {
+  private static boolean containsNonNoneKey(Dict<String, Object> arguments, String key) {
     return arguments.containsKey(key) && arguments.get(key) != Starlark.NONE;
   }
 
@@ -96,7 +96,7 @@
   private static ImmutableAttributeFactory createAttributeFactory(
       Type<?> type,
       String doc,
-      SkylarkDict<String, Object> arguments,
+      Dict<String, Object> arguments,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -108,7 +108,7 @@
   private static ImmutableAttributeFactory createAttributeFactory(
       Type<?> type,
       String doc,
-      SkylarkDict<String, Object> arguments,
+      Dict<String, Object> arguments,
       FuncallExpression ast,
       StarlarkThread thread,
       String name)
@@ -120,7 +120,7 @@
   private static Attribute.Builder<?> createAttribute(
       Type<?> type,
       String doc,
-      SkylarkDict<String, Object> arguments,
+      Dict<String, Object> arguments,
       FuncallExpression ast,
       StarlarkThread thread,
       String name)
@@ -393,7 +393,7 @@
 
   private static Descriptor createAttrDescriptor(
       String name,
-      SkylarkDict<String, Object> kwargs,
+      Dict<String, Object> kwargs,
       Type<?> type,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -423,7 +423,7 @@
 
   private static Descriptor createNonconfigurableAttrDescriptor(
       String name,
-      SkylarkDict<String, Object> kwargs,
+      Dict<String, Object> kwargs,
       Type<?> type,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -613,7 +613,7 @@
       StarlarkThread thread)
       throws EvalException {
     SkylarkUtils.checkLoadingOrWorkspacePhase(thread, "attr.label_list", ast.getLocation());
-    SkylarkDict<String, Object> kwargs =
+    Dict<String, Object> kwargs =
         EvalUtils.<String, Object>optionMap(
             thread,
             DEFAULT_ARG,
@@ -663,7 +663,7 @@
       throws EvalException {
     SkylarkUtils.checkLoadingOrWorkspacePhase(
         thread, "attr.label_keyed_string_dict", ast.getLocation());
-    SkylarkDict<String, Object> kwargs =
+    Dict<String, Object> kwargs =
         EvalUtils.<String, Object>optionMap(
             thread,
             DEFAULT_ARG,
@@ -762,7 +762,7 @@
   @Override
   public Descriptor stringDictAttribute(
       Boolean allowEmpty,
-      SkylarkDict<?, ?> defaultO,
+      Dict<?, ?> defaultO,
       String doc,
       Boolean mandatory,
       Boolean nonEmpty,
@@ -790,7 +790,7 @@
   @Override
   public Descriptor stringListDictAttribute(
       Boolean allowEmpty,
-      SkylarkDict<?, ?> defaultO,
+      Dict<?, ?> defaultO,
       String doc,
       Boolean mandatory,
       Boolean nonEmpty,
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 8a14c07..f082f27 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
@@ -81,13 +81,13 @@
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleFunctionsApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.FunctionSignature;
 import com.google.devtools.build.lib.syntax.Identifier;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -264,7 +264,7 @@
                   location,
                   "Expected list of strings or dictionary of string -> string for 'fields'");
       fieldNames = list;
-    }  else  if (fields instanceof SkylarkDict) {
+    } else if (fields instanceof Dict) {
       Map<String, String> dict = SkylarkType.castMap(
           fields,
           String.class, String.class,
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 545080a..317445f 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
@@ -77,12 +77,12 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.ClassObject;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Printer;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkIndexable;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -138,7 +138,7 @@
   private AspectDescriptor aspectDescriptor;
   private final StarlarkSemantics starlarkSemantics;
 
-  private SkylarkDict<String, String> makeVariables;
+  private Dict<String, String> makeVariables;
   private SkylarkAttributesCollection attributesCollection;
   private SkylarkAttributesCollection ruleAttributesCollection;
   private StructImpl splitAttributes;
@@ -459,7 +459,7 @@
         }
       }
 
-      splitAttrInfos.put(attr.getPublicName(), SkylarkDict.copyOf(null, splitPrereqsMap));
+      splitAttrInfos.put(attr.getPublicName(), Dict.copyOf(null, splitPrereqsMap));
     }
 
     return StructProvider.STRUCT.create(
@@ -683,7 +683,7 @@
   }
 
   @Override
-  public SkylarkDict<String, String> var() throws EvalException {
+  public Dict<String, String> var() throws EvalException {
     checkMutable("var");
     return makeVariables;
   }
@@ -816,9 +816,7 @@
 
   @Override
   public String expandMakeVariables(
-      String attributeName,
-      String command,
-      SkylarkDict<?, ?> additionalSubstitutions) // <String, String>
+      String attributeName, String command, Dict<?, ?> additionalSubstitutions) // <String, String>
       throws EvalException {
     checkMutable("expand_make_variables");
     final Map<String, String> additionalSubstitutionsMap =
@@ -973,7 +971,7 @@
   public NoneType templateAction(
       FileApi template,
       FileApi output,
-      SkylarkDict<?, ?> substitutionsUnchecked,
+      Dict<?, ?> substitutionsUnchecked,
       Boolean executable,
       Location loc,
       StarlarkThread thread)
@@ -991,8 +989,8 @@
       Object transitiveFiles,
       Boolean collectData,
       Boolean collectDefault,
-      SkylarkDict<?, ?> symlinks,
-      SkylarkDict<?, ?> rootSymlinks,
+      Dict<?, ?> symlinks,
+      Dict<?, ?> rootSymlinks,
       Location loc)
       throws EvalException, ConversionException {
     checkMutable("runfiles");
@@ -1042,8 +1040,8 @@
       Boolean expandLocations,
       Object makeVariablesUnchecked,
       Sequence<?> tools,
-      SkylarkDict<?, ?> labelDictUnchecked,
-      SkylarkDict<?, ?> executionRequirementsUnchecked,
+      Dict<?, ?> labelDictUnchecked,
+      Dict<?, ?> executionRequirementsUnchecked,
       Location loc,
       StarlarkThread thread)
       throws ConversionException, EvalException {
@@ -1074,7 +1072,7 @@
 
     ImmutableMap<String, String> executionRequirements =
         ImmutableMap.copyOf(
-            SkylarkDict.castSkylarkDictOrNoneToDict(
+            Dict.castSkylarkDictOrNoneToDict(
                 executionRequirementsUnchecked,
                 String.class,
                 String.class,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
index 74a2f9a..cb48387 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
@@ -48,10 +48,10 @@
 import com.google.devtools.build.lib.runtime.ProcessWrapperUtil;
 import com.google.devtools.build.lib.skyframe.PrecomputedValue;
 import com.google.devtools.build.lib.skylarkbuildapi.repository.SkylarkRepositoryContextApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
@@ -288,7 +288,7 @@
   public void createFileFromTemplate(
       Object path,
       Object template,
-      SkylarkDict<?, ?> substitutions, // <String, String> expected
+      Dict<?, ?> substitutions, // <String, String> expected
       Boolean executable,
       Location location)
       throws RepositoryFunctionException, EvalException, InterruptedException {
@@ -369,7 +369,7 @@
   public SkylarkExecutionResult execute(
       Sequence<?> arguments, // <String> or <SkylarkPath> expected
       Integer timeout,
-      SkylarkDict<?, ?> uncheckedEnvironment, // <String, String> expected
+      Dict<?, ?> uncheckedEnvironment, // <String, String> expected
       boolean quiet,
       String workingDirectory,
       Location location)
@@ -510,17 +510,16 @@
   }
 
   @SuppressWarnings({"unchecked", "rawtypes"}) // Explained in method comment
-  private static Map<String, SkylarkDict<?, ?>> getAuthContents(
-      SkylarkDict<?, ?> authUnchecked, @Nullable String description) throws EvalException {
-    // This method would not be worth having (SkylarkDict#getContents could be called
-    // instead), except that some trickery is required to cast Map<String, SkylarkDict> to
-    // Map<String, SkylarkDict<?, ?>>.
+  private static Map<String, Dict<?, ?>> getAuthContents(
+      Dict<?, ?> authUnchecked, @Nullable String description) throws EvalException {
+    // This method would not be worth having (Dict#getContents could be called
+    // instead), except that some trickery is required to cast Map<String, Dict> to
+    // Map<String, Dict<?, ?>>.
 
-    // getContents can only guarantee raw types, so SkylarkDict is the raw type here.
-    Map<String, SkylarkDict> result =
-        authUnchecked.getContents(String.class, SkylarkDict.class, description);
+    // getContents can only guarantee raw types, so Dict is the raw type here.
+    Map<String, Dict> result = authUnchecked.getContents(String.class, Dict.class, description);
 
-    return (Map<String, SkylarkDict<?, ?>>) (Map<String, ? extends SkylarkDict>) result;
+    return (Map<String, Dict<?, ?>>) (Map<String, ? extends Dict>) result;
   }
 
   @Override
@@ -531,7 +530,7 @@
       Boolean executable,
       Boolean allowFail,
       String canonicalId,
-      SkylarkDict<?, ?> authUnchecked, // <String, SkylarkDict<?, ?>> expected
+      Dict<?, ?> authUnchecked, // <String, Dict<?, ?>> expected
       String integrity,
       Location location)
       throws RepositoryFunctionException, EvalException, InterruptedException {
@@ -589,7 +588,7 @@
           new IOException("thread interrupted"), Transience.TRANSIENT);
     } catch (IOException e) {
       if (allowFail) {
-        SkylarkDict<String, Object> dict = SkylarkDict.of(null, "success", false);
+        Dict<String, Object> dict = Dict.of(null, "success", false);
         return StructProvider.STRUCT.createStruct(dict, null);
       } else {
         throw new RepositoryFunctionException(e, Transience.TRANSIENT);
@@ -646,7 +645,7 @@
       String stripPrefix,
       Boolean allowFail,
       String canonicalId,
-      SkylarkDict<?, ?> auth, // <String, SkylarkDict<?, ?>> expected
+      Dict<?, ?> auth, // <String, Dict<?, ?>> expected
       String integrity,
       Location location)
       throws RepositoryFunctionException, InterruptedException, EvalException {
@@ -705,7 +704,7 @@
     } catch (IOException e) {
       env.getListener().post(w);
       if (allowFail) {
-        SkylarkDict<String, Object> dict = SkylarkDict.of(null, "success", false);
+        Dict<String, Object> dict = Dict.of(null, "success", false);
         return StructProvider.STRUCT.createStruct(dict, null);
       } else {
         throw new RepositoryFunctionException(e, Transience.TRANSIENT);
@@ -815,7 +814,7 @@
     if (finalChecksum.getKeyType() == KeyType.SHA256) {
       out.put("sha256", finalChecksum.toString());
     }
-    return StructProvider.STRUCT.createStruct(SkylarkDict.copyOf(null, out.build()), null);
+    return StructProvider.STRUCT.createStruct(Dict.copyOf(null, out.build()), null);
   }
 
   private static ImmutableList<String> checkAllUrls(Iterable<?> urlList) throws EvalException {
@@ -965,13 +964,13 @@
    * authentication, adding those headers is enough; for other forms of authentication other
    * measures might be necessary.
    */
-  private static Map<URI, Map<String, String>> getAuthHeaders(Map<String, SkylarkDict<?, ?>> auth)
+  private static Map<URI, Map<String, String>> getAuthHeaders(Map<String, Dict<?, ?>> auth)
       throws RepositoryFunctionException, EvalException {
     ImmutableMap.Builder<URI, Map<String, String>> headers = new ImmutableMap.Builder<>();
-    for (Map.Entry<String, SkylarkDict<?, ?>> entry : auth.entrySet()) {
+    for (Map.Entry<String, Dict<?, ?>> entry : auth.entrySet()) {
       try {
         URL url = new URL(entry.getKey());
-        SkylarkDict<?, ?> authMap = entry.getValue();
+        Dict<?, ?> authMap = entry.getValue();
         if (authMap.containsKey("type")) {
           if ("basic".equals(authMap.get("type"))) {
             if (!authMap.containsKey("login") || !authMap.containsKey("password")) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java
index e363753..2ac982d 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java
@@ -33,12 +33,12 @@
 import com.google.devtools.build.lib.packages.Type.ConversionException;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkNativeModuleApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -130,7 +130,7 @@
     SkylarkUtils.checkLoadingOrWorkspacePhase(thread, "native.existing_rule", loc);
     PackageContext context = getContext(thread, loc);
     Target target = context.pkgBuilder.getTarget(name);
-    SkylarkDict<String, Object> rule = targetDict(target, loc, thread.mutability());
+    Dict<String, Object> rule = targetDict(target, loc, thread.mutability());
     return rule != null ? rule : Starlark.NONE;
   }
 
@@ -139,16 +139,16 @@
     For now, we ignore this, since users can implement it in Skylark.
   */
   @Override
-  public SkylarkDict<String, SkylarkDict<String, Object>> existingRules(
-      Location loc, StarlarkThread thread) throws EvalException, InterruptedException {
+  public Dict<String, Dict<String, Object>> existingRules(Location loc, StarlarkThread thread)
+      throws EvalException, InterruptedException {
     SkylarkUtils.checkLoadingOrWorkspacePhase(thread, "native.existing_rules", loc);
     PackageContext context = getContext(thread, loc);
     Collection<Target> targets = context.pkgBuilder.getTargets();
     Mutability mu = thread.mutability();
-    SkylarkDict<String, SkylarkDict<String, Object>> rules = SkylarkDict.withMutability(mu);
+    Dict<String, Dict<String, Object>> rules = Dict.withMutability(mu);
     for (Target t : targets) {
       if (t instanceof Rule) {
-        SkylarkDict<String, Object> rule = targetDict(t, loc, mu);
+        Dict<String, Object> rule = targetDict(t, loc, mu);
         Preconditions.checkNotNull(rule);
         rules.put(t.getName(), rule, loc);
       }
@@ -278,12 +278,12 @@
   }
 
   @Nullable
-  private static SkylarkDict<String, Object> targetDict(Target target, Location loc, Mutability mu)
+  private static Dict<String, Object> targetDict(Target target, Location loc, Mutability mu)
       throws EvalException {
     if (!(target instanceof Rule)) {
       return null;
     }
-    SkylarkDict<String, Object> values = SkylarkDict.withMutability(mu);
+    Dict<String, Object> values = Dict.withMutability(mu);
 
     Rule rule = (Rule) target;
     AttributeContainer cont = rule.getAttributeContainer();
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java b/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java
index 46bcbb3..51d7c6a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java
@@ -24,11 +24,11 @@
 import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.ClassObject;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Printer;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -252,8 +252,8 @@
         // in the same list but we ignore that for now.
         printProtoTextMessage(key, item, sb, indent, loc, "list element in struct field");
       }
-    } else if (value instanceof SkylarkDict) {
-      for (Map.Entry<?, ?> entry : ((SkylarkDict<?, ?>) value).entrySet()) {
+    } else if (value instanceof Dict) {
+      for (Map.Entry<?, ?> entry : ((Dict<?, ?>) value).entrySet()) {
         printProtoTextMessage(key, entry, sb, indent, loc, "entry of dictionary");
       }
     } else {
@@ -302,10 +302,10 @@
         printJson(((ClassObject) value).getValue(field), sb, loc, "struct field", field);
       }
       sb.append("}");
-    } else if (value instanceof SkylarkDict) {
+    } else if (value instanceof Dict) {
       sb.append("{");
       String join = "";
-      for (Map.Entry<?, ?> entry : ((SkylarkDict<?, ?>) value).entrySet()) {
+      for (Map.Entry<?, ?> entry : ((Dict<?, ?>) value).entrySet()) {
         sb.append(join);
         join = ",";
         if (!(entry.getKey() instanceof String)) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java b/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
index 12484ea..5cea9b7 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
@@ -17,8 +17,8 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import java.util.Map;
 
 /**
@@ -37,7 +37,7 @@
   }
 
   @Override
-  public StructImpl createStruct(SkylarkDict<?, ?> kwargs, Location loc) throws EvalException {
+  public StructImpl createStruct(Dict<?, ?> kwargs, Location loc) throws EvalException {
     Map<String, Object> kwargsMap = kwargs.getContents(String.class, Object.class, "kwargs");
     if (kwargsMap.containsKey("to_json")) {
       throw new EvalException(loc, "cannot override built-in struct function 'to_json'");
diff --git a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java
index a8d2d9f..e22434d 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java
@@ -24,8 +24,8 @@
 import com.google.common.collect.Maps;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.util.Pair;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -257,7 +257,7 @@
    * #legalExecInfoKeys}.
    *
    * @param executionRequirementsUnchecked execution_requirements of a rule, expected to be of a
-   *     {@code SkylarkDict<String, String>} type, null or {@link
+   *     {@code Dict<String, String>} type, null or {@link
    *     com.google.devtools.build.lib.syntax.Runtime#NONE}
    * @param rule a rule instance to get tags from
    * @param allowTagsPropagation if set to true, tags will be propagated from a target to the
@@ -269,7 +269,7 @@
       throws EvalException {
     Map<String, String> checkedExecutionRequirements =
         TargetUtils.filter(
-            SkylarkDict.castSkylarkDictOrNoneToDict(
+            Dict.castSkylarkDictOrNoneToDict(
                 executionRequirementsUnchecked,
                 String.class,
                 String.class,
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java
index e519196..3eb40ed 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java
@@ -25,8 +25,8 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.events.StoredEventHandler;
 import com.google.devtools.build.lib.packages.RuleFactory.BuildLangTypedAttributeValuesMap;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -123,8 +123,7 @@
   /**
    * Processes {@code repo_mapping} attribute and populates the package builder with the mappings.
    *
-   * @throws EvalException if {@code repo_mapping} is present in kwargs but is not a {@link
-   *     SkylarkDict}
+   * @throws EvalException if {@code repo_mapping} is present in kwargs but is not a {@link Dict}
    */
   public static void addRepoMappings(
       Package.Builder builder,
@@ -134,7 +133,7 @@
       throws EvalException, LabelSyntaxException {
 
     if (kwargs.containsKey("repo_mapping")) {
-      if (!(kwargs.get("repo_mapping") instanceof SkylarkDict)) {
+      if (!(kwargs.get("repo_mapping") instanceof Dict)) {
         throw new EvalException(
             location,
             "Invalid value for 'repo_mapping': '"
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
index 854e99c..66bd257 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
@@ -29,10 +29,10 @@
 import com.google.devtools.build.lib.packages.Package.NameConflictException;
 import com.google.devtools.build.lib.packages.RuleFactory.InvalidRuleException;
 import com.google.devtools.build.lib.skylarkbuildapi.WorkspaceGlobalsApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.List;
@@ -63,7 +63,7 @@
   @Override
   public NoneType workspace(
       String name,
-      SkylarkDict<?, ?> managedDirectories, // <String, Object>
+      Dict<?, ?> managedDirectories, // <String, Object>
       Location loc,
       StarlarkThread thread)
       throws EvalException, InterruptedException {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidFeatureFlagSetProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidFeatureFlagSetProvider.java
index 454e147..f1cf604 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidFeatureFlagSetProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidFeatureFlagSetProvider.java
@@ -31,8 +31,8 @@
 import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.rules.config.ConfigFeatureFlag;
 import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidFeatureFlagSetProviderApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import java.util.Map;
 
 /**
@@ -153,11 +153,10 @@
     }
 
     @Override
-    public AndroidFeatureFlagSetProvider create(SkylarkDict<?, ?> flags) // <Label, String>
+    public AndroidFeatureFlagSetProvider create(Dict<?, ?> flags) // <Label, String>
         throws EvalException {
       return new AndroidFeatureFlagSetProvider(
-          Optional.of(
-              SkylarkDict.castSkylarkDictOrNoneToDict(flags, Label.class, String.class, "flags")));
+          Optional.of(Dict.castSkylarkDictOrNoneToDict(flags, Label.class, String.class, "flags")));
     }
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
index 196f4dc..f766b0e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
@@ -27,9 +27,9 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
 import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidIdeInfoProviderApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import java.util.Collection;
 import java.util.LinkedHashSet;
@@ -332,7 +332,7 @@
         Object signedApk,
         Object aar,
         Sequence<?> apksUnderTest, // <Artifact>
-        SkylarkDict<?, ?> nativeLibs) // <String, SkylarkNestedSet>
+        Dict<?, ?> nativeLibs) // <String, SkylarkNestedSet>
         throws EvalException {
       Map<String, SkylarkNestedSet> nativeLibsMap =
           nativeLibs.getContents(String.class, SkylarkNestedSet.class, "native_libs");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
index 0a9c333..567e99d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
@@ -42,9 +42,9 @@
 import com.google.devtools.build.lib.rules.java.ProguardSpecProvider;
 import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidBinaryDataSettingsApi;
 import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidDataProcessingApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -194,7 +194,7 @@
   }
 
   @Override
-  public SkylarkDict<Provider, NativeInfo> mergeResources(
+  public Dict<Provider, NativeInfo> mergeResources(
       AndroidDataContext ctx,
       AndroidManifestInfo manifest,
       Sequence<?> resources, // <ConfiguredTarget>
@@ -208,7 +208,7 @@
         mergeRes(ctx, manifest, resources, deps, neverlink, enableDataBinding, location, thread);
     JavaInfo javaInfo =
         getJavaInfoForRClassJar(validated.getClassJar(), validated.getJavaSourceJar());
-    return SkylarkDict.of(
+    return Dict.of(
         /* thread = */ null,
         AndroidResourcesInfo.PROVIDER,
         validated.toProvider(),
@@ -271,7 +271,7 @@
   }
 
   @Override
-  public SkylarkDict<Provider, NativeInfo> processAarImportData(
+  public Dict<Provider, NativeInfo> processAarImportData(
       AndroidDataContext ctx,
       SpecialArtifact resources,
       SpecialArtifact assets,
@@ -306,7 +306,7 @@
   }
 
   @Override
-  public SkylarkDict<Provider, NativeInfo> processLocalTestData(
+  public Dict<Provider, NativeInfo> processLocalTestData(
       AndroidDataContext ctx,
       Object manifest,
       Sequence<?> resources, // <ConfiguredTarget>
@@ -314,7 +314,7 @@
       Object assetsDir,
       Object customPackage,
       String aaptVersionString,
-      SkylarkDict<?, ?> manifestValues, // <String, String>
+      Dict<?, ?> manifestValues, // <String, String>
       Sequence<?> deps, // <ConfiguredTarget>
       Sequence<?> noCompressExtensions, // <String>
       Location location,
@@ -369,7 +369,7 @@
               resourceApk.toResourceInfo(ctx.getLabel()),
               resourceApk.toAssetsInfo(ctx.getLabel()),
               resourceApk.toManifestInfo().get()));
-      return SkylarkDict.copyOf(/* thread = */ null, builder.build());
+      return Dict.copyOf(/* thread = */ null, builder.build());
     } catch (RuleErrorException e) {
       throw handleRuleException(errorReporter, e);
     }
@@ -468,7 +468,7 @@
       Object assetsDir,
       Object manifest,
       Object customPackage,
-      SkylarkDict<?, ?> manifestValues, // <String, String>
+      Dict<?, ?> manifestValues, // <String, String>
       Sequence<?> deps, // <ConfiguredTarget>
       String manifestMerger,
       Object maybeSettings,
@@ -621,7 +621,7 @@
     return binaryDataInfo;
   }
 
-  public static SkylarkDict<Provider, NativeInfo> getNativeInfosFrom(
+  public static Dict<Provider, NativeInfo> getNativeInfosFrom(
       ResourceApk resourceApk, Label label) {
     ImmutableMap.Builder<Provider, NativeInfo> builder = ImmutableMap.builder();
 
@@ -636,7 +636,7 @@
         getJavaInfoForRClassJar(
             resourceApk.getResourceJavaClassJar(), resourceApk.getResourceJavaSrcJar()));
 
-    return SkylarkDict.copyOf(/* thread = */ null, builder.build());
+    return Dict.copyOf(/* thread = */ null, builder.build());
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java
index b8cbf27..01f13e8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java
@@ -19,8 +19,8 @@
 import com.google.devtools.build.lib.packages.BuiltinProvider;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skylarkbuildapi.android.ApkInfoApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import javax.annotation.Nullable;
 
 /** A provider for targets that produce an apk file. */
@@ -93,8 +93,7 @@
     }
 
     @Override
-    public ApkInfoApi<?> createInfo(SkylarkDict<?, ?> kwargs, Location loc)
-        throws EvalException {
+    public ApkInfoApi<?> createInfo(Dict<?, ?> kwargs, Location loc) throws EvalException {
       return throwUnsupportedConstructorException(loc);
     }
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java
index 327ca77..92715a1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java
@@ -24,9 +24,9 @@
 import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigGlobalLibraryApi;
 import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigurationTransitionApi;
 import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import java.util.HashSet;
@@ -61,7 +61,7 @@
 
   @Override
   public ConfigurationTransitionApi analysisTestTransition(
-      SkylarkDict<?, ?> changedSettings, // <String, String> expected
+      Dict<?, ?> changedSettings, // <String, String> expected
       Location location,
       StarlarkSemantics semantics)
       throws EvalException {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 15b11a0..f30e154 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -57,11 +57,11 @@
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcModuleApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -195,12 +195,12 @@
   }
 
   @Override
-  public SkylarkDict<String, String> getEnvironmentVariable(
+  public Dict<String, String> getEnvironmentVariable(
       FeatureConfigurationForStarlark featureConfiguration,
       String actionName,
       CcToolchainVariables variables)
       throws EvalException {
-    return SkylarkDict.copyOf(
+    return Dict.copyOf(
         null,
         featureConfiguration
             .getFeatureConfiguration()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
index 117c433..6767018 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
@@ -43,9 +43,9 @@
 import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleCommonApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -177,8 +177,8 @@
 
   @Override
   // This method is registered statically for skylark, and never called directly.
-  public ObjcProvider newObjcProvider(
-      Boolean usesSwift, SkylarkDict<?, ?> kwargs, StarlarkThread thread) throws EvalException {
+  public ObjcProvider newObjcProvider(Boolean usesSwift, Dict<?, ?> kwargs, StarlarkThread thread)
+      throws EvalException {
     ObjcProvider.Builder resultBuilder = new ObjcProvider.Builder(thread.getSemantics());
     if (usesSwift) {
       resultBuilder.add(ObjcProvider.FLAG, ObjcProvider.Flag.USES_SWIFT);
@@ -270,7 +270,7 @@
         ImmutableMap.of(
             "binary_provider", output.getBinaryInfoProvider(),
             "debug_outputs_provider", output.getDebugOutputsProvider(),
-            "output_groups", SkylarkDict.copyOf(thread, outputGroups));
+            "output_groups", Dict.copyOf(thread, outputGroups));
     return SkylarkInfo.createSchemaless(constructor, fields, Location.BUILTIN);
   }
 }
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 1fc0ec3..de9483a 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
@@ -16,20 +16,20 @@
 import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
 import com.google.devtools.build.lib.analysis.test.TestEnvironmentInfo;
 import com.google.devtools.build.lib.skylarkbuildapi.test.TestingModuleApi;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** A class that exposes testing infrastructure to skylark. */
 public class SkylarkTestingModule implements TestingModuleApi {
 
   @Override
-  public ExecutionInfo executionInfo(SkylarkDict<?, ?> requirements /* <String, String> */)
+  public ExecutionInfo executionInfo(Dict<?, ?> requirements /* <String, String> */)
       throws EvalException {
     return new ExecutionInfo(requirements.getContents(String.class, String.class, "requirements"));
   }
 
   @Override
-  public TestEnvironmentInfo testEnvironment(SkylarkDict<?, ?> environment /* <String, String> */)
+  public TestEnvironmentInfo testEnvironment(Dict<?, ?> environment /* <String, String> */)
       throws EvalException {
     return new TestEnvironmentInfo(
         environment.getContents(String.class, String.class, "environment"));
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ActionApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ActionApi.java
index 4b5bf88..5377e83 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ActionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ActionApi.java
@@ -18,9 +18,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import java.io.IOException;
@@ -100,21 +100,21 @@
   public String getSkylarkContent() throws IOException;
 
   @SkylarkCallable(
-    name = "substitutions",
-    doc =
-        "For actions created by "
-            + "<a href=\"actions.html#expand_template\">ctx.actions.expand_template()</a>,"
-            + " an immutable dict holding the substitution mapping.",
-    structField = true,
-    allowReturnNones = true)
-  public SkylarkDict<String, String> getSkylarkSubstitutions();
+      name = "substitutions",
+      doc =
+          "For actions created by "
+              + "<a href=\"actions.html#expand_template\">ctx.actions.expand_template()</a>,"
+              + " an immutable dict holding the substitution mapping.",
+      structField = true,
+      allowReturnNones = true)
+  public Dict<String, String> getSkylarkSubstitutions();
 
   @SkylarkCallable(
-    name = "env",
-    structField = true,
-    doc =
-        "The 'fixed' environment variables for this action. This includes only environment "
-            + "settings which are explicitly set by the action definition, and thus omits settings "
-            + "which are only pre-set in the execution environment.")
-  public SkylarkDict<String, String> getEnv();
+      name = "env",
+      structField = true,
+      doc =
+          "The 'fixed' environment variables for this action. This includes only environment"
+              + " settings which are explicitly set by the action definition, and thus omits"
+              + " settings which are only pre-set in the execution environment.")
+  public Dict<String, String> getEnv();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java
index 13c1f26..da194db 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java
@@ -20,8 +20,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /**
  * Interface for an info object that indicates what output groups a rule has.
@@ -52,14 +52,14 @@
         extraKeywords =
             @Param(
                 name = "kwargs",
-                type = SkylarkDict.class,
+                type = Dict.class,
                 defaultValue = "{}",
                 doc = "Dictionary of arguments."),
         useLocation = true,
         selfCall = true)
-    @SkylarkConstructor(objectType = OutputGroupInfoApi.class,
+    @SkylarkConstructor(
+        objectType = OutputGroupInfoApi.class,
         receiverNameForDoc = "OutputGroupInfo")
-    public OutputGroupInfoApi constructor(
-        SkylarkDict<?, ?> kwargs, Location loc) throws EvalException;
+    public OutputGroupInfoApi constructor(Dict<?, ?> kwargs, Location loc) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
index df27727..d1f3ee7 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
@@ -21,9 +21,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -316,7 +316,7 @@
             doc = "Whether the action should use the built in shell environment or not."),
         @Param(
             name = "env",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -324,7 +324,7 @@
             doc = "Sets the dictionary of environment variables."),
         @Param(
             name = "execution_requirements",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -486,7 +486,7 @@
             doc = "Whether the action should use the built in shell environment or not."),
         @Param(
             name = "env",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -494,7 +494,7 @@
             doc = "Sets the dictionary of environment variables."),
         @Param(
             name = "execution_requirements",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -563,7 +563,7 @@
             doc = "The output file, which is a UTF-8 encoded text file."),
         @Param(
             name = "substitutions",
-            type = SkylarkDict.class,
+            type = Dict.class,
             named = true,
             positional = false,
             doc = "Substitutions to make when expanding the template."),
@@ -579,7 +579,7 @@
   public void expandTemplate(
       FileApi template,
       FileApi output,
-      SkylarkDict<?, ?> substitutionsUnchecked,
+      Dict<?, ?> substitutionsUnchecked,
       Boolean executable,
       Location location)
       throws EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
index 1ba3c26..195ac78 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
@@ -21,10 +21,10 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkFunction;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -611,7 +611,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkDict.class),
+              @ParamType(type = Dict.class),
               @ParamType(type = StarlarkFunction.class)
             },
             callbackEnabled = true,
@@ -856,7 +856,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkDict.class),
+              @ParamType(type = Dict.class),
               @ParamType(type = StarlarkFunction.class)
             },
             named = true,
@@ -889,7 +889,7 @@
       useStarlarkThread = true)
   public Descriptor stringDictAttribute(
       Boolean allowEmpty,
-      SkylarkDict<?, ?> defaultO,
+      Dict<?, ?> defaultO,
       String doc,
       Boolean mandatory,
       Boolean nonEmpty,
@@ -912,7 +912,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkDict.class),
+              @ParamType(type = Dict.class),
               @ParamType(type = StarlarkFunction.class)
             },
             defaultValue = "{}",
@@ -945,7 +945,7 @@
       useStarlarkThread = true)
   public Descriptor stringListDictAttribute(
       Boolean allowEmpty,
-      SkylarkDict<?, ?> defaultO,
+      Dict<?, ?> defaultO,
       String doc,
       Boolean mandatory,
       Boolean nonEmpty,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
index 8d1b8db..f681cce 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
@@ -20,10 +20,10 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /** Interface for a module with native rule and package helper functions. */
@@ -142,8 +142,8 @@
               + " it may be expensive especially if called within a loop.</i>",
       useLocation = true,
       useStarlarkThread = true)
-  public SkylarkDict<String, SkylarkDict<String, Object>> existingRules(
-      Location loc, StarlarkThread thread) throws EvalException, InterruptedException;
+  public Dict<String, Dict<String, Object>> existingRules(Location loc, StarlarkThread thread)
+      throws EvalException, InterruptedException;
 
   @SkylarkCallable(
       name = "package_group",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
index 6d51c26..4ad79f8 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
@@ -24,10 +24,10 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.ClassObject;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkIndexable;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
@@ -318,11 +318,10 @@
   public ImmutableList<String> aspectIds() throws EvalException;
 
   @SkylarkCallable(
-    name = "var",
-    structField = true,
-    doc = "Dictionary (String to String) of configuration variables."
-  )
-  public SkylarkDict<String, String> var() throws EvalException;
+      name = "var",
+      structField = true,
+      doc = "Dictionary (String to String) of configuration variables.")
+  public Dict<String, String> var() throws EvalException;
 
   @SkylarkCallable(
     name = "toolchains",
@@ -504,13 +503,13 @@
             name = "additional_substitutions",
             positional = true,
             named = false,
-            type = SkylarkDict.class,
+            type = Dict.class,
             doc = "Additional substitutions to make beyond the default make variables."),
       })
   public String expandMakeVariables(
       String attributeName,
       String command,
-      final SkylarkDict<?, ?> additionalSubstitutions) // <String, String>
+      final Dict<?, ?> additionalSubstitutions) // <String, String>
       throws EvalException;
 
   @SkylarkCallable(
@@ -650,7 +649,7 @@
             doc = "Whether the action should use the built in shell environment or not."),
         @Param(
             name = "env",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -658,7 +657,7 @@
             doc = "Sets the dictionary of environment variables."),
         @Param(
             name = "execution_requirements",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -814,7 +813,7 @@
             doc = "The output file, which is a UTF-8 encoded text file."),
         @Param(
             name = "substitutions",
-            type = SkylarkDict.class,
+            type = Dict.class,
             named = true,
             positional = false,
             doc = "Substitutions to make when expanding the template."),
@@ -832,7 +831,7 @@
   public NoneType templateAction(
       FileApi template,
       FileApi output,
-      SkylarkDict<?, ?> substitutionsUnchecked,
+      Dict<?, ?> substitutionsUnchecked,
       Boolean executable,
       Location loc,
       StarlarkThread thread)
@@ -885,13 +884,13 @@
                     + "runfiles from the dependencies in srcs, data and deps attributes."),
         @Param(
             name = "symlinks",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             doc = "The map of symlinks to be added to the runfiles, prefixed by workspace name."),
         @Param(
             name = "root_symlinks",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             doc = "The map of symlinks to be added to the runfiles.")
@@ -902,8 +901,8 @@
       Object transitiveFiles,
       Boolean collectData,
       Boolean collectDefault,
-      SkylarkDict<?, ?> symlinks,
-      SkylarkDict<?, ?> rootSymlinks,
+      Dict<?, ?> symlinks,
+      Dict<?, ?> rootSymlinks,
       Location loc)
       throws EvalException;
 
@@ -945,7 +944,7 @@
                     + " href=\"#expand_location\">ctx.expand_location()</a> for more details."),
         @Param(
             name = "make_variables",
-            type = SkylarkDict.class, // dict(string, string)
+            type = Dict.class, // dict(string, string)
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -961,7 +960,7 @@
             doc = "List of tools (list of targets)."),
         @Param(
             name = "label_dict",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             positional = false,
@@ -970,7 +969,7 @@
                     + "(a dict of Label : list of Files)."),
         @Param(
             name = "execution_requirements",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             positional = false,
@@ -987,8 +986,8 @@
       Boolean expandLocations,
       Object makeVariablesUnchecked,
       Sequence<?> tools,
-      SkylarkDict<?, ?> labelDictUnchecked,
-      SkylarkDict<?, ?> executionRequirementsUnchecked,
+      Dict<?, ?> labelDictUnchecked,
+      Dict<?, ?> executionRequirementsUnchecked,
       Location loc,
       StarlarkThread thread)
       throws EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
index 558a51b..b2b4aa1 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
@@ -23,11 +23,11 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkFunction;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -78,7 +78,7 @@
                     + " })</pre></ul>All fields are optional.",
             allowedTypes = {
               @ParamType(type = Sequence.class, generic1 = String.class),
-              @ParamType(type = SkylarkDict.class)
+              @ParamType(type = Dict.class)
             },
             noneable = true,
             named = true,
@@ -123,7 +123,7 @@
                     + "for more information."),
         @Param(
             name = "attrs",
-            type = SkylarkDict.class,
+            type = Dict.class,
             named = true,
             noneable = true,
             defaultValue = "None",
@@ -140,7 +140,7 @@
         @Param(
             name = "outputs",
             allowedTypes = {
-              @ParamType(type = SkylarkDict.class),
+              @ParamType(type = Dict.class),
               @ParamType(type = NoneType.class),
               @ParamType(type = StarlarkFunction.class) // a function defined in Starlark
             },
@@ -385,7 +385,7 @@
                     + "target."),
         @Param(
             name = "attrs",
-            type = SkylarkDict.class,
+            type = Dict.class,
             named = true,
             noneable = true,
             defaultValue = "None",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/StructApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/StructApi.java
index 10c8b15..a505615 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/StructApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/StructApi.java
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** Interface for the "struct" object in the build API. */
 @SkylarkModule(
@@ -103,12 +103,12 @@
         extraKeywords =
             @Param(
                 name = "kwargs",
-                type = SkylarkDict.class,
+                type = Dict.class,
                 defaultValue = "{}",
                 doc = "Dictionary of arguments."),
         useLocation = true,
         selfCall = true)
     @SkylarkConstructor(objectType = StructApi.class, receiverNameForDoc = "struct")
-    public StructApi createStruct(SkylarkDict<?, ?> kwargs, Location loc) throws EvalException;
+    public StructApi createStruct(Dict<?, ?> kwargs, Location loc) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java
index e4e65ee..9749f14 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java
@@ -20,8 +20,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** Provides access to make variables from the current fragments. */
 @SkylarkModule(
@@ -57,11 +57,11 @@
         doc = "The <code>TemplateVariableInfo</code> constructor.",
         documented = false,
         parameters = {
-          @Param(name = "vars", positional = true, named = true, type = SkylarkDict.class),
+          @Param(name = "vars", positional = true, named = true, type = Dict.class),
         },
         selfCall = true,
         useLocation = true)
-    TemplateVariableInfoApi templateVariableInfo(SkylarkDict<?, ?> vars, Location loc)
+    TemplateVariableInfoApi templateVariableInfo(Dict<?, ?> vars, Location loc)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
index 6565196..b53bb26 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
@@ -19,10 +19,10 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /** A collection of global skylark build API functions that apply to WORKSPACE files. */
@@ -65,7 +65,7 @@
             positional = false),
         @Param(
             name = "managed_directories",
-            type = SkylarkDict.class,
+            type = Dict.class,
             generic1 = String.class,
             named = true,
             positional = false,
@@ -81,7 +81,7 @@
       useStarlarkThread = true)
   NoneType workspace(
       String name,
-      SkylarkDict<?, ?> managedDirectories, // <String, Sequence<String>>
+      Dict<?, ?> managedDirectories, // <String, Sequence<String>>
       Location loc,
       StarlarkThread thread)
       throws EvalException, InterruptedException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
index 497c495..1696680 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
@@ -23,9 +23,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -410,7 +410,7 @@
               + " this manifest, so in the future, you may want to use the manifest contained in"
               + " this method's output instead of this one.",
       documented = false)
-  SkylarkDict<? extends ProviderApi, ? extends StructApi> mergeResources(
+  Dict<? extends ProviderApi, ? extends StructApi> mergeResources(
       AndroidDataContextT ctx,
       AndroidManifestInfoT manifest,
       Sequence<?> resources, // <TransitiveInfoCollectionT>
@@ -533,7 +533,7 @@
       },
       doc = "Processes assets, resources, and manifest for aar_import targets",
       documented = false)
-  SkylarkDict<? extends ProviderApi, ? extends StructApi> processAarImportData(
+  Dict<? extends ProviderApi, ? extends StructApi> processAarImportData(
       AndroidDataContextT ctx,
       SpecialFileT resources,
       SpecialFileT assets,
@@ -614,7 +614,7 @@
             name = "manifest_values",
             positional = false,
             defaultValue = "{}",
-            type = SkylarkDict.class,
+            type = Dict.class,
             generic1 = String.class,
             named = true,
             doc =
@@ -645,7 +645,7 @@
           "Processes resources, assets, and manifests for android_local_test and returns a dict"
               + " from provider type to the appropriate provider.",
       documented = false)
-  SkylarkDict<? extends ProviderApi, ? extends StructApi> processLocalTestData(
+  Dict<? extends ProviderApi, ? extends StructApi> processLocalTestData(
       AndroidDataContextT ctx,
       Object manifest,
       Sequence<?> resources, // <TransitiveInfoCollectionT>
@@ -653,7 +653,7 @@
       Object assetsDir,
       Object customPackage,
       String aaptVersionString,
-      SkylarkDict<?, ?> manifestValues, // <String, String>
+      Dict<?, ?> manifestValues, // <String, String>
       Sequence<?> deps, // <TransitiveInfoCollectionT>
       Sequence<?> noCompressExtensions, // <String>
       Location location,
@@ -801,7 +801,7 @@
             name = "manifest_values",
             positional = false,
             defaultValue = "{}",
-            type = SkylarkDict.class,
+            type = Dict.class,
             generic1 = String.class,
             named = true,
             doc =
@@ -866,7 +866,7 @@
       Object assetsDir,
       Object manifest,
       Object customPackage,
-      SkylarkDict<?, ?> manifestValues, // <String, String>
+      Dict<?, ?> manifestValues, // <String, String>
       Sequence<?> deps, // <TransitiveInfoCollectionT>
       String manifestMerger,
       Object maybeSettings,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java
index 1cd6039..afdf816 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java
@@ -22,8 +22,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** */
 @SkylarkModule(
@@ -65,13 +65,13 @@
               doc = "Map of flags",
               positional = true,
               named = false,
-              type = SkylarkDict.class),
+              type = Dict.class),
         },
         selfCall = true)
     @SkylarkConstructor(
         objectType = AndroidFeatureFlagSetProviderApi.class,
         receiverNameForDoc = NAME)
-    AndroidFeatureFlagSetProviderApi create(SkylarkDict<?, ?> flags /* <Label, String> */)
+    AndroidFeatureFlagSetProviderApi create(Dict<?, ?> flags /* <Label, String> */)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidIdeInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidIdeInfoProviderApi.java
index 80c1a33..25513c0 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidIdeInfoProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidIdeInfoProviderApi.java
@@ -23,9 +23,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import javax.annotation.Nullable;
 
@@ -290,7 +290,7 @@
                       + "libs.",
               positional = true,
               named = false,
-              type = SkylarkDict.class,
+              type = Dict.class,
               generic1 = String.class)
         },
         selfCall = true)
@@ -310,7 +310,7 @@
         /*noneable*/ Object signedApk,
         /*noneable*/ Object aar,
         Sequence<?> apksUnderTest, // <FileT>
-        SkylarkDict<?, ?> nativeLibs /* <String, SkylarkNestedSet> */)
+        Dict<?, ?> nativeLibs /* <String, SkylarkNestedSet> */)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java
index 1ef74bd..1b15d21 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** A provider for targets that produce an apk file. */
 @SkylarkModule(
@@ -89,6 +89,6 @@
         extraKeywords = @Param(name = "kwargs"),
         useLocation = true,
         selfCall = true)
-    public ApkInfoApi<?> createInfo(SkylarkDict<?, ?> kwargs, Location loc) throws EvalException;
+    public ApkInfoApi<?> createInfo(Dict<?, ?> kwargs, Location loc) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java
index 22e6d48..4ef083d 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java
@@ -26,9 +26,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -295,13 +295,13 @@
       extraKeywords =
           @Param(
               name = "kwargs",
-              type = SkylarkDict.class,
+              type = Dict.class,
               defaultValue = "{}",
               doc = "Dictionary of arguments."),
       useStarlarkThread = true)
   // This method is registered statically for skylark, and never called directly.
   public ObjcProviderApi<?> newObjcProvider(
-      Boolean usesSwift, SkylarkDict<?, ?> kwargs, StarlarkThread thread) throws EvalException;
+      Boolean usesSwift, Dict<?, ?> kwargs, StarlarkThread thread) throws EvalException;
 
   @SkylarkCallable(
       name = "new_dynamic_framework_provider",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java
index 05e0620..e06ccc4 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java
@@ -20,9 +20,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -122,7 +122,7 @@
       parameters = {
         @Param(
             name = "settings",
-            type = SkylarkDict.class,
+            type = Dict.class,
             positional = false,
             named = true,
             doc =
@@ -135,7 +135,7 @@
       useLocation = true,
       useStarlarkSemantics = true)
   public ConfigurationTransitionApi analysisTestTransition(
-      SkylarkDict<?, ?> changedSettings, // <String, String> expected
+      Dict<?, ?> changedSettings, // <String, String> expected
       Location location,
       StarlarkSemantics semantics)
       throws EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
index 85eb133..1e2ca3a 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
@@ -25,10 +25,10 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -254,7 +254,7 @@
             named = true,
             type = CcToolchainVariablesApi.class),
       })
-  SkylarkDict<String, String> getEnvironmentVariable(
+  Dict<String, String> getEnvironmentVariable(
       FeatureConfigurationT featureConfiguration,
       String actionName,
       CcToolchainVariablesT variables)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java
index 2989e7e..98d689e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** Info object representing data about a specific toolchain. */
 @SkylarkModule(
@@ -45,6 +45,6 @@
         extraKeywords = @Param(name = "kwargs", doc = "Dictionary of additional entries."),
         selfCall = true,
         useLocation = true)
-    ToolchainInfoApi toolchainInfo(SkylarkDict<?, ?> kwargs, Location loc) throws EvalException;
+    ToolchainInfoApi toolchainInfo(Dict<?, ?> kwargs, Location loc) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java
index b5a919e..07bba7e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java
@@ -19,10 +19,10 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /**
@@ -48,7 +48,7 @@
                     + " called during loading phase for each instance of the rule."),
         @Param(
             name = "attrs",
-            type = SkylarkDict.class,
+            type = Dict.class,
             noneable = true,
             defaultValue = "None",
             doc =
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
index 531492b..4dfd033 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
@@ -23,9 +23,9 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** Skylark API for the repository_rule's context. */
 @SkylarkModule(
@@ -180,7 +180,7 @@
             doc = "path to the template file."),
         @Param(
             name = "substitutions",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             doc = "substitutions to make when expanding the template."),
@@ -194,7 +194,7 @@
   public void createFileFromTemplate(
       Object path,
       Object template,
-      SkylarkDict<?, ?> substitutions, // <String, String> expected
+      Dict<?, ?> substitutions, // <String, String> expected
       Boolean executable,
       Location location)
       throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@@ -247,7 +247,7 @@
             doc = "maximum duration of the command in seconds (default is 600 seconds)."),
         @Param(
             name = "environment",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             doc = "force some environment variables to be set to be passed to the process."),
@@ -269,7 +269,7 @@
   public SkylarkExecutionResultApi execute(
       Sequence<?> arguments,
       Integer timeout,
-      SkylarkDict<?, ?> environment, // <String, String> expected
+      Dict<?, ?> environment, // <String, String> expected
       boolean quiet,
       String workingDirectory,
       Location location)
@@ -403,7 +403,7 @@
                     + " with the same canonical id"),
         @Param(
             name = "auth",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             doc = "An optional dict specifying authentication information for some of the URLs."),
@@ -427,7 +427,7 @@
       Boolean executable,
       Boolean allowFail,
       String canonicalId,
-      SkylarkDict<?, ?> auth, // <String, SkylarkDict<?, ?>> expected
+      Dict<?, ?> auth, // <String, Dict<?, ?>> expected
       String integrity,
       Location location)
       throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@@ -558,7 +558,7 @@
                     + " with the same canonical id"),
         @Param(
             name = "auth",
-            type = SkylarkDict.class,
+            type = Dict.class,
             defaultValue = "{}",
             named = true,
             doc = "An optional dict specifying authentication information for some of the URLs."),
@@ -583,7 +583,7 @@
       String stripPrefix,
       Boolean allowFail,
       String canonicalId,
-      SkylarkDict<?, ?> auth, // <String, SkylarkDict<?, ?>> expected
+      Dict<?, ?> auth, // <String, Dict<?, ?>> expected
       String integrity,
       Location location)
       throws RepositoryFunctionExceptionT, InterruptedException, EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java
index c005b20..175a3d1 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java
@@ -18,8 +18,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** Helper module for accessing test infrastructure. */
 @SkylarkModule(
@@ -36,7 +36,7 @@
       parameters = {
         @Param(
             name = "requirements",
-            type = SkylarkDict.class,
+            type = Dict.class,
             named = false,
             positional = true,
             doc =
@@ -45,7 +45,7 @@
                     + " executor of the test action as parameters to configure the execution"
                     + " environment.")
       })
-  public ExecutionInfoApi executionInfo(SkylarkDict<?, ?> requirements // <String, String> expected
+  public ExecutionInfoApi executionInfo(Dict<?, ?> requirements // <String, String> expected
       ) throws EvalException;
 
   // TODO(bazel-team): Change this function to be the actual TestEnvironmentInfo.PROVIDER.
@@ -57,14 +57,13 @@
       parameters = {
         @Param(
             name = "environment",
-            type = SkylarkDict.class,
+            type = Dict.class,
             named = false,
             positional = true,
             doc =
                 "A map of string keys and values that represent environment variables and their"
                     + " values. These will be made available during the test execution.")
       })
-  public TestEnvironmentInfoApi testEnvironment(
-      SkylarkDict<?, ?> environment // <String, String> expected
+  public TestEnvironmentInfoApi testEnvironment(Dict<?, ?> environment // <String, String> expected
       ) throws EvalException;
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
index edc4849..8903517 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
@@ -48,10 +48,9 @@
  *       <pre>method([positionals]*[named args]*(extra positionals list)(extra kwargs)
  *       (Location)(FuncallExpression)(StarlarkThread)(StarlarkSemantics))</pre>
  *       where (extra positionals list) is a Sequence if extraPositionals is defined, (extra kwargs)
- *       is a SkylarkDict if extraKeywords is defined, and Location, FuncallExpression,
- *       StarlarkThread, and StarlarkSemantics are supplied by the interpreter if and only if
- *       useLocation, useAst, useStarlarkThread, and useStarlarkSemantics are specified,
- *       respectively.
+ *       is a Dict if extraKeywords is defined, and Location, FuncallExpression, StarlarkThread, and
+ *       StarlarkSemantics are supplied by the interpreter if and only if useLocation, useAst,
+ *       useStarlarkThread, and useStarlarkSemantics are specified, respectively.
  *   <li>The number of method parameters much match the number of annotation-declared parameters
  *       plus the number of interpreter-supplied parameters.
  *   <li>Method parameters with generic type must only have wildcard types. For example, {@code
@@ -113,11 +112,11 @@
    *
    * <p>If this is left as default, it is an error for the caller to pass any named arguments not
    * explicitly declared by the method signature. If this is defined, all additional named arguments
-   * are passed as elements of a {@link SkylarkDict} to the method.
+   * are passed as elements of a {@link Dict} to the method.
    *
    * <p>See python's <code>**kwargs</code> (http://thepythonguru.com/python-args-and-kwargs/).
    *
-   * <p>(If this is defined, the annotated method signature must contain a corresponding SkylarkDict
+   * <p>(If this is defined, the annotated method signature must contain a corresponding Dict
    * parameter. See the interface-level javadoc for details.)
    */
   Param extraKeywords() default @Param(name = "");
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
index e3a08a7..8ff22e2 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
@@ -94,8 +94,7 @@
   private SetMultimap<String, String> processedClassMethods;
 
   private static final String SKYLARK_LIST = "com.google.devtools.build.lib.syntax.Sequence<?>";
-  private static final String SKYLARK_DICT =
-      "com.google.devtools.build.lib.syntax.SkylarkDict<?,?>";
+  private static final String SKYLARK_DICT = "com.google.devtools.build.lib.syntax.Dict<?,?>";
   private static final String LOCATION = "com.google.devtools.build.lib.events.Location";
   private static final String AST = "com.google.devtools.build.lib.syntax.FuncallExpression";
   private static final String STARLARK_THREAD =
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BUILD b/src/main/java/com/google/devtools/build/lib/syntax/BUILD
index ceede1f..85b2c01 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BUILD
@@ -98,6 +98,7 @@
         "Concatable.java",
         "DebugFrame.java",
         "Debugger.java",
+        "Dict.java",
         "Eval.java",
         "EvalException.java",
         "EvalExceptionWithStackTrace.java",
@@ -117,7 +118,6 @@
         "SelectorValue.java",
         "Sequence.java",
         "SkylarkClassObject.java",
-        "SkylarkDict.java",
         "SkylarkIndexable.java",
         "SkylarkNestedSet.java",
         "SkylarkQueryable.java",
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BaseFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/BaseFunction.java
index 3c8141f..b77d39b 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BaseFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BaseFunction.java
@@ -176,7 +176,7 @@
       // If there's a kwarg, it's empty.
       if (hasKwargs) {
         // TODO(bazel-team): create a fresh mutable dict, like Python does
-        arguments[kwargIndex] = SkylarkDict.of(thread);
+        arguments[kwargIndex] = Dict.of(thread);
       }
     } else if (hasKwargs && numNamedParams == 0) {
       // Easy case (2b): there are no named parameters, but there is a **kwargs.
@@ -185,10 +185,10 @@
       // Also note that no named parameters means no mandatory parameters that weren't passed,
       // and no missing optional parameters for which to use a default. Thus, no loops.
       // NB: not 2a means kwarg isn't null
-      arguments[kwargIndex] = SkylarkDict.copyOf(thread, kwargs);
+      arguments[kwargIndex] = Dict.copyOf(thread, kwargs);
     } else {
       // Hard general case (2c): some keyword arguments may correspond to named parameters
-      SkylarkDict<String, Object> kwArg = hasKwargs ? SkylarkDict.of(thread) : SkylarkDict.empty();
+      Dict<String, Object> kwArg = hasKwargs ? Dict.of(thread) : Dict.empty();
 
       // For nicer stabler error messages, start by checking against
       // an argument being provided both as positional argument and as keyword argument.
@@ -228,7 +228,7 @@
       }
       if (hasKwargs) {
         // TODO(bazel-team): create a fresh mutable dict, like Python does
-        arguments[kwargIndex] = SkylarkDict.copyOf(thread, kwArg);
+        arguments[kwargIndex] = Dict.copyOf(thread, kwArg);
       }
 
       // Check that all mandatory parameters were filled in general case 2c.
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/CallUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/CallUtils.java
index 0f2659b..e28a703 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/CallUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/CallUtils.java
@@ -411,7 +411,7 @@
       builder.add(Tuple.copyOf(extraArgs));
     }
     if (acceptsExtraKwargs) {
-      builder.add(SkylarkDict.copyOf(thread, extraKwargs));
+      builder.add(Dict.copyOf(thread, extraKwargs));
     }
     appendExtraInterpreterArgs(builder, method, call, call.getLocation(), thread);
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java b/src/main/java/com/google/devtools/build/lib/syntax/Dict.java
similarity index 87%
rename from src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java
rename to src/main/java/com/google/devtools/build/lib/syntax/Dict.java
index 1fca545..2fb243a 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Dict.java
@@ -31,7 +31,7 @@
 import javax.annotation.Nullable;
 
 /**
- * A Skylark dictionary (dict).
+ * A Dict is a Starlark dictionary (dict), a mapping from keys to values.
  *
  * <p>Although this implements the {@link Map} interface, it is not mutable via that interface's
  * methods. Instead, use the mutators that take in a {@link Mutability} object.
@@ -69,25 +69,24 @@
             + "<p>The <a href=\"globals.html#dict\">dict()</a> global function is documented"
             + " elsewhere.<p>")
 // TODO(b/64208606): eliminate these type parameters as they are wildly unsound.
-// Starlark code may update a StarlarkDict in ways incompatible with its Java
+// Starlark code may update a Dict in ways incompatible with its Java
 // parameterized type. There is no realistic static or dynamic way to prevent
 // this, as Java parameterized types are not accessible at runtime.
 // Every cast to a parameterized type is a lie.
 // Unchecked warnings should be treated as errors.
 // Ditto Sequence.
-public final class SkylarkDict<K, V> extends MutableMap<K, V>
-    implements Map<K, V>, SkylarkIndexable {
+public final class Dict<K, V> extends MutableMap<K, V> implements Map<K, V>, SkylarkIndexable {
 
   private final LinkedHashMap<K, V> contents = new LinkedHashMap<>();
 
   /** Final except for {@link #unsafeShallowFreeze}; must not be modified any other way. */
   private Mutability mutability;
 
-  private SkylarkDict(@Nullable Mutability mutability) {
+  private Dict(@Nullable Mutability mutability) {
     this.mutability = mutability == null ? Mutability.IMMUTABLE : mutability;
   }
 
-  private SkylarkDict(@Nullable StarlarkThread thread) {
+  private Dict(@Nullable StarlarkThread thread) {
     this.mutability = thread == null ? Mutability.IMMUTABLE : thread.mutability();
   }
 
@@ -220,16 +219,14 @@
       useLocation = true,
       useStarlarkThread = true)
   @SuppressWarnings("unchecked")
-  public NoneType update(Object args, SkylarkDict<?, ?> kwargs, Location loc, StarlarkThread thread)
+  public NoneType update(Object args, Dict<?, ?> kwargs, Location loc, StarlarkThread thread)
       throws EvalException {
     // TODO(adonovan): opt: don't materialize dict; call put directly.
 
     // All these types and casts are lies.
-    SkylarkDict<K, V> dict =
-        args instanceof SkylarkDict
-            ? (SkylarkDict<K, V>) args
-            : getDictFromArgs("update", args, loc, thread);
-    dict = SkylarkDict.plus(dict, (SkylarkDict<K, V>) kwargs, thread);
+    Dict<K, V> dict =
+        args instanceof Dict ? (Dict<K, V>) args : getDictFromArgs("update", args, loc, thread);
+    dict = Dict.plus(dict, (Dict<K, V>) kwargs, thread);
     putAll(dict, loc);
     return Starlark.NONE;
   }
@@ -276,59 +273,58 @@
     return StarlarkList.wrapUnsafe(thread, list);
   }
 
-  private static final SkylarkDict<?, ?> EMPTY = withMutability(Mutability.IMMUTABLE);
+  private static final Dict<?, ?> EMPTY = withMutability(Mutability.IMMUTABLE);
 
   /** Returns an immutable empty dict. */
   // Safe because the empty singleton is immutable.
   @SuppressWarnings("unchecked")
-  public static <K, V> SkylarkDict<K, V> empty() {
-    return (SkylarkDict<K, V>) EMPTY;
+  public static <K, V> Dict<K, V> empty() {
+    return (Dict<K, V>) EMPTY;
   }
 
   /** Returns an empty dict with the given {@link Mutability}. */
-  public static <K, V> SkylarkDict<K, V> withMutability(@Nullable Mutability mutability) {
-    return new SkylarkDict<>(mutability);
+  public static <K, V> Dict<K, V> withMutability(@Nullable Mutability mutability) {
+    return new Dict<>(mutability);
   }
 
   /** @return a dict mutable in given environment only */
-  public static <K, V> SkylarkDict<K, V> of(@Nullable StarlarkThread thread) {
-    return new SkylarkDict<>(thread);
+  public static <K, V> Dict<K, V> of(@Nullable StarlarkThread thread) {
+    return new Dict<>(thread);
   }
 
   /** @return a dict mutable in given environment only, with given initial key and value */
-  public static <K, V> SkylarkDict<K, V> of(@Nullable StarlarkThread thread, K k, V v) {
-    return SkylarkDict.<K, V>of(thread).putUnsafe(k, v);
+  public static <K, V> Dict<K, V> of(@Nullable StarlarkThread thread, K k, V v) {
+    return Dict.<K, V>of(thread).putUnsafe(k, v);
   }
 
   /** @return a dict mutable in given environment only, with two given initial key value pairs */
-  public static <K, V> SkylarkDict<K, V> of(
-      @Nullable StarlarkThread thread, K k1, V v1, K k2, V v2) {
-    return SkylarkDict.<K, V>of(thread).putUnsafe(k1, v1).putUnsafe(k2, v2);
+  public static <K, V> Dict<K, V> of(@Nullable StarlarkThread thread, K k1, V v1, K k2, V v2) {
+    return Dict.<K, V>of(thread).putUnsafe(k1, v1).putUnsafe(k2, v2);
   }
 
   // TODO(bazel-team): Make other methods that take in mutabilities instead of environments, make
   // this method public.
   @VisibleForTesting
-  static <K, V> SkylarkDict<K, V> copyOf(
+  static <K, V> Dict<K, V> copyOf(
       @Nullable Mutability mutability, Map<? extends K, ? extends V> m) {
-    return SkylarkDict.<K, V>withMutability(mutability).putAllUnsafe(m);
+    return Dict.<K, V>withMutability(mutability).putAllUnsafe(m);
   }
 
   /** @return a dict mutable in given environment only, with contents copied from given map */
-  public static <K, V> SkylarkDict<K, V> copyOf(
+  public static <K, V> Dict<K, V> copyOf(
       @Nullable StarlarkThread thread, Map<? extends K, ? extends V> m) {
-    return SkylarkDict.<K, V>of(thread).putAllUnsafe(m);
+    return Dict.<K, V>of(thread).putAllUnsafe(m);
   }
 
   /** Puts the given entry into the dict, without calling {@link #checkMutable}. */
-  private SkylarkDict<K, V> putUnsafe(K k, V v) {
+  private Dict<K, V> putUnsafe(K k, V v) {
     contents.put(k, v);
     return this;
   }
 
   /** Puts all entries of the given map into the dict, without calling {@link #checkMutable}. */
   @SuppressWarnings("unchecked")
-  private <KK extends K, VV extends V> SkylarkDict<K, V> putAllUnsafe(Map<KK, VV> m) {
+  private <KK extends K, VV extends V> Dict<K, V> putAllUnsafe(Map<KK, VV> m) {
     for (Map.Entry<KK, VV> e : m.entrySet()) {
       contents.put(e.getKey(), (VV) SkylarkType.convertToSkylark(e.getValue(), mutability));
     }
@@ -426,9 +422,9 @@
   }
 
   /**
-   * If {@code obj} is a {@code SkylarkDict}, casts it to an unmodifiable {@code Map<K, V>} after
-   * checking that each of its entries has key type {@code keyType} and value type {@code
-   * valueType}. If {@code obj} is {@code None} or null, treats it as an empty dict.
+   * If {@code obj} is a {@code Dict}, casts it to an unmodifiable {@code Map<K, V>} after checking
+   * that each of its entries has key type {@code keyType} and value type {@code valueType}. If
+   * {@code obj} is {@code None} or null, treats it as an empty dict.
    *
    * <p>The returned map may or may not be a view that is affected by updates to the original dict.
    *
@@ -443,8 +439,8 @@
     if (EvalUtils.isNullOrNone(obj)) {
       return empty();
     }
-    if (obj instanceof SkylarkDict) {
-      return ((SkylarkDict<?, ?>) obj).getContents(keyType, valueType, description);
+    if (obj instanceof Dict) {
+      return ((Dict<?, ?>) obj).getContents(keyType, valueType, description);
     }
     throw new EvalException(
         null,
@@ -454,8 +450,8 @@
   }
 
   /**
-   * Returns an unmodifiable view of this StarlarkDict coerced to type {@code SkylarkDict<X, Y>},
-   * after superficially checking that all keys and values are of class {@code keyType} and {@code
+   * Returns an unmodifiable view of this Dict coerced to type {@code Dict<X, Y>}, after
+   * superficially checking that all keys and values are of class {@code keyType} and {@code
    * valueType} respectively.
    *
    * <p>The returned map is a view that reflects subsequent updates to the original dict. If such
@@ -486,7 +482,7 @@
         SkylarkType.checkType(e.getValue(), valueType, valueDescription);
       }
     }
-    return Collections.unmodifiableMap((SkylarkDict<X, Y>) this);
+    return Collections.unmodifiableMap((Dict<X, Y>) this);
   }
 
   @Override
@@ -511,18 +507,18 @@
     return this.containsKey(key);
   }
 
-  public static <K, V> SkylarkDict<K, V> plus(
-      SkylarkDict<? extends K, ? extends V> left,
-      SkylarkDict<? extends K, ? extends V> right,
+  public static <K, V> Dict<K, V> plus(
+      Dict<? extends K, ? extends V> left,
+      Dict<? extends K, ? extends V> right,
       @Nullable StarlarkThread thread) {
-    SkylarkDict<K, V> result = SkylarkDict.of(thread);
+    Dict<K, V> result = Dict.of(thread);
     result.putAllUnsafe(left);
     result.putAllUnsafe(right);
     return result;
   }
 
   @SuppressWarnings("unchecked")
-  static <K, V> SkylarkDict<K, V> getDictFromArgs(
+  static <K, V> Dict<K, V> getDictFromArgs(
       String funcname, Object args, Location loc, @Nullable StarlarkThread thread)
       throws EvalException {
     Iterable<?> seq;
@@ -533,7 +529,7 @@
           loc,
           String.format("in %s, got %s, want iterable", funcname, EvalUtils.getDataTypeName(args)));
     }
-    SkylarkDict<K, V> result = SkylarkDict.of(thread);
+    Dict<K, V> result = Dict.of(thread);
     int pos = 0;
     for (Object item : seq) {
       Iterable<?> seq2;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
index f9d383e..eac8f81 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
@@ -277,8 +277,8 @@
   private static void assignItem(
       Object object, Object key, Object value, StarlarkThread thread, Location loc)
       throws EvalException {
-    if (object instanceof SkylarkDict) {
-      SkylarkDict<Object, Object> dict = (SkylarkDict<Object, Object>) object;
+    if (object instanceof Dict) {
+      Dict<Object, Object> dict = (Dict<Object, Object>) object;
       dict.put(key, value, loc);
     } else if (object instanceof StarlarkList) {
       StarlarkList<Object> list = (StarlarkList<Object>) object;
@@ -442,7 +442,7 @@
       case DICT_EXPR:
         {
           DictExpression dictexpr = (DictExpression) expr;
-          SkylarkDict<Object, Object> dict = SkylarkDict.of(thread);
+          Dict<Object, Object> dict = Dict.of(thread);
           Location loc = dictexpr.getLocation();
           for (DictExpression.Entry entry : dictexpr.getEntries()) {
             Object k = eval(thread, entry.getKey());
@@ -612,7 +612,7 @@
 
   private static Object evalComprehension(StarlarkThread thread, Comprehension comp)
       throws EvalException, InterruptedException {
-    final SkylarkDict<Object, Object> dict = comp.isDict() ? SkylarkDict.of(thread) : null;
+    final Dict<Object, Object> dict = comp.isDict() ? Dict.of(thread) : null;
     final ArrayList<Object> list = comp.isDict() ? null : new ArrayList<>();
 
     // Save values of all variables bound in a 'for' clause
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index 2d4a739..4e6472d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -181,7 +181,7 @@
         // TODO(adonovan): delete those below, and order those above by cost.
         // there is a registered Skylark ancestor class (useful e.g. when using AutoValue)
         || SkylarkInterfaceUtils.getSkylarkModule(c) != null
-        || ImmutableMap.class.isAssignableFrom(c); // will be converted to SkylarkDict
+        || ImmutableMap.class.isAssignableFrom(c); // will be converted to Dict
   }
 
   // TODO(bazel-team): move the following few type-related functions to SkylarkType
@@ -273,7 +273,7 @@
       return "bool";
     } else if (List.class.isAssignableFrom(c)) { // This is a Java List that isn't a Sequence
       return "List"; // This case shouldn't happen in normal code, but we keep it for debugging.
-    } else if (Map.class.isAssignableFrom(c)) { // This is a Java Map that isn't a SkylarkDict
+    } else if (Map.class.isAssignableFrom(c)) { // This is a Java Map that isn't a Dict
       return "Map"; // This case shouldn't happen in normal code, but we keep it for debugging.
     } else if (StarlarkCallable.class.isAssignableFrom(c)) {
       // TODO(adonovan): each StarlarkCallable should report its own type string.
@@ -309,9 +309,9 @@
       return ((Sequence) o).getImmutableList();
     } else if (o instanceof Map) {
       // For dictionaries we iterate through the keys only
-      if (o instanceof SkylarkDict) {
-        // SkylarkDicts handle ordering themselves
-        SkylarkDict<?, ?> dict = (SkylarkDict) o;
+      if (o instanceof Dict) {
+        // Dicts handle ordering themselves
+        Dict<?, ?> dict = (Dict) o;
         List<Object> list = Lists.newArrayListWithCapacity(dict.size());
         for (Map.Entry<?, ?> entries : dict.entrySet()) {
           list.add(entries.getKey());
@@ -539,7 +539,7 @@
   }
 
   /**
-   * Build a SkylarkDict of kwarg arguments from a list, removing null-s or None-s.
+   * Build a Dict of kwarg arguments from a list, removing null-s or None-s.
    *
    * @param thread the StarlarkThread in which this map can be mutated.
    * @param init a series of key, value pairs (as consecutive arguments) as in {@code optionMap(k1,
@@ -549,7 +549,7 @@
    *     <p>Ignore any entry where the value is null or None. Keys cannot be null.
    */
   @SuppressWarnings("unchecked")
-  public static <K, V> SkylarkDict<K, V> optionMap(StarlarkThread thread, Object... init) {
+  public static <K, V> Dict<K, V> optionMap(StarlarkThread thread, Object... init) {
     ImmutableMap.Builder<K, V> b = new ImmutableMap.Builder<>();
     Preconditions.checkState(init.length % 2 == 0);
     for (int i = init.length - 2; i >= 0; i -= 2) {
@@ -559,7 +559,7 @@
         b.put(key, value);
       }
     }
-    return SkylarkDict.copyOf(thread, b.build());
+    return Dict.copyOf(thread, b.build());
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index 6fbdd6d..166a698 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -271,7 +271,7 @@
       useStarlarkThread = true)
   public StarlarkList<?> reversed(Object sequence, Location loc, StarlarkThread thread)
       throws EvalException {
-    if (sequence instanceof SkylarkDict) {
+    if (sequence instanceof Dict) {
       throw new EvalException(loc, "Argument to reversed() must be a sequence, not a dictionary.");
     }
     ArrayDeque<Object> tmpList = new ArrayDeque<>();
@@ -605,14 +605,11 @@
       extraKeywords = @Param(name = "kwargs", doc = "Dictionary of additional entries."),
       useLocation = true,
       useStarlarkThread = true)
-  public SkylarkDict<?, ?> dict(
-      Object args, SkylarkDict<?, ?> kwargs, Location loc, StarlarkThread thread)
+  public Dict<?, ?> dict(Object args, Dict<?, ?> kwargs, Location loc, StarlarkThread thread)
       throws EvalException {
-    SkylarkDict<?, ?> argsDict =
-        args instanceof SkylarkDict
-            ? (SkylarkDict) args
-            : SkylarkDict.getDictFromArgs("dict", args, loc, thread);
-    return SkylarkDict.plus(argsDict, kwargs, thread);
+    Dict<?, ?> argsDict =
+        args instanceof Dict ? (Dict) args : Dict.getDictFromArgs("dict", args, loc, thread);
+    return Dict.plus(argsDict, kwargs, thread);
   }
 
   @SkylarkCallable(
@@ -1142,7 +1139,7 @@
       parameters = {
         @Param(
             name = "x",
-            type = SkylarkDict.class,
+            type = Dict.class,
             doc = "The parameter to convert.",
             // TODO(cparsons): This parameter should be positional-only.
             legacyNamed = true),
@@ -1154,8 +1151,7 @@
             named = true)
       },
       useLocation = true)
-  public Object select(SkylarkDict<?, ?> dict, String noMatchError, Location loc)
-      throws EvalException {
+  public Object select(Dict<?, ?> dict, String noMatchError, Location loc) throws EvalException {
     if (dict.isEmpty()) {
       throw new EvalException(
           loc,
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
index 43b3767..39fe0bf 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
@@ -170,8 +170,8 @@
   @AutoCodec
   public static final SkylarkFunctionType FUNCTION = new SkylarkFunctionType("unknown", TOP);
 
-  /** The DICT type, that contains SkylarkDict */
-  @AutoCodec public static final Simple DICT = Simple.forClass(SkylarkDict.class);
+  /** The DICT type, that contains Dict */
+  @AutoCodec public static final Simple DICT = Simple.forClass(Dict.class);
 
   /** The SEQUENCE type, that contains lists and tuples */
   // TODO(bazel-team): this was added for backward compatibility with the BUILD language,
@@ -774,7 +774,7 @@
       return object;
     }
     if (object instanceof Map) {
-      return SkylarkDict.<Object, Object>copyOf(mutability, (Map<?, ?>) object);
+      return Dict.<Object, Object>copyOf(mutability, (Map<?, ?>) object);
     }
     // TODO(bazel-team): ensure everything is a SkylarkValue at all times.
     // Preconditions.checkArgument(EvalUtils.isSkylarkAcceptable(
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkThread.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkThread.java
index a942720..ea2153d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkThread.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkThread.java
@@ -430,12 +430,12 @@
                   .equals(((SkylarkNestedSet) otherValue).toCollection())) {
             continue;
           }
-        } else if (value instanceof SkylarkDict) {
-          if (otherValue instanceof SkylarkDict) {
+        } else if (value instanceof Dict) {
+          if (otherValue instanceof Dict) {
             @SuppressWarnings("unchecked")
-            SkylarkDict<Object, Object> thisDict = (SkylarkDict<Object, Object>) value;
+            Dict<Object, Object> thisDict = (Dict<Object, Object>) value;
             @SuppressWarnings("unchecked")
-            SkylarkDict<Object, Object> otherDict = (SkylarkDict<Object, Object>) otherValue;
+            Dict<Object, Object> otherDict = (Dict<Object, Object>) otherValue;
             if (thisDict.size() == otherDict.size()
                 && thisDict.keySet().equals(otherDict.keySet())) {
               boolean foundProblem = false;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java b/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java
index 4225ec0..a468cae 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java
@@ -1054,11 +1054,11 @@
       extraKeywords =
           @Param(
               name = "kwargs",
-              type = SkylarkDict.class,
+              type = Dict.class,
               defaultValue = "{}",
               doc = "Dictionary of arguments."),
       useLocation = true)
-  public String format(String self, Sequence<?> args, SkylarkDict<?, ?> kwargs, Location loc)
+  public String format(String self, Sequence<?> args, Dict<?, ?> kwargs, Location loc)
       throws EvalException {
     @SuppressWarnings("unchecked")
     List<Object> argObjects = (List<Object>) args.getImmutableList();