bazel syntax: rename SkylarkList to Sequence

This is a breaking change for copybara.

PiperOrigin-RevId: 280090855
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
index def8e1a..25a199d 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkList;
 import com.google.devtools.build.lib.syntax.Tuple;
 import java.lang.reflect.Method;
@@ -64,7 +64,7 @@
       return "<a class=\"anchor\" href=\"tuple.html\">tuple</a>";
     } else if (type.equals(StarlarkList.class) || type.equals(ImmutableList.class)) {
       return "<a class=\"anchor\" href=\"list.html\">list</a>";
-    } else if (type.equals(SkylarkList.class)) {
+    } else if (type.equals(Sequence.class)) {
       return "<a class=\"anchor\" href=\"list.html\">sequence</a>";
     } else if (type.equals(Void.TYPE) || type.equals(NoneType.class)) {
       return "<a class=\"anchor\" href=\"" + TOP_LEVEL_ID + ".html#None\">None</a>";
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 999d8da..15ba03e 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
@@ -35,8 +35,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.CommandLineArgsApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.Root;
@@ -532,12 +532,12 @@
   }
 
   @Override
-  public SkylarkList<String> getSkylarkArgv() throws EvalException {
+  public Sequence<String> getSkylarkArgv() throws EvalException {
     return null;
   }
 
   @Override
-  public SkylarkList<CommandLineArgsApi> getStarlarkArgs() throws EvalException {
+  public Sequence<CommandLineArgsApi> getStarlarkArgs() throws EvalException {
     // Not all action types support returning Args.
     return null;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
index 9d5b6fb..543d8e0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
@@ -27,7 +27,7 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -130,7 +130,7 @@
   public static int maxCommandLength = OS.getCurrent() == OS.WINDOWS ? 8000 : 64000;
 
   /** {@link RunfilesSupplier}s for tools used by this rule. */
-  private final SkylarkList<RunfilesSupplier> toolsRunfilesSuppliers;
+  private final Sequence<RunfilesSupplier> toolsRunfilesSuppliers;
 
   /**
    * Use labelMap for heuristically expanding labels (does not include "outs")
@@ -208,7 +208,7 @@
     }
 
     this.resolvedTools = resolvedToolsBuilder.build();
-    this.toolsRunfilesSuppliers = SkylarkList.createImmutable(toolsRunfilesBuilder.build());
+    this.toolsRunfilesSuppliers = Sequence.createImmutable(toolsRunfilesBuilder.build());
     ImmutableMap.Builder<Label, ImmutableCollection<Artifact>> labelMapBuilder =
         ImmutableMap.builder();
     for (Map.Entry<Label, Collection<Artifact>> entry : tempLabelMap.entrySet()) {
@@ -221,7 +221,7 @@
     return resolvedTools;
   }
 
-  public SkylarkList<RunfilesSupplier> getToolsRunfilesSuppliers() {
+  public Sequence<RunfilesSupplier> getToolsRunfilesSuppliers() {
     return toolsRunfilesSuppliers;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index aed88d9..e9eb04f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -73,7 +73,7 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import com.google.devtools.build.lib.skylarkbuildapi.CommandLineArgsApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.build.lib.util.LazyString;
 import com.google.devtools.build.lib.util.Pair;
@@ -244,7 +244,7 @@
   }
 
   @Override
-  public SkylarkList<CommandLineArgsApi> getStarlarkArgs() throws EvalException {
+  public Sequence<CommandLineArgsApi> getStarlarkArgs() throws EvalException {
     ImmutableList.Builder<CommandLineArgsApi> result = ImmutableList.builder();
     ImmutableSet<Artifact> directoryInputs =
         Streams.stream(getInputs())
@@ -254,13 +254,13 @@
     for (CommandLineAndParamFileInfo commandLine : commandLines.getCommandLines()) {
       result.add(Args.forRegisteredAction(commandLine, directoryInputs));
     }
-    return SkylarkList.createImmutable(result.build());
+    return Sequence.createImmutable(result.build());
   }
 
   @Override
-  public SkylarkList<String> getSkylarkArgv() throws EvalException {
+  public Sequence<String> getSkylarkArgv() throws EvalException {
     try {
-      return SkylarkList.createImmutable(getArguments());
+      return Sequence.createImmutable(getArguments());
     } catch (CommandLineExpansionException exception) {
       throw new EvalException(Location.BUILTIN, exception);
     }
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 539dd82..7fca8b7 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
@@ -25,8 +25,8 @@
 import com.google.devtools.build.lib.syntax.BaseFunction;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import java.util.List;
@@ -249,11 +249,11 @@
         } catch (EvalException e) {
           throw new EvalException(impl.getLocation(), e.getMessage());
         }
-      } else if (result instanceof SkylarkList) {
+      } else if (result instanceof Sequence) {
         ImmutableList.Builder<Map<String, Object>> builder = ImmutableList.builder();
         try {
           for (SkylarkDict<?, ?> toOptions :
-              ((SkylarkList<?>) result)
+              ((Sequence<?>) result)
                   .getContents(SkylarkDict.class, "dictionary of options dictionaries")) {
             builder.add(toOptions.getContents(String.class, Object.class, "dictionary of options"));
           }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
index 6eb2138..2a0ddc9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
@@ -142,7 +142,7 @@
         return getLabel();
       case RuleConfiguredTarget.ACTIONS_FIELD_NAME:
         // Depending on subclass, the 'actions' field will either be unsupported or of type
-        // java.util.List, which needs to be converted to SkylarkList before being returned.
+        // java.util.List, which needs to be converted to Sequence before being returned.
         Object result = get(name);
         if (result != null) {
           result = SkylarkType.convertToSkylark(result, (Mutability) null);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintCollection.java
index f4dfdb2..4982828 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintCollection.java
@@ -37,7 +37,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.util.Fingerprint;
 import java.util.Collection;
 import java.util.Map;
@@ -229,8 +229,8 @@
   }
 
   @Override
-  public SkylarkList<ConstraintSettingInfo> constraintSettings() {
-    return SkylarkList.createImmutable(constraints().keySet());
+  public Sequence<ConstraintSettingInfo> constraintSettings() {
+    return Sequence.createImmutable(constraints().keySet());
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java
index a5eea45..35f98b7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FunctionSignature;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkMutable;
@@ -280,7 +280,7 @@
       if (argName != null) {
         commandLine.add(argName);
       }
-      if (value instanceof SkylarkNestedSet || value instanceof SkylarkList) {
+      if (value instanceof SkylarkNestedSet || value instanceof Sequence) {
         throw new EvalException(
             loc,
             "Args#add doesn't accept vectorized arguments. "
@@ -413,7 +413,7 @@
         vectorArg = new SkylarkCustomCommandLine.VectorArg.Builder(nestedSet);
       } else {
         @SuppressWarnings("unchecked")
-        SkylarkList<Object> skylarkList = (SkylarkList<Object>) value;
+        Sequence<Object> skylarkList = (Sequence<Object>) value;
         if (expandDirectories) {
           scanForDirectories(skylarkList);
         }
@@ -449,7 +449,7 @@
     }
 
     private void validateValues(Object values, Location loc) throws EvalException {
-      if (!(values instanceof SkylarkList || values instanceof SkylarkNestedSet)) {
+      if (!(values instanceof Sequence || values instanceof SkylarkNestedSet)) {
         throw new EvalException(
             loc,
             String.format(
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 eb6420a..4f07062 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
@@ -53,8 +53,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
@@ -206,7 +206,7 @@
         inputs instanceof SkylarkNestedSet
             ? ((SkylarkNestedSet) inputs).getSetFromParam(Artifact.class, "inputs")
             : NestedSetBuilder.<Artifact>compileOrder()
-                .addAll(((SkylarkList<?>) inputs).getContents(Artifact.class, "inputs"))
+                .addAll(((Sequence<?>) inputs).getContents(Artifact.class, "inputs"))
                 .build();
     Action action =
         new PseudoAction<>(
@@ -279,7 +279,7 @@
 
   @Override
   public void run(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object unusedInputsList,
       Object executableUnchecked,
@@ -296,7 +296,7 @@
     context.checkMutable("actions.run");
     StarlarkAction.Builder builder = new StarlarkAction.Builder();
 
-    SkylarkList<?> argumentsList = ((SkylarkList) arguments);
+    Sequence<?> argumentsList = ((Sequence) arguments);
     buildCommandLine(builder, argumentsList);
     if (executableUnchecked instanceof Artifact) {
       Artifact executable = (Artifact) executableUnchecked;
@@ -365,7 +365,7 @@
 
   @Override
   public void runShell(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object toolsUnchecked,
       Object arguments,
@@ -381,7 +381,7 @@
       throws EvalException {
     context.checkMutable("actions.run_shell");
 
-    SkylarkList<?> argumentList = (SkylarkList) arguments;
+    Sequence<?> argumentList = (Sequence) arguments;
     StarlarkAction.Builder builder = new StarlarkAction.Builder();
     buildCommandLine(builder, argumentList);
 
@@ -406,7 +406,7 @@
           builder.addTool(provider);
         }
       }
-    } else if (commandUnchecked instanceof SkylarkList) {
+    } else if (commandUnchecked instanceof Sequence) {
       if (semantics.incompatibleRunShellCommandString()) {
         throw new EvalException(
             location,
@@ -414,7 +414,7 @@
                 + " is deprecated. To temporarily disable this check,"
                 + " set --incompatible_objc_framework_cleanup=false.");
       }
-      SkylarkList<?> commandList = (SkylarkList) commandUnchecked;
+      Sequence<?> commandList = (Sequence) commandUnchecked;
       if (argumentList.size() > 0) {
         throw new EvalException(location,
             "'arguments' must be empty if 'command' is a sequence of strings");
@@ -449,7 +449,7 @@
         builder);
   }
 
-  private static void buildCommandLine(SpawnAction.Builder builder, SkylarkList<?> argumentsList)
+  private static void buildCommandLine(SpawnAction.Builder builder, Sequence<?> argumentsList)
       throws EvalException {
     List<String> stringArgs = new ArrayList<>();
     for (Object value : argumentsList) {
@@ -481,7 +481,7 @@
    * <p>{@code builder} should have either executable or a command set.
    */
   private void registerStarlarkAction(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object unusedInputsList,
       Object toolsUnchecked,
@@ -495,8 +495,8 @@
       StarlarkAction.Builder builder)
       throws EvalException {
     Iterable<Artifact> inputArtifacts;
-    if (inputs instanceof SkylarkList) {
-      inputArtifacts = ((SkylarkList<?>) inputs).getContents(Artifact.class, "inputs");
+    if (inputs instanceof Sequence) {
+      inputArtifacts = ((Sequence<?>) inputs).getContents(Artifact.class, "inputs");
       builder.addInputs(inputArtifacts);
     } else {
       NestedSet<Artifact> inputSet =
@@ -533,8 +533,8 @@
 
     if (toolsUnchecked != Starlark.UNBOUND) {
       Iterable<?> toolsIterable;
-      if (toolsUnchecked instanceof SkylarkList) {
-        toolsIterable = ((SkylarkList<?>) toolsUnchecked).getContents(Object.class, "tools");
+      if (toolsUnchecked instanceof Sequence) {
+        toolsIterable = ((Sequence<?>) toolsUnchecked).getContents(Object.class, "tools");
       } else {
         toolsIterable = ((SkylarkNestedSet) toolsUnchecked).getSet();
       }
@@ -625,8 +625,9 @@
     builder.setExecutionInfo(executionInfo);
 
     if (inputManifestsUnchecked != Starlark.NONE) {
-      for (RunfilesSupplier supplier : SkylarkList.castSkylarkListOrNoneToList(
-          inputManifestsUnchecked, RunfilesSupplier.class, "runfiles suppliers")) {
+      for (RunfilesSupplier supplier :
+          Sequence.castSkylarkListOrNoneToList(
+              inputManifestsUnchecked, RunfilesSupplier.class, "runfiles suppliers")) {
         builder.addRunfilesSupplier(supplier);
       }
     }
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 a3a631c..2e5b747 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
@@ -48,8 +48,8 @@
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -83,10 +83,9 @@
       builder.allowedFileTypes(FileTypeSet.ANY_FILE);
     } else if (fileTypesObj == Boolean.FALSE) {
       builder.allowedFileTypes(FileTypeSet.NO_FILE);
-    } else if (fileTypesObj instanceof SkylarkList) {
+    } else if (fileTypesObj instanceof Sequence) {
       List<String> arg =
-          SkylarkList.castSkylarkListOrNoneToList(
-              fileTypesObj, String.class, "allow_files argument");
+          Sequence.castSkylarkListOrNoneToList(fileTypesObj, String.class, "allow_files argument");
       builder.allowedFileTypes(FileType.of(arg));
     } else {
       throw new EvalException(
@@ -157,8 +156,8 @@
       }
     }
 
-    for (String flag : SkylarkList.castSkylarkListOrNoneToList(
-        arguments.get(FLAGS_ARG), String.class, FLAGS_ARG)) {
+    for (String flag :
+        Sequence.castSkylarkListOrNoneToList(arguments.get(FLAGS_ARG), String.class, FLAGS_ARG)) {
       builder.setPropertyFlag(flag);
     }
 
@@ -233,21 +232,21 @@
     Object ruleClassesObj = arguments.get(ALLOW_RULES_ARG);
     if (ruleClassesObj != null && ruleClassesObj != Starlark.NONE) {
       builder.allowedRuleClasses(
-          SkylarkList.castSkylarkListOrNoneToList(
+          Sequence.castSkylarkListOrNoneToList(
               ruleClassesObj, String.class, "allowed rule classes for attribute definition"));
     }
 
-    List<Object> values = SkylarkList.castSkylarkListOrNoneToList(
-        arguments.get(VALUES_ARG), Object.class, VALUES_ARG);
+    List<Object> values =
+        Sequence.castSkylarkListOrNoneToList(arguments.get(VALUES_ARG), Object.class, VALUES_ARG);
     if (!Iterables.isEmpty(values)) {
       builder.allowedValues(new AllowedValueSet(values));
     }
 
     if (containsNonNoneKey(arguments, PROVIDERS_ARG)) {
       Object obj = arguments.get(PROVIDERS_ARG);
-      SkylarkType.checkType(obj, SkylarkList.class, PROVIDERS_ARG);
-      ImmutableList<ImmutableSet<SkylarkProviderIdentifier>> providersList = buildProviderPredicate(
-          (SkylarkList<?>) obj, PROVIDERS_ARG, ast.getLocation());
+      SkylarkType.checkType(obj, Sequence.class, PROVIDERS_ARG);
+      ImmutableList<ImmutableSet<SkylarkProviderIdentifier>> providersList =
+          buildProviderPredicate((Sequence<?>) obj, PROVIDERS_ARG, ast.getLocation());
 
       // If there is at least one empty set, there is no restriction.
       if (providersList.stream().noneMatch(ImmutableSet::isEmpty)) {
@@ -298,10 +297,9 @@
 
     if (containsNonNoneKey(arguments, ASPECTS_ARG)) {
       Object obj = arguments.get(ASPECTS_ARG);
-      SkylarkType.checkType(obj, SkylarkList.class, ASPECTS_ARG);
+      SkylarkType.checkType(obj, Sequence.class, ASPECTS_ARG);
 
-      List<SkylarkAspect> aspects =
-          ((SkylarkList<?>) obj).getContents(SkylarkAspect.class, "aspects");
+      List<SkylarkAspect> aspects = ((Sequence<?>) obj).getContents(SkylarkAspect.class, "aspects");
       for (SkylarkAspect aspect : aspects) {
         aspect.attachToAttribute(builder, ast.getLocation());
       }
@@ -311,14 +309,15 @@
   }
 
   /**
-   * Builds a list of sets of accepted providers from Skylark list {@code obj}.
-   * The list can either be a list of providers (in that case the result is a list with one
-   * set) or a list of lists of providers (then the result is the list of sets).
+   * Builds a list of sets of accepted providers from Skylark list {@code obj}. The list can either
+   * be a list of providers (in that case the result is a list with one set) or a list of lists of
+   * providers (then the result is the list of sets).
+   *
    * @param argumentName used in error messages.
    * @param location location for error messages.
    */
   static ImmutableList<ImmutableSet<SkylarkProviderIdentifier>> buildProviderPredicate(
-      SkylarkList<?> obj, String argumentName, Location location) throws EvalException {
+      Sequence<?> obj, String argumentName, Location location) throws EvalException {
     if (obj.isEmpty()) {
       return ImmutableList.of();
     }
@@ -345,11 +344,11 @@
   }
 
   /**
-   * Converts Skylark identifiers of providers (either a string or a provider value)
-   * to their internal representations.
+   * Converts Skylark identifiers of providers (either a string or a provider value) to their
+   * internal representations.
    */
   static ImmutableSet<SkylarkProviderIdentifier> getSkylarkProviderIdentifiers(
-      SkylarkList<?> list, Location location) throws EvalException {
+      Sequence<?> list, Location location) throws EvalException {
     ImmutableList.Builder<SkylarkProviderIdentifier> result = ImmutableList.builder();
 
     for (Object obj : list) {
@@ -368,7 +367,7 @@
   }
 
   private static ImmutableList<ImmutableSet<SkylarkProviderIdentifier>> getProvidersList(
-      SkylarkList<?> skylarkList, String argumentName, Location location) throws EvalException {
+      Sequence<?> skylarkList, String argumentName, Location location) throws EvalException {
     ImmutableList.Builder<ImmutableSet<SkylarkProviderIdentifier>> providersList =
         ImmutableList.builder();
     String errorMsg = "Illegal argument: element in '%s' is of unexpected type. "
@@ -376,18 +375,18 @@
         + "or all elements should be lists of providers, but got %s.";
 
     for (Object o : skylarkList) {
-      if (!(o instanceof SkylarkList)) {
+      if (!(o instanceof Sequence)) {
         throw new EvalException(location, String.format(errorMsg, PROVIDERS_ARG,
             "an element of type " + EvalUtils.getDataTypeName(o, true)));
       }
-      for (Object value : (SkylarkList) o) {
+      for (Object value : (Sequence) o) {
         if (!isProvider(value)) {
           throw new EvalException(location, String.format(errorMsg, argumentName,
               "list with an element of type "
                   + EvalUtils.getDataTypeNameFromClass(value.getClass())));
         }
       }
-      providersList.add(getSkylarkProviderIdentifiers((SkylarkList<?>) o, location));
+      providersList.add(getSkylarkProviderIdentifiers((Sequence<?>) o, location));
     }
     return providersList.build();
   }
@@ -454,7 +453,7 @@
       Integer defaultInt,
       String doc,
       Boolean mandatory,
-      SkylarkList<?> values,
+      Sequence<?> values,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -474,7 +473,7 @@
       String defaultString,
       String doc,
       Boolean mandatory,
-      SkylarkList<?> values,
+      Sequence<?> values,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -496,11 +495,11 @@
       Object allowFiles,
       Object allowSingleFile,
       Boolean mandatory,
-      SkylarkList<?> providers,
+      Sequence<?> providers,
       Object allowRules,
       Boolean singleFile,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -546,7 +545,7 @@
       Boolean mandatory,
       Boolean nonEmpty,
       Boolean allowEmpty,
-      SkylarkList<?> defaultList,
+      Sequence<?> defaultList,
       String doc,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -574,7 +573,7 @@
       Boolean mandatory,
       Boolean nonEmpty,
       Boolean allowEmpty,
-      SkylarkList<?> defaultList,
+      Sequence<?> defaultList,
       String doc,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -604,12 +603,12 @@
       String doc,
       Object allowFiles,
       Object allowRules,
-      SkylarkList<?> providers,
-      SkylarkList<?> flags,
+      Sequence<?> providers,
+      Sequence<?> flags,
       Boolean mandatory,
       Boolean nonEmpty,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -653,12 +652,12 @@
       String doc,
       Object allowFiles,
       Object allowRules,
-      SkylarkList<?> providers,
-      SkylarkList<?> flags,
+      Sequence<?> providers,
+      Sequence<?> flags,
       Boolean mandatory,
       Boolean nonEmpty,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java
index 573bcca..d7a61e9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAttributesCollectionApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -218,7 +218,7 @@
       } else if (type == BuildType.LABEL_LIST
           || (type == BuildType.LABEL && a.getTransitionFactory().isSplit())) {
         List<?> allPrereq = context.getRuleContext().getPrerequisites(a.getName(), Mode.DONT_CHECK);
-        attrBuilder.put(skyname, SkylarkList.createImmutable(allPrereq));
+        attrBuilder.put(skyname, Sequence.createImmutable(allPrereq));
       } else if (type == BuildType.LABEL_KEYED_STRING_DICT) {
         ImmutableMap.Builder<TransitiveInfoCollection, String> builder = ImmutableMap.builder();
         Map<Label, String> original = BuildType.LABEL_KEYED_STRING_DICT.cast(val);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
index 4865871..ea3b4b1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
@@ -40,7 +40,7 @@
 import com.google.devtools.build.lib.syntax.BaseFunction;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -465,7 +465,7 @@
     }
 
     static class Builder {
-      @Nullable private final SkylarkList<?> list;
+      @Nullable private final Sequence<?> list;
       @Nullable private final NestedSet<?> nestedSet;
       private Location location;
       public String argName;
@@ -480,7 +480,7 @@
       private boolean uniquify;
       private String terminateWith;
 
-      Builder(SkylarkList<?> list) {
+      Builder(Sequence<?> list) {
         this.list = list;
         this.nestedSet = null;
       }
@@ -827,8 +827,8 @@
         Object ret = mapFn.callWithArgArray(args, null, thread, location);
         if (ret instanceof String) {
           consumer.accept((String) ret);
-        } else if (ret instanceof SkylarkList) {
-          for (Object val : ((SkylarkList) ret)) {
+        } else if (ret instanceof Sequence) {
+          for (Object val : ((Sequence) ret)) {
             if (!(val instanceof String)) {
               throw new CommandLineExpansionException(
                   "Expected map_each to return string, None, or list of strings, "
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 38a8fbd..b30f3c2 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
@@ -86,8 +86,8 @@
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -253,12 +253,15 @@
   @Override
   public Provider provider(String doc, Object fields, Location location) throws EvalException {
     Iterable<String> fieldNames = null;
-    if (fields instanceof SkylarkList<?>) {
+    if (fields instanceof Sequence<?>) {
       @SuppressWarnings("unchecked")
-      SkylarkList<String> list = (SkylarkList<String>)
+      Sequence<String> list =
+          (Sequence<String>)
               SkylarkType.cast(
                   fields,
-                  SkylarkList.class, String.class, location,
+                  Sequence.class,
+                  String.class,
+                  location,
                   "Expected list of strings or dictionary of string -> string for 'fields'");
       fieldNames = list;
     }  else  if (fields instanceof SkylarkDict) {
@@ -280,13 +283,13 @@
       Object implicitOutputs,
       Boolean executable,
       Boolean outputToGenfiles,
-      SkylarkList<?> fragments,
-      SkylarkList<?> hostFragments,
+      Sequence<?> fragments,
+      Sequence<?> hostFragments,
       Boolean skylarkTestable,
-      SkylarkList<?> toolchains,
+      Sequence<?> toolchains,
       String doc,
-      SkylarkList<?> providesArg,
-      SkylarkList<?> execCompatibleWith,
+      Sequence<?> providesArg,
+      Sequence<?> execCompatibleWith,
       Object analysisTest,
       Object buildSetting,
       Object cfg,
@@ -483,13 +486,13 @@
   @Override
   public SkylarkAspect aspect(
       StarlarkFunction implementation,
-      SkylarkList<?> attributeAspects,
+      Sequence<?> attributeAspects,
       Object attrs,
-      SkylarkList<?> requiredAspectProvidersArg,
-      SkylarkList<?> providesArg,
-      SkylarkList<?> fragments,
-      SkylarkList<?> hostFragments,
-      SkylarkList<?> toolchains,
+      Sequence<?> requiredAspectProvidersArg,
+      Sequence<?> providesArg,
+      Sequence<?> fragments,
+      Sequence<?> hostFragments,
+      Sequence<?> toolchains,
       String doc,
       Boolean applyToGeneratingRules,
       FuncallExpression ast, // just for getLocation(); TODO(adonovan): simplify
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
index 351e0f0..c94ae01 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
@@ -56,7 +56,7 @@
 import com.google.devtools.build.lib.syntax.EvalExceptionWithStackTrace;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -247,24 +247,23 @@
     }
   }
 
-  @SuppressWarnings("unchecked") // Casting SkylarkList to List<String> is checked by cast().
+  @SuppressWarnings("unchecked") // Casting Sequence to List<String> is checked by cast().
   private static void addInstrumentedFiles(
       StructImpl insStruct, RuleContext ruleContext, RuleConfiguredTargetBuilder builder)
       throws EvalException {
     Location insLoc = insStruct.getCreationLoc();
     List<String> extensions = null;
     if (insStruct.getFieldNames().contains("extensions")) {
-      extensions = cast("extensions", insStruct, SkylarkList.class, String.class, insLoc);
+      extensions = cast("extensions", insStruct, Sequence.class, String.class, insLoc);
     }
     List<String> dependencyAttributes = Collections.emptyList();
     if (insStruct.getFieldNames().contains("dependency_attributes")) {
       dependencyAttributes =
-          cast("dependency_attributes", insStruct, SkylarkList.class, String.class, insLoc);
+          cast("dependency_attributes", insStruct, Sequence.class, String.class, insLoc);
     }
     List<String> sourceAttributes = Collections.emptyList();
     if (insStruct.getFieldNames().contains("source_attributes")) {
-      sourceAttributes =
-          cast("source_attributes", insStruct, SkylarkList.class, String.class, insLoc);
+      sourceAttributes = cast("source_attributes", insStruct, Sequence.class, String.class, insLoc);
     }
     InstrumentedFilesInfo instrumentedFilesProvider =
         CoverageCommon.createInstrumentedFilesInfo(
@@ -282,9 +281,9 @@
         "Output group '%s' is of unexpected type. "
             + "Should be list or set of Files, but got '%s' instead.";
 
-    if (objects instanceof SkylarkList) {
+    if (objects instanceof Sequence) {
       NestedSetBuilder<Artifact> nestedSetBuilder = NestedSetBuilder.stableOrder();
-      for (Object o : (SkylarkList) objects) {
+      for (Object o : (Sequence) objects) {
         if (o instanceof Artifact) {
           nestedSetBuilder.add((Artifact) o);
         } else {
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 95c8e46..545080a 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
@@ -81,9 +81,9 @@
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkList;
@@ -211,7 +211,7 @@
             outputs.addOutput(attrName, Starlark.NONE);
           }
         } else if (type == BuildType.OUTPUT_LIST) {
-          outputs.addOutput(attrName, SkylarkList.createImmutable(artifacts));
+          outputs.addOutput(attrName, Sequence.createImmutable(artifacts));
         } else {
           throw new IllegalArgumentException(
               "Type of " + attrName + "(" + type + ") is not output type ");
@@ -444,7 +444,7 @@
           value = splitPrereq.getValue().get(0);
         } else {
           // BuildType.LABEL_LIST
-          value = SkylarkList.createImmutable(splitPrereq.getValue());
+          value = Sequence.createImmutable(splitPrereq.getValue());
         }
 
         if (splitPrereq.getKey().isPresent()) {
@@ -700,7 +700,7 @@
   }
 
   @Override
-  public SkylarkList<String> tokenize(String optionString) throws EvalException {
+  public Sequence<String> tokenize(String optionString) throws EvalException {
     checkMutable("tokenize");
     List<String> options = new ArrayList<>();
     try {
@@ -708,13 +708,13 @@
     } catch (TokenizationException e) {
       throw new EvalException(null, e.getMessage() + " while tokenizing '" + optionString + "'");
     }
-    return SkylarkList.createImmutable(options);
+    return Sequence.createImmutable(options);
   }
 
   @Override
   public String expand(
       @Nullable String expression,
-      SkylarkList<?> artifacts, // <Artifact>
+      Sequence<?> artifacts, // <Artifact>
       Label labelResolver)
       throws EvalException {
     checkMutable("expand");
@@ -799,7 +799,7 @@
   }
 
   @Override
-  public boolean checkPlaceholders(String template, SkylarkList<?> allowedPlaceholders) // <String>
+  public boolean checkPlaceholders(String template, Sequence<?> allowedPlaceholders) // <String>
       throws EvalException {
     checkMutable("check_placeholders");
     List<String> actualPlaceHolders = new LinkedList<>();
@@ -877,7 +877,7 @@
    */
   @Override
   public NoneType action(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object executableUnchecked,
       Object toolsUnchecked,
@@ -938,8 +938,7 @@
 
   @Override
   public String expandLocation(
-      String input, SkylarkList<?> targets, Location loc, StarlarkThread thread)
-      throws EvalException {
+      String input, Sequence<?> targets, Location loc, StarlarkThread thread) throws EvalException {
     checkMutable("expand_location");
     try {
       return LocationExpander.withExecPaths(
@@ -988,7 +987,7 @@
 
   @Override
   public Runfiles runfiles(
-      SkylarkList<?> files,
+      Sequence<?> files,
       Object transitiveFiles,
       Boolean collectData,
       Boolean collectDefault,
@@ -1042,7 +1041,7 @@
       Object attributeUnchecked,
       Boolean expandLocations,
       Object makeVariablesUnchecked,
-      SkylarkList<?> tools,
+      Sequence<?> tools,
       SkylarkDict<?, ?> labelDictUnchecked,
       SkylarkDict<?, ?> executionRequirementsUnchecked,
       Location loc,
@@ -1097,7 +1096,7 @@
   }
 
   @Override
-  public Tuple<Object> resolveTools(SkylarkList<?> tools) throws EvalException {
+  public Tuple<Object> resolveTools(Sequence<?> tools) throws EvalException {
     checkMutable("resolve_tools");
     CommandHelper helper =
         CommandHelper.builder(getRuleContext())
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
index 59d1854..11f954b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.test.InstrumentedFilesInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.util.FileType;
 import com.google.devtools.build.lib.util.FileTypeSet;
@@ -40,15 +40,15 @@
   @SuppressWarnings("unchecked") // Casting extensions param is verified by Starlark interpreter.
   public InstrumentedFilesInfoApi instrumentedFilesInfo(
       SkylarkRuleContext skylarkRuleContext,
-      SkylarkList<?> sourceAttributes, // <String>
-      SkylarkList<?> dependencyAttributes, // <String>
+      Sequence<?> sourceAttributes, // <String>
+      Sequence<?> dependencyAttributes, // <String>
       Object extensions,
       Location location)
       throws EvalException {
     List<String> extensionsList =
         extensions == Starlark.NONE
             ? null
-            : SkylarkList.castList((List<?>) extensions, String.class, "extensions");
+            : Sequence.castList((List<?>) extensions, String.class, "extensions");
 
     return createInstrumentedFilesInfo(
         location,
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 c89f705..09fa943 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
@@ -56,8 +56,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.repository.SkylarkRepositoryContextApi;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
@@ -376,7 +376,7 @@
 
   @Override
   public SkylarkExecutionResult execute(
-      SkylarkList<?> arguments, // <String> or <SkylarkPath> expected
+      Sequence<?> arguments, // <String> or <SkylarkPath> expected
       Integer timeout,
       SkylarkDict<?, ?> uncheckedEnvironment, // <String, String> expected
       boolean quiet,
@@ -1001,8 +1001,8 @@
       if (value instanceof Label) {
         getPathFromLabel((Label) value);
       }
-      if (value instanceof SkylarkList) {
-        for (Object entry : (SkylarkList) value) {
+      if (value instanceof Sequence) {
+        for (Object entry : (Sequence) value) {
           if (entry instanceof Label) {
             getPathFromLabel((Label) entry);
           }
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
index f6e2fcb..2b337e6 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
@@ -46,7 +46,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -63,7 +63,7 @@
       BaseFunction implementation,
       Object attrs,
       Boolean local,
-      SkylarkList<?> environ, // <String> expected
+      Sequence<?> environ, // <String> expected
       Boolean configure,
       String doc,
       FuncallExpression ast,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
index b7b3d87..e5c4565 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
@@ -33,7 +33,7 @@
 import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.BazelCcModuleApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.syntax.Tuple;
 
@@ -69,21 +69,21 @@
       SkylarkActionFactory skylarkActionFactoryApi,
       FeatureConfigurationForStarlark skylarkFeatureConfiguration,
       CcToolchainProvider skylarkCcToolchainProvider,
-      SkylarkList<?> sources, // <Artifact> expected
-      SkylarkList<?> publicHeaders, // <Artifact> expected
-      SkylarkList<?> privateHeaders, // <Artifact> expected
-      SkylarkList<?> includes, // <String> expected
-      SkylarkList<?> quoteIncludes, // <String> expected
-      SkylarkList<?> systemIncludes, // <String> expected
-      SkylarkList<?> frameworkIncludes, // <String> expected
-      SkylarkList<?> defines, // <String> expected
-      SkylarkList<?> localDefines, // <String> expected
-      SkylarkList<?> userCompileFlags, // <String> expected
-      SkylarkList<?> ccCompilationContexts, // <CcCompilationContext> expected
+      Sequence<?> sources, // <Artifact> expected
+      Sequence<?> publicHeaders, // <Artifact> expected
+      Sequence<?> privateHeaders, // <Artifact> expected
+      Sequence<?> includes, // <String> expected
+      Sequence<?> quoteIncludes, // <String> expected
+      Sequence<?> systemIncludes, // <String> expected
+      Sequence<?> frameworkIncludes, // <String> expected
+      Sequence<?> defines, // <String> expected
+      Sequence<?> localDefines, // <String> expected
+      Sequence<?> userCompileFlags, // <String> expected
+      Sequence<?> ccCompilationContexts, // <CcCompilationContext> expected
       String name,
       boolean disallowPicOutputs,
       boolean disallowNopicOutputs,
-      SkylarkList<?> additionalInputs, // <Artifact> expected
+      Sequence<?> additionalInputs, // <Artifact> expected
       Location location,
       StarlarkThread thread)
       throws EvalException, InterruptedException {
@@ -107,8 +107,7 @@
         disallowNopicOutputs,
         /* grepIncludes= */ null,
         /* headersForClifDoNotUseThisParam= */ ImmutableList.of(),
-        SkylarkList.createImmutable(
-            additionalInputs.getContents(Artifact.class, "additional_inputs")),
+        Sequence.createImmutable(additionalInputs.getContents(Artifact.class, "additional_inputs")),
         location,
         /* thread= */ null);
   }
@@ -119,13 +118,13 @@
       FeatureConfigurationForStarlark skylarkFeatureConfiguration,
       CcToolchainProvider skylarkCcToolchainProvider,
       Object compilationOutputs,
-      SkylarkList<?> userLinkFlags, // <String> expected
-      SkylarkList<?> linkingContexts, // <CcLinkingContext> expected
+      Sequence<?> userLinkFlags, // <String> expected
+      Sequence<?> linkingContexts, // <CcLinkingContext> expected
       String name,
       String language,
       String outputType,
       boolean linkDepsStatically,
-      SkylarkList<?> additionalInputs, // <Artifact> expected
+      Sequence<?> additionalInputs, // <Artifact> expected
       Object grepIncludes,
       Location location,
       StarlarkThread thread)
@@ -154,8 +153,8 @@
   }
 
   @Override
-  public CcCompilationOutputs mergeCcCompilationOutputsFromSkylark(
-      SkylarkList<?> compilationOutputs) throws EvalException {
+  public CcCompilationOutputs mergeCcCompilationOutputsFromSkylark(Sequence<?> compilationOutputs)
+      throws EvalException {
     CcCompilationOutputs.Builder ccCompilationOutputsBuilder = CcCompilationOutputs.builder();
     for (CcCompilationOutputs ccCompilationOutputs :
         compilationOutputs.getContents(CcCompilationOutputs.class, "compilation_outputs")) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index 6e2197d..f087893 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -57,7 +57,7 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import com.google.devtools.build.lib.syntax.BaseFunction;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.util.FileTypeSet;
 import com.google.devtools.build.lib.util.StringUtil;
@@ -2057,8 +2057,8 @@
       Object attributeValue = attributes.get(attributeName, attr.getType());
 
       boolean isEmpty = false;
-      if (attributeValue instanceof SkylarkList) {
-        isEmpty = ((SkylarkList<?>) attributeValue).isEmpty();
+      if (attributeValue instanceof Sequence) {
+        isEmpty = ((Sequence<?>) attributeValue).isEmpty();
       } else if (attributeValue instanceof List<?>) {
         isEmpty = ((List<?>) attributeValue).isEmpty();
       } else if (attributeValue instanceof Map<?, ?>) {
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 d56cc2a..e363753 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
@@ -37,8 +37,8 @@
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -75,9 +75,9 @@
   }
 
   @Override
-  public SkylarkList<?> glob(
-      SkylarkList<?> include,
-      SkylarkList<?> exclude,
+  public Sequence<?> glob(
+      Sequence<?> include,
+      Sequence<?> exclude,
       Integer excludeDirs,
       Object allowEmptyArgument,
       Location loc,
@@ -160,8 +160,8 @@
   @Override
   public NoneType packageGroup(
       String name,
-      SkylarkList<?> packagesO,
-      SkylarkList<?> includesO,
+      Sequence<?> packagesO,
+      Sequence<?> includesO,
       Location loc,
       StarlarkThread thread)
       throws EvalException {
@@ -187,11 +187,7 @@
 
   @Override
   public NoneType exportsFiles(
-      SkylarkList<?> srcs,
-      Object visibilityO,
-      Object licensesO,
-      Location loc,
-      StarlarkThread thread)
+      Sequence<?> srcs, Object visibilityO, Object licensesO, Location loc, StarlarkThread thread)
       throws EvalException {
     SkylarkUtils.checkLoadingPhase(thread, "native.exports_files", loc);
     Package.Builder pkgBuilder = getContext(thread, loc).pkgBuilder;
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
index 6e89c94..4839695 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
@@ -28,7 +28,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import java.util.List;
@@ -69,14 +69,14 @@
         // Both parameter below are lists of label designators
         @Param(
             name = "environments",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = Object.class,
             positional = false,
             named = true,
             doc = "A list of Labels for the environments to be grouped, from the same package."),
         @Param(
             name = "defaults",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = Object.class,
             positional = false,
             named = true,
@@ -89,8 +89,8 @@
       useStarlarkThread = true)
   public NoneType environmentGroup(
       String name,
-      SkylarkList<?> environmentsList, // <Label>
-      SkylarkList<?> defaultsList, // <Label>
+      Sequence<?> environmentsList, // <Label>
+      Sequence<?> defaultsList, // <Label>
       Location loc,
       StarlarkThread thread)
       throws EvalException {
@@ -126,7 +126,7 @@
       parameters = {
         @Param(
             name = "license_strings",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             doc = "A list of strings, the names of the licenses used.")
       },
@@ -136,7 +136,7 @@
       useStarlarkThread = true,
       useLocation = true)
   public NoneType invoke(
-      SkylarkList<?> licensesList, // list of license strings
+      Sequence<?> licensesList, // list of license strings
       Location loc,
       StarlarkThread thread)
       throws EvalException {
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 b061b53..46bcbb3 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
@@ -27,8 +27,8 @@
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -246,8 +246,8 @@
 
   private void printProtoTextMessage(
       String key, Object value, StringBuilder sb, int indent, Location loc) throws EvalException {
-    if (value instanceof SkylarkList) {
-      for (Object item : ((SkylarkList) value)) {
+    if (value instanceof Sequence) {
+      for (Object item : ((Sequence) value)) {
         // TODO(bazel-team): There should be some constraint on the fields of the structs
         // in the same list but we ignore that for now.
         printProtoTextMessage(key, item, sb, indent, loc, "list element in struct field");
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Type.java b/src/main/java/com/google/devtools/build/lib/packages/Type.java
index 32b70bf..04af9bc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Type.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Type.java
@@ -25,7 +25,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.util.LoggingUtil;
 import com.google.devtools.build.lib.util.StringCanonicalizer;
 import java.util.ArrayList;
@@ -672,8 +672,8 @@
     public List<Object> convert(Object x, Object what, Object context)
         throws ConversionException {
       // TODO(adonovan): converge on EvalUtils.toIterable.
-      if (x instanceof SkylarkList) {
-        return ((SkylarkList) x).getImmutableList();
+      if (x instanceof Sequence) {
+        return ((Sequence) x).getImmutableList();
       } else if (x instanceof List) {
         return (List<Object>) x;
       } else if (x instanceof Iterable) {
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 36b12c6..854e99c 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
@@ -31,8 +31,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.WorkspaceGlobalsApi;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.List;
@@ -106,7 +106,7 @@
   }
 
   private void parseManagedDirectories(
-      Map<String, ?> managedDirectories, // <String, SkylarkList<String>>
+      Map<String, ?> managedDirectories, // <String, Sequence<String>>
       Location loc)
       throws EvalException {
     Map<PathFragment, String> nonNormalizedPathsMap = Maps.newHashMap();
@@ -158,14 +158,14 @@
   private static List<PathFragment> getManagedDirectoriesPaths(
       Object directoriesList, Location location, Map<PathFragment, String> nonNormalizedPathsMap)
       throws EvalException {
-    if (!(directoriesList instanceof SkylarkList)) {
+    if (!(directoriesList instanceof Sequence)) {
       throw new EvalException(
           location,
           "managed_directories attribute value should be of the type attr.string_list_dict(),"
               + " mapping repository name to the list of managed directories.");
     }
     List<PathFragment> result = Lists.newArrayList();
-    for (Object obj : (SkylarkList) directoriesList) {
+    for (Object obj : (Sequence) directoriesList) {
       if (!(obj instanceof String)) {
         throw new EvalException(
             location,
@@ -221,7 +221,7 @@
 
   @Override
   public NoneType registerExecutionPlatforms(
-      SkylarkList<?> platformLabels, Location location, StarlarkThread thread)
+      Sequence<?> platformLabels, Location location, StarlarkThread thread)
       throws EvalException, InterruptedException {
     // Add to the package definition for later.
     Package.Builder builder = PackageFactory.getContext(thread, location).pkgBuilder;
@@ -232,7 +232,7 @@
 
   @Override
   public NoneType registerToolchains(
-      SkylarkList<?> toolchainLabels, Location location, StarlarkThread thread)
+      Sequence<?> toolchainLabels, Location location, StarlarkThread thread)
       throws EvalException, InterruptedException {
     // Add to the package definition for later.
     Package.Builder builder = PackageFactory.getContext(thread, location).pkgBuilder;
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 8869bb7..196f4dc 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
@@ -28,8 +28,8 @@
 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.EvalException;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import java.util.Collection;
 import java.util.LinkedHashSet;
@@ -322,8 +322,8 @@
         Object manifest,
         Object generatedManifest,
         Object idlImportRoot,
-        SkylarkList<?> idlSrcs, // <Artifact>
-        SkylarkList<?> idlGeneratedJavaFiles, // <Artifact>
+        Sequence<?> idlSrcs, // <Artifact>
+        Sequence<?> idlGeneratedJavaFiles, // <Artifact>
         Object idlSourceJar,
         Object idlClassJar,
         boolean definesAndroidResources,
@@ -331,7 +331,7 @@
         Object resourceApk,
         Object signedApk,
         Object aar,
-        SkylarkList<?> apksUnderTest, // <Artifact>
+        Sequence<?> apksUnderTest, // <Artifact>
         SkylarkDict<?, ?> nativeLibs) // <String, SkylarkNestedSet>
         throws EvalException {
       Map<String, SkylarkNestedSet> nativeLibsMap =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidProguardInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidProguardInfo.java
index 21cef79..355a028 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidProguardInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidProguardInfo.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.rules.java.ProguardLibrary;
 import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidProguardInfoApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /**
  * A target that can provide local proguard specifications, returned by the {@link
@@ -55,7 +55,7 @@
     }
 
     @Override
-    public AndroidProguardInfo createInfo(SkylarkList<?> localProguardSpecs) // <Artifact>
+    public AndroidProguardInfo createInfo(Sequence<?> localProguardSpecs) // <Artifact>
         throws EvalException {
       return new AndroidProguardInfo(
           ImmutableList.copyOf(
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 79a09f6..0a9c333 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
@@ -43,8 +43,8 @@
 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.EvalException;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -72,7 +72,7 @@
 
   @Override
   public AndroidAssetsInfo assetsFromDeps(
-      SkylarkList<?> deps, // <AndroidAssetsInfo>
+      Sequence<?> deps, // <AndroidAssetsInfo>
       boolean neverlink,
       StarlarkThread thread)
       throws EvalException {
@@ -86,8 +86,8 @@
   @Override
   public AndroidResourcesInfo resourcesFromDeps(
       AndroidDataContext ctx,
-      SkylarkList<?> deps, // <AndroidResourcesInfo>
-      SkylarkList<?> assets, // <AndroidAssetsInfo>
+      Sequence<?> deps, // <AndroidResourcesInfo>
+      Sequence<?> assets, // <AndroidAssetsInfo>
       boolean neverlink,
       String customPackage,
       Location location,
@@ -139,7 +139,7 @@
       AndroidDataContext ctx,
       Object assets,
       Object assetsDir,
-      SkylarkList<?> deps, // <AndroidAssetsInfo>
+      Sequence<?> deps, // <AndroidAssetsInfo>
       boolean neverlink,
       Location location,
       StarlarkThread thread)
@@ -166,8 +166,8 @@
   public ValidatedAndroidResources mergeRes(
       AndroidDataContext ctx,
       AndroidManifestInfo manifest,
-      SkylarkList<?> resources, // <ConfiguredTarget>
-      SkylarkList<?> deps, // <AndroidResourcesInfo>
+      Sequence<?> resources, // <ConfiguredTarget>
+      Sequence<?> deps, // <AndroidResourcesInfo>
       boolean neverlink,
       boolean enableDataBinding,
       Location location,
@@ -197,8 +197,8 @@
   public SkylarkDict<Provider, NativeInfo> mergeResources(
       AndroidDataContext ctx,
       AndroidManifestInfo manifest,
-      SkylarkList<?> resources, // <ConfiguredTarget>
-      SkylarkList<?> deps, // <AndroidResourcesInfo>
+      Sequence<?> resources, // <ConfiguredTarget>
+      Sequence<?> deps, // <AndroidResourcesInfo>
       boolean neverlink,
       boolean enableDataBinding,
       Location location,
@@ -222,8 +222,8 @@
       AndroidResourcesInfo resourcesInfo,
       AndroidAssetsInfo assetsInfo,
       Artifact libraryClassJar,
-      SkylarkList<?> localProguardSpecs, // <Artifact>
-      SkylarkList<?> deps, // <AndroidLibraryAarInfo>
+      Sequence<?> localProguardSpecs, // <Artifact>
+      Sequence<?> deps, // <AndroidLibraryAarInfo>
       boolean neverlink)
       throws EvalException, InterruptedException {
     if (neverlink) {
@@ -276,7 +276,7 @@
       SpecialArtifact resources,
       SpecialArtifact assets,
       Artifact androidManifestArtifact,
-      SkylarkList<?> deps) // <ConfiguredTarget>
+      Sequence<?> deps) // <ConfiguredTarget>
       throws InterruptedException, EvalException {
     List<ConfiguredTarget> depsTargets = deps.getContents(ConfiguredTarget.class, "deps");
     AndroidAaptVersion aaptVersion = getAndroidAaptVersionForLibrary(ctx);
@@ -309,14 +309,14 @@
   public SkylarkDict<Provider, NativeInfo> processLocalTestData(
       AndroidDataContext ctx,
       Object manifest,
-      SkylarkList<?> resources, // <ConfiguredTarget>
+      Sequence<?> resources, // <ConfiguredTarget>
       Object assets,
       Object assetsDir,
       Object customPackage,
       String aaptVersionString,
       SkylarkDict<?, ?> manifestValues, // <String, String>
-      SkylarkList<?> deps, // <ConfiguredTarget>
-      SkylarkList<?> noCompressExtensions, // <String>
+      Sequence<?> deps, // <ConfiguredTarget>
+      Sequence<?> noCompressExtensions, // <String>
       Location location,
       StarlarkThread thread)
       throws InterruptedException, EvalException {
@@ -388,9 +388,9 @@
   public BinaryDataSettings makeBinarySettings(
       AndroidDataContext ctx,
       Object shrinkResources,
-      SkylarkList<?> resourceConfigurationFilters, // <String>
-      SkylarkList<?> densities, // <String>
-      SkylarkList<?> noCompressExtensions, // <String>
+      Sequence<?> resourceConfigurationFilters, // <String>
+      Sequence<?> densities, // <String>
+      Sequence<?> noCompressExtensions, // <String>
       String aaptVersionString,
       Location location,
       StarlarkThread thread)
@@ -434,9 +434,9 @@
     return makeBinarySettings(
         ctx,
         Starlark.NONE,
-        SkylarkList.createImmutable(ImmutableList.of()),
-        SkylarkList.createImmutable(ImmutableList.of()),
-        SkylarkList.createImmutable(ImmutableList.of()),
+        Sequence.createImmutable(ImmutableList.of()),
+        Sequence.createImmutable(ImmutableList.of()),
+        Sequence.createImmutable(ImmutableList.of()),
         "auto",
         location,
         thread);
@@ -463,13 +463,13 @@
   @Override
   public AndroidBinaryDataInfo processBinaryData(
       AndroidDataContext ctx,
-      SkylarkList<?> resources,
+      Sequence<?> resources,
       Object assets,
       Object assetsDir,
       Object manifest,
       Object customPackage,
       SkylarkDict<?, ?> manifestValues, // <String, String>
-      SkylarkList<?> deps, // <ConfiguredTarget>
+      Sequence<?> deps, // <ConfiguredTarget>
       String manifestMerger,
       Object maybeSettings,
       boolean crunchPng,
@@ -564,9 +564,9 @@
       Artifact proguardOutputJar,
       Artifact proguardMapping,
       Object maybeSettings,
-      SkylarkList<?> deps, // <ConfiguredTarget>
-      SkylarkList<?> localProguardSpecs, // <ConfiguredTarget>
-      SkylarkList<?> extraProguardSpecs, // <ConfiguredTarget>
+      Sequence<?> deps, // <ConfiguredTarget>
+      Sequence<?> localProguardSpecs, // <ConfiguredTarget>
+      Sequence<?> extraProguardSpecs, // <ConfiguredTarget>
       Location location,
       StarlarkThread thread)
       throws EvalException, InterruptedException {
@@ -718,17 +718,17 @@
   /**
    * Converts a "Noneable" Object passed by Skylark to a List of the appropriate type.
    *
-   * <p>This first calls {@link #fromNoneable(Object, Class)} to get a SkylarkList<?>, then safely
+   * <p>This first calls {@link #fromNoneable(Object, Class)} to get a Sequence<?>, then safely
    * casts it to a list with the appropriate generic.
    */
   @Nullable
   public static <T> List<T> listFromNoneable(Object object, Class<T> clazz) throws EvalException {
-    SkylarkList<?> asList = fromNoneable(object, SkylarkList.class);
+    Sequence<?> asList = fromNoneable(object, Sequence.class);
     if (asList == null) {
       return null;
     }
 
-    return SkylarkList.castList(asList, clazz, null);
+    return Sequence.castList(asList, clazz, null);
   }
 
   private static ImmutableList<Artifact> filesFromConfiguredTargets(
@@ -754,21 +754,19 @@
         .collect(ImmutableList.toImmutableList());
   }
 
-  public static <T extends NativeInfo> SkylarkList<T> getProviders(
+  public static <T extends NativeInfo> Sequence<T> getProviders(
       List<ConfiguredTarget> targets, NativeProvider<T> provider) {
-    return SkylarkList.createImmutable(
-        targets
-            .stream()
+    return Sequence.createImmutable(
+        targets.stream()
             .map(target -> target.get(provider))
             .filter(Objects::nonNull)
             .collect(ImmutableList.toImmutableList()));
   }
 
-  protected static <T extends NativeInfo> SkylarkList<T> getProviders(
+  protected static <T extends NativeInfo> Sequence<T> getProviders(
       List<ConfiguredTarget> targets, BuiltinProvider<T> provider) {
-    return SkylarkList.createImmutable(
-        targets
-            .stream()
+    return Sequence.createImmutable(
+        targets.stream()
             .map(target -> target.get(provider))
             .filter(Objects::nonNull)
             .collect(ImmutableList.toImmutableList()));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
index d06e8a0..dfa8f9c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
@@ -18,7 +18,7 @@
 import com.google.devtools.build.lib.packages.RuleErrorConsumer;
 import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
 import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import java.util.Objects;
 import java.util.Optional;
 import javax.annotation.Nullable;
@@ -178,8 +178,8 @@
   }
 
   @Override
-  public SkylarkList<Artifact> getResourcesList() {
-    return SkylarkList.createImmutable(getResources());
+  public Sequence<Artifact> getResourcesList() {
+    return Sequence.createImmutable(getResources());
   }
 
   public ValidatedAndroidResources filter(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBindingV2Provider.java b/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBindingV2Provider.java
index d416d5c..1462874 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBindingV2Provider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBindingV2Provider.java
@@ -23,7 +23,7 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skylarkbuildapi.android.DataBindingV2ProviderApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import javax.annotation.Nullable;
 
 /**
@@ -168,8 +168,8 @@
         Object brFile,
         Object label,
         Object javaPackage,
-        SkylarkList<?> databindingV2ProvidersInDeps, // <DataBindingV2Provider>
-        SkylarkList<?> databindingV2ProvidersInExports) // <DataBindingV2Provider>
+        Sequence<?> databindingV2ProvidersInDeps, // <DataBindingV2Provider>
+        Sequence<?> databindingV2ProvidersInExports) // <DataBindingV2Provider>
         throws EvalException {
 
       return createProvider(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/databinding/UsesDataBindingProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/databinding/UsesDataBindingProvider.java
index 0e72468..f90d502 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/databinding/UsesDataBindingProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/databinding/UsesDataBindingProvider.java
@@ -19,7 +19,7 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skylarkbuildapi.android.UsesDataBindingProviderApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import java.util.Collection;
 
 /**
@@ -53,7 +53,7 @@
     }
 
     @Override
-    public UsesDataBindingProvider createInfo(SkylarkList<?> metadataOutputs) // <Artifact>
+    public UsesDataBindingProvider createInfo(Sequence<?> metadataOutputs) // <Artifact>
         throws EvalException {
       return new UsesDataBindingProvider(
           metadataOutputs.getContents(Artifact.class, "metadata_outputs"));
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 47778c0..327ca77 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
@@ -25,8 +25,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigurationTransitionApi;
 import com.google.devtools.build.lib.syntax.BaseFunction;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import java.util.HashSet;
@@ -43,8 +43,8 @@
   @Override
   public ConfigurationTransitionApi transition(
       BaseFunction implementation,
-      SkylarkList<?> inputs, // <String> expected
-      SkylarkList<?> outputs, // <String> expected
+      Sequence<?> inputs, // <String> expected
+      Sequence<?> outputs, // <String> expected
       Location location,
       StarlarkThread thread)
       throws EvalException {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
index 2591a3e..d021bab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcCompilationOutputsApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import java.util.LinkedHashSet;
 import java.util.Set;
@@ -103,23 +103,23 @@
   }
 
   @Override
-  public SkylarkList<Artifact> getSkylarkObjectFiles(
+  public Sequence<Artifact> getSkylarkObjectFiles(
       boolean usePic, Location location, StarlarkThread thread) throws EvalException {
     CcCommon.checkLocationWhitelisted(
         thread.getSemantics(),
         location,
         ((Label) thread.getGlobals().getLabel()).getPackageIdentifier().toString());
-    return SkylarkList.createImmutable(getObjectFiles(usePic));
+    return Sequence.createImmutable(getObjectFiles(usePic));
   }
 
   @Override
-  public SkylarkList<Artifact> getSkylarkObjects(Location location) throws EvalException {
-    return SkylarkList.createImmutable(getObjectFiles(/* usePic= */ false));
+  public Sequence<Artifact> getSkylarkObjects(Location location) throws EvalException {
+    return Sequence.createImmutable(getObjectFiles(/* usePic= */ false));
   }
 
   @Override
-  public SkylarkList<Artifact> getSkylarkPicObjects(Location location) throws EvalException {
-    return SkylarkList.createImmutable(getObjectFiles(/* usePic= */ true));
+  public Sequence<Artifact> getSkylarkPicObjects(Location location) throws EvalException {
+    return Sequence.createImmutable(getObjectFiles(/* usePic= */ true));
   }
 
   /** Returns information about bitcode object files resulting from compilation. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
index 248a3f1..1885077 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingContextApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkerInputApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.util.Fingerprint;
@@ -198,8 +198,8 @@
     }
 
     @Override
-    public SkylarkList<LibraryToLink> getSkylarkLibrariesToLink(StarlarkThread thread) {
-      return SkylarkList.createImmutable(getLibraries());
+    public Sequence<LibraryToLink> getSkylarkLibrariesToLink(StarlarkThread thread) {
+      return Sequence.createImmutable(getLibraries());
     }
 
     public List<LinkOptions> getUserLinkFlags() {
@@ -207,8 +207,8 @@
     }
 
     @Override
-    public SkylarkList<String> getSkylarkUserLinkFlags() {
-      return SkylarkList.createImmutable(
+    public Sequence<String> getSkylarkUserLinkFlags() {
+      return Sequence.createImmutable(
           getUserLinkFlags().stream()
               .map(LinkOptions::get)
               .flatMap(Collection::stream)
@@ -220,8 +220,8 @@
     }
 
     @Override
-    public SkylarkList<Artifact> getSkylarkNonCodeInputs() {
-      return SkylarkList.createImmutable(getNonCodeInputs());
+    public Sequence<Artifact> getSkylarkNonCodeInputs() {
+      return Sequence.createImmutable(getNonCodeInputs());
     }
 
     public List<Linkstamp> getLinkstamps() {
@@ -392,8 +392,8 @@
   }
 
   @Override
-  public SkylarkList<String> getSkylarkUserLinkFlags() {
-    return SkylarkList.createImmutable(getFlattenedUserLinkFlags());
+  public Sequence<String> getSkylarkUserLinkFlags() {
+    return Sequence.createImmutable(getFlattenedUserLinkFlags());
   }
 
   @Override
@@ -402,7 +402,7 @@
     if (thread.getSemantics().incompatibleDepsetForLibrariesToLinkGetter()) {
       return SkylarkNestedSet.of(LibraryToLink.class, getLibraries());
     } else {
-      return SkylarkList.createImmutable(getLibraries().toList());
+      return Sequence.createImmutable(getLibraries().toList());
     }
   }
 
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 0e36feb..15b11a0 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
@@ -60,8 +60,8 @@
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -125,8 +125,8 @@
   public FeatureConfigurationForStarlark configureFeatures(
       Object ruleContextOrNone,
       CcToolchainProvider toolchain, // <String> expected
-      SkylarkList<?> requestedFeatures, // <String> expected
-      SkylarkList<?> unsupportedFeatures)
+      Sequence<?> requestedFeatures, // <String> expected
+      Sequence<?> unsupportedFeatures)
       throws EvalException {
     SkylarkRuleContext ruleContext = nullIfNone(ruleContextOrNone, SkylarkRuleContext.class);
     if (ruleContext == null
@@ -166,9 +166,9 @@
   }
 
   @Override
-  public SkylarkList<String> getExecutionRequirements(
+  public Sequence<String> getExecutionRequirements(
       FeatureConfigurationForStarlark featureConfiguration, String actionName) {
-    return SkylarkList.createImmutable(
+    return Sequence.createImmutable(
         featureConfiguration.getFeatureConfiguration().getToolRequirementsForAction(actionName));
   }
 
@@ -185,12 +185,12 @@
   }
 
   @Override
-  public SkylarkList<String> getCommandLine(
+  public Sequence<String> getCommandLine(
       FeatureConfigurationForStarlark featureConfiguration,
       String actionName,
       CcToolchainVariables variables)
       throws EvalException {
-    return SkylarkList.createImmutable(
+    return Sequence.createImmutable(
         featureConfiguration.getFeatureConfiguration().getCommandLine(actionName, variables));
   }
 
@@ -335,10 +335,10 @@
     }
   }
 
-  /** Converts an object that can be either SkylarkList, or None into ImmutableList. */
+  /** Converts an object that can be either Sequence, or None into ImmutableList. */
   protected ImmutableList<String> asStringImmutableList(Object o) {
-    SkylarkList<String> skylarkList =
-        convertFromNoneable(o, /* defaultValue= */ (SkylarkList<String>) null);
+    Sequence<String> skylarkList =
+        convertFromNoneable(o, /* defaultValue= */ (Sequence<String>) null);
     if (skylarkList != null) {
       return skylarkList.getImmutableList();
     } else {
@@ -346,9 +346,9 @@
     }
   }
 
-  /** Converts an object that represents user flags as either SkylarkList or None into Iterable. */
+  /** Converts an object that represents user flags as either Sequence or None into Iterable. */
   protected Iterable<String> userFlagsToIterable(Object o) throws EvalException {
-    if (o instanceof SkylarkList) {
+    if (o instanceof Sequence) {
       return asStringImmutableList(o);
     } else if (o instanceof NoneType) {
       return ImmutableList.of();
@@ -508,7 +508,7 @@
   }
 
   @Override
-  public CcInfo mergeCcInfos(SkylarkList<?> ccInfos) throws EvalException {
+  public CcInfo mergeCcInfos(Sequence<?> ccInfos) throws EvalException {
     return CcInfo.merge(ccInfos.getContents(CcInfo.class, /* description= */ null));
   }
 
@@ -610,10 +610,9 @@
       throws EvalException {
     if (EvalUtils.isNullOrNone(linkerInputs)) {
       @SuppressWarnings("unchecked")
-      SkylarkList<LibraryToLink> librariesToLink =
-          nullIfNone(librariesToLinkObject, SkylarkList.class);
+      Sequence<LibraryToLink> librariesToLink = nullIfNone(librariesToLinkObject, Sequence.class);
       @SuppressWarnings("unchecked")
-      SkylarkList<String> userLinkFlags = nullIfNone(userLinkFlagsObject, SkylarkList.class);
+      Sequence<String> userLinkFlags = nullIfNone(userLinkFlagsObject, Sequence.class);
 
       if (librariesToLink != null || userLinkFlags != null) {
         CcLinkingContext.Builder ccLinkingContextBuilder = CcLinkingContext.builder();
@@ -630,7 +629,7 @@
                       BazelStarlarkContext.from(thread).getSymbolGenerator())));
         }
         @SuppressWarnings("unchecked")
-        SkylarkList<String> nonCodeInputs = nullIfNone(nonCodeInputsObject, SkylarkList.class);
+        Sequence<String> nonCodeInputs = nullIfNone(nonCodeInputsObject, Sequence.class);
         if (nonCodeInputs != null) {
           ccLinkingContextBuilder.addNonCodeInputs(
               nonCodeInputs.getContents(Artifact.class, "additional_inputs"));
@@ -646,12 +645,11 @@
               linkerInputs, CcLinkingContext.LinkerInput.class, "linker_inputs"));
 
       @SuppressWarnings("unchecked")
-      SkylarkList<LibraryToLink> librariesToLink =
-          nullIfNone(librariesToLinkObject, SkylarkList.class);
+      Sequence<LibraryToLink> librariesToLink = nullIfNone(librariesToLinkObject, Sequence.class);
       @SuppressWarnings("unchecked")
-      SkylarkList<String> userLinkFlags = nullIfNone(userLinkFlagsObject, SkylarkList.class);
+      Sequence<String> userLinkFlags = nullIfNone(userLinkFlagsObject, Sequence.class);
       @SuppressWarnings("unchecked")
-      SkylarkList<String> nonCodeInputs = nullIfNone(nonCodeInputsObject, SkylarkList.class);
+      Sequence<String> nonCodeInputs = nullIfNone(nonCodeInputsObject, Sequence.class);
 
       if (librariesToLink != null || userLinkFlags != null || nonCodeInputs != null) {
         throw new EvalException(
@@ -673,8 +671,8 @@
   /** Converts an object that can be the either SkylarkNestedSet or None into NestedSet. */
   @SuppressWarnings("unchecked")
   protected Object skylarkListToSkylarkNestedSet(Object o) throws EvalException {
-    if (o instanceof SkylarkList) {
-      SkylarkList<String> list = (SkylarkList<String>) o;
+    if (o instanceof Sequence) {
+      Sequence<String> list = (Sequence<String>) o;
       SkylarkNestedSet.Builder builder =
           SkylarkNestedSet.builder(Order.STABLE_ORDER, Location.BUILTIN);
       for (Object entry : list) {
@@ -685,7 +683,7 @@
     return o;
   }
 
-  /** Converts None, or a SkylarkList, or a SkylarkNestedSet to a NestedSet. */
+  /** Converts None, or a Sequence, or a SkylarkNestedSet to a NestedSet. */
   @SuppressWarnings("unchecked")
   private static <T> NestedSet<T> convertToNestedSet(Object o, Class<T> type, String fieldName)
       throws EvalException {
@@ -694,16 +692,16 @@
     }
     return o instanceof SkylarkNestedSet
         ? ((SkylarkNestedSet) o).getSetFromParam(type, fieldName)
-        : NestedSetBuilder.wrap(Order.COMPILE_ORDER, (SkylarkList<T>) o);
+        : NestedSetBuilder.wrap(Order.COMPILE_ORDER, (Sequence<T>) o);
   }
 
   @Override
   public CcToolchainConfigInfo ccToolchainConfigInfoFromSkylark(
       SkylarkRuleContext skylarkRuleContext,
-      SkylarkList<?> features, // <SkylarkInfo> expected
-      SkylarkList<?> actionConfigs, // <SkylarkInfo> expected
-      SkylarkList<?> artifactNamePatterns, // <SkylarkInfo> expected
-      SkylarkList<?> cxxBuiltInIncludeDirectoriesUnchecked, // <String> expected
+      Sequence<?> features, // <SkylarkInfo> expected
+      Sequence<?> actionConfigs, // <SkylarkInfo> expected
+      Sequence<?> artifactNamePatterns, // <SkylarkInfo> expected
+      Sequence<?> cxxBuiltInIncludeDirectoriesUnchecked, // <String> expected
       String toolchainIdentifier,
       String hostSystemName,
       String targetSystemName,
@@ -712,8 +710,8 @@
       String compiler,
       String abiVersion,
       String abiLibcVersion,
-      SkylarkList<?> toolPaths, // <SkylarkInfo> expected
-      SkylarkList<?> makeVariables, // <SkylarkInfo> expected
+      Sequence<?> toolPaths, // <SkylarkInfo> expected
+      Sequence<?> makeVariables, // <SkylarkInfo> expected
       Object builtinSysroot,
       Object ccTargetOs)
       throws EvalException {
@@ -1331,7 +1329,7 @@
   /** Returns a list of strings from a field of a {@link SkylarkInfo}. */
   private static ImmutableList<String> getStringListFromSkylarkProviderField(
       SkylarkInfo provider, String fieldName) throws EvalException {
-    return SkylarkList.castSkylarkListOrNoneToList(
+    return Sequence.castSkylarkListOrNoneToList(
             provider.getValueOrNull(fieldName), String.class, fieldName)
         .stream()
         .collect(ImmutableList.toImmutableList());
@@ -1340,7 +1338,7 @@
   /** Returns a set of strings from a field of a {@link SkylarkInfo}. */
   private static ImmutableSet<String> getStringSetFromSkylarkProviderField(
       SkylarkInfo provider, String fieldName) throws EvalException {
-    return SkylarkList.castSkylarkListOrNoneToList(
+    return Sequence.castSkylarkListOrNoneToList(
             provider.getValueOrNull(fieldName), String.class, fieldName)
         .stream()
         .collect(ImmutableSet.toImmutableSet());
@@ -1349,7 +1347,7 @@
   /** Returns a list of SkylarkInfo providers from a field of a {@link SkylarkInfo}. */
   private static ImmutableList<SkylarkInfo> getSkylarkProviderListFromSkylarkField(
       SkylarkInfo provider, String fieldName) throws EvalException {
-    return SkylarkList.castSkylarkListOrNoneToList(
+    return Sequence.castSkylarkListOrNoneToList(
             provider.getValueOrNull(fieldName), SkylarkInfo.class, fieldName)
         .stream()
         .collect(ImmutableList.toImmutableList());
@@ -1396,12 +1394,12 @@
       FeatureConfigurationForStarlark skylarkFeatureConfiguration,
       CcToolchainProvider skylarkCcToolchainProvider,
       CcCompilationOutputs compilationOutputs,
-      SkylarkList<?> userLinkFlags, // <String> expected
-      SkylarkList<?> linkingContexts, // <CcLinkingContext> expected
+      Sequence<?> userLinkFlags, // <String> expected
+      Sequence<?> linkingContexts, // <CcLinkingContext> expected
       String name,
       String language,
       boolean alwayslink, // <Artifact> expected
-      SkylarkList<?> additionalInputs,
+      Sequence<?> additionalInputs,
       boolean disallowStaticLibraries,
       boolean disallowDynamicLibraries,
       Object grepIncludes,
@@ -1520,23 +1518,23 @@
       SkylarkActionFactory skylarkActionFactoryApi,
       FeatureConfigurationForStarlark skylarkFeatureConfiguration,
       CcToolchainProvider skylarkCcToolchainProvider,
-      SkylarkList<?> sourcesUnchecked, // <Artifact> expected
-      SkylarkList<?> publicHeadersUnchecked, // <Artifact> expected
-      SkylarkList<?> privateHeadersUnchecked, // <Artifact> expected
-      SkylarkList<?> includes, // <String> expected
-      SkylarkList<?> quoteIncludes, // <String> expected
-      SkylarkList<?> systemIncludes, // <String> expected
-      SkylarkList<?> frameworkIncludes, // <String> expected
-      SkylarkList<?> defines, // <String> expected
-      SkylarkList<?> localDefines, // <String> expected
-      SkylarkList<?> userCompileFlags, // <String> expected
-      SkylarkList<?> ccCompilationContexts, // <CcCompilationContext> expected
+      Sequence<?> sourcesUnchecked, // <Artifact> expected
+      Sequence<?> publicHeadersUnchecked, // <Artifact> expected
+      Sequence<?> privateHeadersUnchecked, // <Artifact> expected
+      Sequence<?> includes, // <String> expected
+      Sequence<?> quoteIncludes, // <String> expected
+      Sequence<?> systemIncludes, // <String> expected
+      Sequence<?> frameworkIncludes, // <String> expected
+      Sequence<?> defines, // <String> expected
+      Sequence<?> localDefines, // <String> expected
+      Sequence<?> userCompileFlags, // <String> expected
+      Sequence<?> ccCompilationContexts, // <CcCompilationContext> expected
       String name,
       boolean disallowPicOutputs,
       boolean disallowNopicOutputs,
       Artifact grepIncludes,
       List<Artifact> headersForClifDoNotUseThisParam,
-      SkylarkList<?> additionalInputs,
+      Sequence<?> additionalInputs,
       Location location,
       @Nullable StarlarkThread thread)
       throws EvalException, InterruptedException {
@@ -1636,13 +1634,13 @@
       FeatureConfigurationForStarlark skylarkFeatureConfiguration,
       CcToolchainProvider skylarkCcToolchainProvider,
       CcCompilationOutputs compilationOutputs,
-      SkylarkList<?> userLinkFlags,
-      SkylarkList<?> linkingContexts,
+      Sequence<?> userLinkFlags,
+      Sequence<?> linkingContexts,
       String name,
       String language,
       String outputType,
       boolean linkDepsStatically,
-      SkylarkList<?> additionalInputs,
+      Sequence<?> additionalInputs,
       Object grepIncludes,
       Location location,
       StarlarkThread thread)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java
index ac31b17..5c90696 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java
@@ -38,7 +38,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoPackageInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Tuple;
 
@@ -81,8 +81,8 @@
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
         FileApi ccFile,
         FileApi headerFile,
-        SkylarkList<?> depCcCompilationContexts, // <CcCompilationContextApi>
-        SkylarkList<?> targetCopts /* <String> */)
+        Sequence<?> depCcCompilationContexts, // <CcCompilationContextApi>
+        Sequence<?> targetCopts /* <String> */)
         throws EvalException, InterruptedException {
       return null;
     }
@@ -108,10 +108,10 @@
         CcCompilationContextApi wrapperCcCompilationContext,
         SkylarkNestedSet swigIncludes,
         FileApi swigSource,
-        SkylarkList<?> subParameters, // <String>
+        Sequence<?> subParameters, // <String>
         FileApi ccFile,
         FileApi headerFile,
-        SkylarkList<?> outputFiles, // <FileApi>
+        Sequence<?> outputFiles, // <FileApi>
         Object outDir,
         Object javaDir,
         SkylarkNestedSet auxiliaryInputs,
@@ -136,7 +136,7 @@
           WrapCcIncludeProviderApi> {
 
     @Override
-    public SkylarkList<String> getPyExtensionLinkopts(SkylarkRuleContextApi skylarkRuleContext) {
+    public Sequence<String> getPyExtensionLinkopts(SkylarkRuleContextApi skylarkRuleContext) {
       return null;
     }
 
@@ -215,8 +215,8 @@
     public Tuple<FileApi> createGoCompileActions(
         SkylarkRuleContextApi skylarkRuleContext,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
-        SkylarkList<?> srcs, // <FileApi>
-        SkylarkList<?> deps /* <TransitiveInfoCollectionApi> */) {
+        Sequence<?> srcs, // <FileApi>
+        Sequence<?> deps /* <TransitiveInfoCollectionApi> */) {
       return null;
     }
 
@@ -224,8 +224,8 @@
     public Tuple<FileApi> createGoCompileActionsGopkg(
         SkylarkRuleContextApi skylarkRuleContext,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
-        SkylarkList<?> srcs, // <FileApi>
-        SkylarkList<?> deps /* <TransitiveInfoCollectionApi> */) {
+        Sequence<?> srcs, // <FileApi>
+        Sequence<?> deps /* <TransitiveInfoCollectionApi> */) {
       return null;
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java
index 17e0c9c..81fb18d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkList;
 import java.util.List;
 import javax.annotation.Nullable;
@@ -66,11 +66,11 @@
 
   @Nullable
   @Override
-  public SkylarkList<Artifact> getObjectFilesForStarlark() {
+  public Sequence<Artifact> getObjectFilesForStarlark() {
     if (getObjectFiles() == null) {
       return StarlarkList.empty();
     }
-    return SkylarkList.createImmutable(getObjectFiles());
+    return Sequence.createImmutable(getObjectFiles());
   }
 
   @Nullable
@@ -88,11 +88,11 @@
 
   @Nullable
   @Override
-  public SkylarkList<Artifact> getPicObjectFilesForStarlark() {
+  public Sequence<Artifact> getPicObjectFilesForStarlark() {
     if (getPicObjectFiles() == null) {
       return StarlarkList.empty();
     }
-    return SkylarkList.createImmutable(getPicObjectFiles());
+    return Sequence.createImmutable(getPicObjectFiles());
   }
 
   @Nullable
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index e5446bb..c2a5da4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -63,7 +63,7 @@
 import com.google.devtools.build.lib.rules.java.JavaPluginInfoProvider.JavaPluginInfo;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.build.lib.util.LazyString;
 import com.google.devtools.build.lib.view.proto.Deps;
@@ -476,9 +476,9 @@
   }
 
   @Override
-  public SkylarkList<String> getSkylarkArgv() throws EvalException {
+  public Sequence<String> getSkylarkArgv() throws EvalException {
     try {
-      return SkylarkList.createImmutable(getArguments());
+      return Sequence.createImmutable(getArguments());
     } catch (CommandLineExpansionException exception) {
       throw new EvalException(Location.BUILTIN, exception);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
index 9ef1c50..785a056 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
@@ -39,7 +39,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -288,12 +288,12 @@
   }
 
   @Override
-  public SkylarkList<Artifact> getSourceJars() {
+  public Sequence<Artifact> getSourceJars() {
     // TODO(#4221) change return type to NestedSet<Artifact>
     JavaSourceJarsProvider provider = providers.getProvider(JavaSourceJarsProvider.class);
     ImmutableList<Artifact> sourceJars =
         provider == null ? ImmutableList.of() : provider.getSourceJars();
-    return SkylarkList.createImmutable(sourceJars);
+    return Sequence.createImmutable(sourceJars);
   }
 
   @Override
@@ -312,8 +312,8 @@
   }
 
   @Override
-  public SkylarkList<Artifact> getRuntimeOutputJars() {
-    return SkylarkList.createImmutable(getDirectRuntimeJars());
+  public Sequence<Artifact> getRuntimeOutputJars() {
+    return Sequence.createImmutable(getDirectRuntimeJars());
   }
 
   public ImmutableList<Artifact> getDirectRuntimeJars() {
@@ -414,9 +414,9 @@
         Object compileJarApi,
         Object sourceJarApi,
         Boolean neverlink,
-        SkylarkList<?> deps,
-        SkylarkList<?> runtimeDeps,
-        SkylarkList<?> exports,
+        Sequence<?> deps,
+        Sequence<?> runtimeDeps,
+        Sequence<?> exports,
         Object jdepsApi,
         Location loc,
         StarlarkThread thread)
@@ -434,9 +434,9 @@
               compileJar,
               sourceJar,
               neverlink,
-              (SkylarkList<JavaInfo>) deps,
-              (SkylarkList<JavaInfo>) runtimeDeps,
-              (SkylarkList<JavaInfo>) exports,
+              (Sequence<JavaInfo>) deps,
+              (Sequence<JavaInfo>) runtimeDeps,
+              (Sequence<JavaInfo>) exports,
               jdeps,
               loc);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index 1eb828e..74a9ef8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -40,7 +40,7 @@
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider.ClasspathType;
 import com.google.devtools.build.lib.shell.ShellUtils;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -81,9 +81,9 @@
       Artifact compileJar,
       @Nullable Artifact sourceJar,
       Boolean neverlink,
-      SkylarkList<JavaInfo> compileTimeDeps,
-      SkylarkList<JavaInfo> runtimeDeps,
-      SkylarkList<JavaInfo> exports,
+      Sequence<JavaInfo> compileTimeDeps,
+      Sequence<JavaInfo> runtimeDeps,
+      Sequence<JavaInfo> exports,
       @Nullable Artifact jdeps,
       Location location) {
     compileJar = compileJar != null ? compileJar : outputJar;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java
index 755f08d..c19ffa0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java
@@ -26,7 +26,7 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuleOutputJarsProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.OutputJarApi;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import java.util.Collection;
 import java.util.stream.Collectors;
 import javax.annotation.Nullable;
@@ -87,8 +87,8 @@
 
     @Nullable
     @Override
-    public SkylarkList<Artifact> getSrcJarsSkylark() {
-      return SkylarkList.createImmutable(srcJars);
+    public Sequence<Artifact> getSrcJarsSkylark() {
+      return Sequence.createImmutable(srcJars);
     }
 
     public Iterable<Artifact> getSrcJars() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index b0c63c9..821d4bf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -26,7 +26,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCommonApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaToolchainSkylarkApiProviderApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
@@ -55,22 +55,22 @@
   @Override
   public JavaInfo createJavaCompileAction(
       SkylarkRuleContext skylarkRuleContext,
-      SkylarkList<?> sourceJars, // <Artifact> expected
-      SkylarkList<?> sourceFiles, // <Artifact> expected
+      Sequence<?> sourceJars, // <Artifact> expected
+      Sequence<?> sourceFiles, // <Artifact> expected
       Artifact outputJar,
       Object outputSourceJar,
-      SkylarkList<?> javacOpts, // <String> expected
-      SkylarkList<?> deps, // <JavaInfo> expected
-      SkylarkList<?> exports, // <JavaInfo> expected
-      SkylarkList<?> plugins, // <JavaInfo> expected
-      SkylarkList<?> exportedPlugins, // <JavaInfo> expected
-      SkylarkList<?> annotationProcessorAdditionalInputs, // <Artifact> expected
-      SkylarkList<?> annotationProcessorAdditionalOutputs, // <Artifact> expected
+      Sequence<?> javacOpts, // <String> expected
+      Sequence<?> deps, // <JavaInfo> expected
+      Sequence<?> exports, // <JavaInfo> expected
+      Sequence<?> plugins, // <JavaInfo> expected
+      Sequence<?> exportedPlugins, // <JavaInfo> expected
+      Sequence<?> annotationProcessorAdditionalInputs, // <Artifact> expected
+      Sequence<?> annotationProcessorAdditionalOutputs, // <Artifact> expected
       String strictDepsMode,
       JavaToolchainProvider javaToolchain,
       JavaRuntimeInfo hostJavabase,
-      SkylarkList<?> sourcepathEntries, // <Artifact> expected
-      SkylarkList<?> resources, // <Artifact> expected
+      Sequence<?> sourcepathEntries, // <Artifact> expected
+      Sequence<?> resources, // <Artifact> expected
       Boolean neverlink,
       Location location,
       StarlarkThread thread)
@@ -138,8 +138,8 @@
   public Artifact packSources(
       SkylarkActionFactory actions,
       Artifact outputJar,
-      SkylarkList<?> sourceFiles, // <Artifact> expected.
-      SkylarkList<?> sourceJars, // <Artifact> expected.
+      Sequence<?> sourceFiles, // <Artifact> expected.
+      Sequence<?> sourceJars, // <Artifact> expected.
       JavaToolchainProvider javaToolchain,
       JavaRuntimeInfo hostJavabase,
       Location location,
@@ -167,7 +167,7 @@
   }
 
   @Override
-  public JavaInfo mergeJavaProviders(SkylarkList<?> providers /* <JavaInfo> expected. */)
+  public JavaInfo mergeJavaProviders(Sequence<?> providers /* <JavaInfo> expected. */)
       throws EvalException {
     return JavaInfo.merge(providers.getContents(JavaInfo.class, "providers"));
   }
@@ -212,8 +212,7 @@
   }
 
   @Override
-  public JavaInfo addConstraints(JavaInfo javaInfo, SkylarkList<?> constraints)
-      throws EvalException {
+  public JavaInfo addConstraints(JavaInfo javaInfo, Sequence<?> constraints) throws EvalException {
     // No implementation in Bazel. This method not callable in Starlark except through
     // (discouraged) use of --experimental_google_legacy_api.
     return null;
@@ -235,7 +234,7 @@
 
   @Override
   public JavaInfo addCompileTimeJavaDependencyArtifacts(
-      JavaInfo javaInfo, SkylarkList<?> compileTimeJavaDependencyArtifacts) throws EvalException {
+      JavaInfo javaInfo, Sequence<?> compileTimeJavaDependencyArtifacts) throws EvalException {
     // No implementation in Bazel. This method not callable in Starlark except through
     // (discouraged) use of --experimental_google_legacy_api.
     return null;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java
index f31af5e..bad7896 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java
@@ -35,7 +35,7 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaToolchainSkylarkApiProviderApi;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import java.util.Iterator;
 import javax.annotation.Nullable;
@@ -414,8 +414,8 @@
   }
 
   @Override
-  public SkylarkList<String> getSkylarkJvmOptions() {
-    return SkylarkList.createImmutable(getJvmOptions());
+  public Sequence<String> getSkylarkJvmOptions() {
+    return Sequence.createImmutable(getJvmOptions());
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
index 9dddcc0..4e5f9fb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import java.util.List;
 import javax.annotation.Nullable;
 
@@ -55,13 +55,13 @@
         doc = "The <code>MessageBundleInfo</code> constructor.",
         documented = false,
         parameters = {
-          @Param(name = "messages", positional = false, named = true, type = SkylarkList.class),
+          @Param(name = "messages", positional = false, named = true, type = Sequence.class),
         },
         selfCall = true,
         useLocation = true)
-    public MessageBundleInfo messageBundleInfo(SkylarkList<?> messages, Location loc)
+    public MessageBundleInfo messageBundleInfo(Sequence<?> messages, Location loc)
         throws EvalException {
-      List<Artifact> messagesList = SkylarkList.castList(messages, Artifact.class, "messages");
+      List<Artifact> messagesList = Sequence.castList(messages, Artifact.class, "messages");
       return new MessageBundleInfo(ImmutableList.copyOf(messagesList), loc);
     }
   }
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 1293981..117c433 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
@@ -44,8 +44,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleCommonApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -220,8 +220,8 @@
   @Override
   public StructImpl linkMultiArchBinary(
       SkylarkRuleContextApi skylarkRuleContextApi,
-      SkylarkList<?> extraLinkopts,
-      SkylarkList<?> extraLinkInputs,
+      Sequence<?> extraLinkopts,
+      Sequence<?> extraLinkInputs,
       StarlarkThread thread)
       throws EvalException, InterruptedException {
     SkylarkRuleContext skylarkRuleContext = (SkylarkRuleContext) skylarkRuleContextApi;
@@ -231,7 +231,7 @@
           AppleBinary.linkMultiArchBinary(
               ruleContext,
               ImmutableList.copyOf(extraLinkopts.getContents(String.class, "extra_linkopts")),
-              SkylarkList.castList(extraLinkInputs, Artifact.class, "extra_link_inputs"));
+              Sequence.castList(extraLinkInputs, Artifact.class, "extra_link_inputs"));
       return createAppleBinaryOutputSkylarkStruct(appleBinaryOutput, thread);
     } catch (RuleErrorException | ActionConflictException exception) {
       throw new EvalException(null, exception);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 2da9350..8620829 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -41,7 +41,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -424,7 +424,7 @@
   }
 
   @Override
-  public SkylarkList<Artifact> directHeaders() {
+  public Sequence<Artifact> directHeaders() {
     return getDirect(HEADER);
   }
 
@@ -494,7 +494,7 @@
   }
 
   @Override
-  public SkylarkList<Artifact> directModuleMaps() {
+  public Sequence<Artifact> directModuleMaps() {
     return getDirect(MODULE_MAP);
   }
 
@@ -530,7 +530,7 @@
   }
 
   @Override
-  public SkylarkList<Artifact> directSources() {
+  public Sequence<Artifact> directSources() {
     return getDirect(SOURCE);
   }
 
@@ -642,11 +642,11 @@
 
   /** All direct artifacts, bundleable files, etc. of the type specified by {@code key}. */
   @SuppressWarnings({"rawtypes", "unchecked"})
-  public <E> SkylarkList<E> getDirect(Key<E> key) {
+  public <E> Sequence<E> getDirect(Key<E> key) {
     if (directItems.containsKey(key)) {
-      return SkylarkList.createImmutable((List) directItems.get(key));
+      return Sequence.createImmutable((List) directItems.get(key));
     }
-    return SkylarkList.createImmutable(ImmutableList.of());
+    return Sequence.createImmutable(ImmutableList.of());
   }
 
   /**
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 52422e6..4b5bf88 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
@@ -19,8 +19,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import java.io.IOException;
@@ -62,17 +62,16 @@
   public SkylarkNestedSet getSkylarkOutputs();
 
   @SkylarkCallable(
-    name = "argv",
-    doc =
-        "For actions created by <a href=\"actions.html#run\">ctx.actions.run()</a> "
-            + "or <a href=\"actions.html#run_shell\">ctx.actions.run_shell()</a>  an immutable "
-            + "list of the arguments for the command line to be executed. Note that "
-            + "for shell actions the first two arguments will be the shell path "
-            + "and <code>\"-c\"</code>.",
-    structField = true,
-    allowReturnNones = true
-  )
-  public SkylarkList<String> getSkylarkArgv() throws EvalException;
+      name = "argv",
+      doc =
+          "For actions created by <a href=\"actions.html#run\">ctx.actions.run()</a> "
+              + "or <a href=\"actions.html#run_shell\">ctx.actions.run_shell()</a>  an immutable "
+              + "list of the arguments for the command line to be executed. Note that "
+              + "for shell actions the first two arguments will be the shell path "
+              + "and <code>\"-c\"</code>.",
+      structField = true,
+      allowReturnNones = true)
+  public Sequence<String> getSkylarkArgv() throws EvalException;
 
   @SkylarkCallable(
       name = "args",
@@ -88,7 +87,7 @@
       structField = true,
       allowReturnNones = true,
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_ACTION_ARGS)
-  public SkylarkList<CommandLineArgsApi> getStarlarkArgs() throws EvalException;
+  public Sequence<CommandLineArgsApi> getStarlarkArgs() throws EvalException;
 
   @SkylarkCallable(
     name = "content",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java
index b11389a..d0fff70 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java
@@ -23,7 +23,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.BaseFunction;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /** Command line args module. */
@@ -247,7 +247,7 @@
         @Param(
             name = "values",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             defaultValue = "unbound",
@@ -397,7 +397,7 @@
         @Param(
             name = "values",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             defaultValue = "unbound",
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 618bba3..df27727 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
@@ -22,8 +22,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -150,7 +150,7 @@
         @Param(
             name = "inputs",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -219,7 +219,7 @@
       parameters = {
         @Param(
             name = "outputs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             named = true,
             positional = false,
@@ -227,7 +227,7 @@
         @Param(
             name = "inputs",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -266,7 +266,7 @@
         @Param(
             name = "tools",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             defaultValue = "unbound",
@@ -280,7 +280,7 @@
             name = "arguments",
             type = Object.class,
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
             },
             defaultValue = "[]",
             named = true,
@@ -338,7 +338,7 @@
             // This is technically experimental, so folks shouldn't be too attached,
             // but consider renaming to be more accurate/opaque.
             name = "input_manifests",
-            type = SkylarkList.class,
+            type = Sequence.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -349,7 +349,7 @@
       },
       useLocation = true)
   public void run(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object unusedInputsList,
       Object executableUnchecked,
@@ -373,7 +373,7 @@
       parameters = {
         @Param(
             name = "outputs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             named = true,
             positional = false,
@@ -381,7 +381,7 @@
         @Param(
             name = "inputs",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -392,7 +392,7 @@
         @Param(
             name = "tools",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -406,7 +406,7 @@
         @Param(
             name = "arguments",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
             },
             defaultValue = "[]",
             named = true,
@@ -438,7 +438,7 @@
             type = Object.class,
             allowedTypes = {
               @ParamType(type = String.class),
-              @ParamType(type = SkylarkList.class, generic1 = String.class),
+              @ParamType(type = Sequence.class, generic1 = String.class),
             },
             named = true,
             positional = false,
@@ -508,7 +508,7 @@
             // This is technically experimental, so folks shouldn't be too attached,
             // but consider renaming to be more accurate/opaque.
             name = "input_manifests",
-            type = SkylarkList.class,
+            type = Sequence.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -520,7 +520,7 @@
       useStarlarkSemantics = true,
       useLocation = true)
   public void runShell(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object toolsUnchecked,
       Object arguments,
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 9b69185..1ba3c26 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
@@ -23,8 +23,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 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;
@@ -173,7 +173,7 @@
             positional = false),
         @Param(
             name = VALUES_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = Integer.class,
             defaultValue = "[]",
             doc = VALUES_DOC,
@@ -186,7 +186,7 @@
       Integer defaultInt,
       String doc,
       Boolean mandatory,
-      SkylarkList<?> values,
+      Sequence<?> values,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException;
@@ -220,7 +220,7 @@
             positional = false),
         @Param(
             name = VALUES_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             doc = VALUES_DOC,
@@ -233,7 +233,7 @@
       String defaultString,
       String doc,
       Boolean mandatory,
-      SkylarkList<?> values,
+      Sequence<?> values,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException;
@@ -311,14 +311,14 @@
             doc = MANDATORY_DOC),
         @Param(
             name = PROVIDERS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             defaultValue = "[]",
             named = true,
             positional = false,
             doc = PROVIDERS_DOC),
         @Param(
             name = ALLOW_RULES_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             noneable = true,
             defaultValue = "None",
@@ -352,7 +352,7 @@
                     + "unless it really helps clarify your intentions."),
         @Param(
             name = ASPECTS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = SkylarkAspectApi.class,
             defaultValue = "[]",
             named = true,
@@ -368,11 +368,11 @@
       Object allowFiles,
       Object allowSingleFile,
       Boolean mandatory,
-      SkylarkList<?> providers,
+      Sequence<?> providers,
       Object allowRules,
       Boolean singleFile,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException;
@@ -402,7 +402,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkList.class, generic1 = String.class),
+              @ParamType(type = Sequence.class, generic1 = String.class),
               @ParamType(type = StarlarkFunction.class)
             },
             defaultValue = "[]",
@@ -423,7 +423,7 @@
       Boolean mandatory,
       Boolean nonEmpty,
       Boolean allowEmpty,
-      SkylarkList<?> defaultList,
+      Sequence<?> defaultList,
       String doc,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -454,7 +454,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkList.class, generic1 = Integer.class),
+              @ParamType(type = Sequence.class, generic1 = Integer.class),
               @ParamType(type = StarlarkFunction.class)
             },
             defaultValue = "[]",
@@ -475,7 +475,7 @@
       Boolean mandatory,
       Boolean nonEmpty,
       Boolean allowEmpty,
-      SkylarkList<?> defaultList,
+      Sequence<?> defaultList,
       String doc,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -496,7 +496,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkList.class, generic1 = Label.class),
+              @ParamType(type = Sequence.class, generic1 = Label.class),
               @ParamType(type = StarlarkFunction.class)
             },
             callbackEnabled = true,
@@ -524,7 +524,7 @@
             doc = ALLOW_FILES_DOC),
         @Param(
             name = ALLOW_RULES_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             noneable = true,
             defaultValue = "None",
@@ -533,14 +533,14 @@
             doc = ALLOW_RULES_DOC),
         @Param(
             name = PROVIDERS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             defaultValue = "[]",
             named = true,
             positional = false,
             doc = PROVIDERS_DOC),
         @Param(
             name = FLAGS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             named = true,
@@ -570,7 +570,7 @@
             doc = CONFIGURATION_DOC),
         @Param(
             name = ASPECTS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = SkylarkAspectApi.class,
             defaultValue = "[]",
             named = true,
@@ -585,12 +585,12 @@
       String doc,
       Object allowFiles,
       Object allowRules,
-      SkylarkList<?> providers,
-      SkylarkList<?> flags,
+      Sequence<?> providers,
+      Sequence<?> flags,
       Boolean mandatory,
       Boolean nonEmpty,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException;
@@ -640,7 +640,7 @@
             doc = ALLOW_FILES_DOC),
         @Param(
             name = ALLOW_RULES_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             noneable = true,
             defaultValue = "None",
@@ -649,14 +649,14 @@
             doc = ALLOW_RULES_DOC),
         @Param(
             name = PROVIDERS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             defaultValue = "[]",
             named = true,
             positional = false,
             doc = PROVIDERS_DOC),
         @Param(
             name = FLAGS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             named = true,
@@ -686,7 +686,7 @@
             doc = CONFIGURATION_DOC),
         @Param(
             name = ASPECTS_ARG,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = SkylarkAspectApi.class,
             defaultValue = "[]",
             named = true,
@@ -701,12 +701,12 @@
       String doc,
       Object allowFiles,
       Object allowRules,
-      SkylarkList<?> providers,
-      SkylarkList<?> flags,
+      Sequence<?> providers,
+      Sequence<?> flags,
       Boolean mandatory,
       Boolean nonEmpty,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException;
@@ -797,7 +797,7 @@
         @Param(
             name = DEFAULT_ARG,
             allowedTypes = {
-              @ParamType(type = SkylarkList.class, generic1 = Label.class),
+              @ParamType(type = Sequence.class, generic1 = Label.class),
               @ParamType(type = StarlarkFunction.class)
             },
             noneable = true,
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 1622e4f..8d1b8db 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
@@ -22,8 +22,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /** Interface for a module with native rule and package helper functions. */
@@ -53,14 +53,14 @@
       parameters = {
         @Param(
             name = "include",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             named = true,
             doc = "The list of glob patterns to include."),
         @Param(
             name = "exclude",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             named = true,
@@ -85,9 +85,9 @@
       },
       useLocation = true,
       useStarlarkThread = true)
-  public SkylarkList<?> glob(
-      SkylarkList<?> include,
-      SkylarkList<?> exclude,
+  public Sequence<?> glob(
+      Sequence<?> include,
+      Sequence<?> exclude,
       Integer excludeDirectories,
       Object allowEmpty,
       Location loc,
@@ -159,7 +159,7 @@
             doc = "The unique name for this rule."),
         @Param(
             name = "packages",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             named = true,
@@ -167,7 +167,7 @@
             doc = "A complete enumeration of packages in this group."),
         @Param(
             name = "includes",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             named = true,
@@ -177,11 +177,7 @@
       useLocation = true,
       useStarlarkThread = true)
   public NoneType packageGroup(
-      String name,
-      SkylarkList<?> packages,
-      SkylarkList<?> includes,
-      Location loc,
-      StarlarkThread thread)
+      String name, Sequence<?> packages, Sequence<?> includes, Location loc, StarlarkThread thread)
       throws EvalException;
 
   @SkylarkCallable(
@@ -192,14 +188,14 @@
       parameters = {
         @Param(
             name = "srcs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             doc = "The list of files to export."),
         // TODO(bazel-team): make it possible to express the precise type ListOf(LabelDesignator)
         @Param(
             name = "visibility",
-            type = SkylarkList.class,
+            type = Sequence.class,
             defaultValue = "None",
             noneable = true,
             named = true,
@@ -209,7 +205,7 @@
                     + "to every package."),
         @Param(
             name = "licenses",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             noneable = true,
             named = true,
@@ -219,7 +215,7 @@
       useLocation = true,
       useStarlarkThread = true)
   public NoneType exportsFiles(
-      SkylarkList<?> srcs, Object visibility, Object licenses, Location loc, StarlarkThread thread)
+      Sequence<?> srcs, Object visibility, Object licenses, Location loc, StarlarkThread thread)
       throws EvalException;
 
   @SkylarkCallable(
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 9fac798..0250362 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
@@ -26,9 +26,9 @@
 import com.google.devtools.build.lib.syntax.ClassObject;
 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.SkylarkList;
 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;
@@ -344,7 +344,7 @@
             type = String.class,
             doc = "The string to split."),
       })
-  public SkylarkList<String> tokenize(String optionString) throws EvalException;
+  public Sequence<String> tokenize(String optionString) throws EvalException;
 
   @SkylarkCallable(
       name = "expand",
@@ -365,7 +365,7 @@
             name = "files",
             positional = true,
             named = false,
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc = "The list of files."),
         @Param(
             name = "label_resolver",
@@ -376,7 +376,7 @@
       })
   public String expand(
       @Nullable String expression,
-      SkylarkList<?> artifacts, // <FileT>
+      Sequence<?> artifacts, // <FileT>
       Label labelResolver)
       throws EvalException;
 
@@ -464,10 +464,10 @@
             name = "allowed_placeholders",
             positional = true,
             named = false,
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc = "The allowed placeholders."),
       })
-  public boolean checkPlaceholders(String template, SkylarkList<?> allowedPlaceholders) // <String>
+  public boolean checkPlaceholders(String template, Sequence<?> allowedPlaceholders) // <String>
       throws EvalException;
 
   @SkylarkCallable(
@@ -554,7 +554,7 @@
       parameters = {
         @Param(
             name = "outputs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             named = true,
             positional = false,
@@ -562,7 +562,7 @@
         @Param(
             name = "inputs",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -586,7 +586,7 @@
         @Param(
             name = "tools",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -599,7 +599,7 @@
         @Param(
             name = "arguments",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
             },
             defaultValue = "[]",
             named = true,
@@ -620,7 +620,7 @@
             type = Object.class,
             allowedTypes = {
               @ParamType(type = String.class),
-              @ParamType(type = SkylarkList.class, generic1 = String.class),
+              @ParamType(type = Sequence.class, generic1 = String.class),
               @ParamType(type = NoneType.class),
             },
             noneable = true,
@@ -672,7 +672,7 @@
             // experimental,
             // so folks shouldn't be too attached, but consider renaming to be more accurate/opaque.
             name = "input_manifests",
-            type = SkylarkList.class,
+            type = Sequence.class,
             noneable = true,
             defaultValue = "None",
             named = true,
@@ -685,7 +685,7 @@
       useLocation = true,
       useStarlarkThread = true)
   public NoneType action(
-      SkylarkList<?> outputs,
+      Sequence<?> outputs,
       Object inputs,
       Object executableUnchecked,
       Object toolsUnchecked,
@@ -723,7 +723,7 @@
         @Param(name = "input", type = String.class, doc = "String to be expanded."),
         @Param(
             name = "targets",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             defaultValue = "[]",
             named = true,
@@ -733,8 +733,7 @@
       useLocation = true,
       useStarlarkThread = true)
   public String expandLocation(
-      String input, SkylarkList<?> targets, Location loc, StarlarkThread thread)
-      throws EvalException;
+      String input, Sequence<?> targets, Location loc, StarlarkThread thread) throws EvalException;
 
   @SkylarkCallable(
       name = "file_action",
@@ -779,7 +778,7 @@
         @Param(
             name = "inputs",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
               @ParamType(type = SkylarkNestedSet.class),
             },
             generic1 = FileApi.class,
@@ -845,7 +844,7 @@
       parameters = {
         @Param(
             name = "files",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             named = true,
             defaultValue = "[]",
@@ -899,7 +898,7 @@
       },
       useLocation = true)
   public RunfilesApi runfiles(
-      SkylarkList<?> files,
+      Sequence<?> files,
       Object transitiveFiles,
       Boolean collectData,
       Boolean collectDefault,
@@ -955,7 +954,7 @@
         @Param(
             name = "tools",
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             named = true,
             positional = false,
@@ -987,7 +986,7 @@
       Object attributeUnchecked,
       Boolean expandLocations,
       Object makeVariablesUnchecked,
-      SkylarkList<?> tools,
+      Sequence<?> tools,
       SkylarkDict<?, ?> labelDictUnchecked,
       SkylarkDict<?, ?> executionRequirementsUnchecked,
       Location loc,
@@ -1007,7 +1006,7 @@
         @Param(
             name = "tools",
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             named = true,
             positional = false,
@@ -1015,5 +1014,5 @@
       },
       useLocation = false,
       useStarlarkThread = false)
-  public Tuple<Object> resolveTools(SkylarkList<?> tools) throws EvalException;
+  public Tuple<Object> resolveTools(Sequence<?> tools) 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 2e1977a..558a51b 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
@@ -26,8 +26,8 @@
 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.SkylarkList;
 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;
@@ -77,7 +77,7 @@
                     + "       fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b'"
                     + " })</pre></ul>All fields are optional.",
             allowedTypes = {
-              @ParamType(type = SkylarkList.class, generic1 = String.class),
+              @ParamType(type = Sequence.class, generic1 = String.class),
               @ParamType(type = SkylarkDict.class)
             },
             noneable = true,
@@ -215,7 +215,7 @@
                     + "(e.g. when generating header files for C++), do not set this flag."),
         @Param(
             name = "fragments",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -224,7 +224,7 @@
                     + "in target configuration."),
         @Param(
             name = "host_fragments",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -247,7 +247,7 @@
                     + "Starlark rules. This flag may be removed in the future."),
         @Param(
             name = "toolchains",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -266,14 +266,14 @@
                     + "tools."),
         @Param(
             name = "provides",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             positional = false,
             defaultValue = "[]",
             doc = PROVIDES_DOC),
         @Param(
             name = "exec_compatible_with",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             positional = false,
@@ -339,13 +339,13 @@
       Object implicitOutputs,
       Boolean executable,
       Boolean outputToGenfiles,
-      SkylarkList<?> fragments,
-      SkylarkList<?> hostFragments,
+      Sequence<?> fragments,
+      Sequence<?> hostFragments,
       Boolean skylarkTestable,
-      SkylarkList<?> toolchains,
+      Sequence<?> toolchains,
       String doc,
-      SkylarkList<?> providesArg,
-      SkylarkList<?> execCompatibleWith,
+      Sequence<?> providesArg,
+      Sequence<?> execCompatibleWith,
       Object analysisTest,
       Object buildSetting,
       Object cfg,
@@ -373,7 +373,7 @@
                     + "analysis phase for each application of an aspect to a target."),
         @Param(
             name = "attr_aspects",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -405,7 +405,7 @@
                     + "name, type, and valid values according to the restriction."),
         @Param(
             name = "required_aspect_providers",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             defaultValue = "[]",
             doc =
@@ -428,13 +428,13 @@
                     + "<code>BazInfo</code> *and* <code>QuxInfo</code>."),
         @Param(
             name = "provides",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             defaultValue = "[]",
             doc = PROVIDES_DOC),
         @Param(
             name = "fragments",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -443,7 +443,7 @@
                     + "in target configuration."),
         @Param(
             name = "host_fragments",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -452,7 +452,7 @@
                     + "in host configuration."),
         @Param(
             name = "toolchains",
-            type = SkylarkList.class,
+            type = Sequence.class,
             named = true,
             generic1 = String.class,
             defaultValue = "[]",
@@ -492,13 +492,13 @@
       useAst = true)
   public SkylarkAspectApi aspect(
       StarlarkFunction implementation,
-      SkylarkList<?> attributeAspects,
+      Sequence<?> attributeAspects,
       Object attrs,
-      SkylarkList<?> requiredAspectProvidersArg,
-      SkylarkList<?> providesArg,
-      SkylarkList<?> fragments,
-      SkylarkList<?> hostFragments,
-      SkylarkList<?> toolchains,
+      Sequence<?> requiredAspectProvidersArg,
+      Sequence<?> providesArg,
+      Sequence<?> fragments,
+      Sequence<?> hostFragments,
+      Sequence<?> toolchains,
       String doc,
       Boolean applyToGeneratingRules,
       FuncallExpression ast,
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 6d12991..6565196 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
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /** A collection of global skylark build API functions that apply to WORKSPACE files. */
@@ -81,7 +81,7 @@
       useStarlarkThread = true)
   NoneType workspace(
       String name,
-      SkylarkDict<?, ?> managedDirectories, // <String, SkylarkList<String>>
+      SkylarkDict<?, ?> managedDirectories, // <String, Sequence<String>>
       Location loc,
       StarlarkThread thread)
       throws EvalException, InterruptedException;
@@ -93,13 +93,13 @@
       extraPositionals =
           @Param(
               name = "platform_labels",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = String.class,
               doc = "The labels of the platforms to register."),
       useLocation = true,
       useStarlarkThread = true)
   NoneType registerExecutionPlatforms(
-      SkylarkList<?> platformLabels, Location location, StarlarkThread thread)
+      Sequence<?> platformLabels, Location location, StarlarkThread thread)
       throws EvalException, InterruptedException;
 
   @SkylarkCallable(
@@ -111,13 +111,12 @@
       extraPositionals =
           @Param(
               name = "toolchain_labels",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = String.class,
               doc = "The labels of the toolchains to register."),
       useLocation = true,
       useStarlarkThread = true)
-  NoneType registerToolchains(
-      SkylarkList<?> toolchainLabels, Location location, StarlarkThread thread)
+  NoneType registerToolchains(Sequence<?> toolchainLabels, Location location, StarlarkThread thread)
       throws EvalException, InterruptedException;
 
   @SkylarkCallable(
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 920778f..497c495 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
@@ -24,8 +24,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -57,7 +57,7 @@
         @Param(
             name = "deps",
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidAssetsInfoApi.class,
             positional = false,
             named = true,
@@ -79,7 +79,7 @@
               + " for backwards-compatibility with existing behavior.",
       documented = false)
   AndroidAssetsInfoT assetsFromDeps(
-      SkylarkList<?> deps, // <AndroidAssetsInfoT>
+      Sequence<?> deps, // <AndroidAssetsInfoT>
       boolean neverlink,
       StarlarkThread thread)
       throws EvalException;
@@ -96,7 +96,7 @@
         @Param(
             name = "deps",
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidResourcesInfoApi.class,
             positional = false,
             named = true,
@@ -104,7 +104,7 @@
         @Param(
             name = "assets",
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidAssetsInfoApi.class,
             positional = false,
             named = true,
@@ -137,8 +137,8 @@
       documented = false)
   AndroidResourcesInfoT resourcesFromDeps(
       AndroidDataContextT ctx,
-      SkylarkList<?> deps, // <AndroidResourcesInfoT>
-      SkylarkList<?> assets, // <AndroidAssetsInfoT>
+      Sequence<?> deps, // <AndroidResourcesInfoT>
+      Sequence<?> assets, // <AndroidAssetsInfoT>
       boolean neverlink,
       String customPackage,
       Location location,
@@ -211,7 +211,7 @@
             name = "assets",
             positional = false,
             defaultValue = "None",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             noneable = true,
             named = true,
@@ -232,7 +232,7 @@
             name = "deps",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidAssetsInfoApi.class,
             named = true,
             doc =
@@ -260,7 +260,7 @@
       AndroidDataContextT ctx,
       Object assets,
       Object assetsDir,
-      SkylarkList<?> deps, // <AndroidAssetsInfoT>
+      Sequence<?> deps, // <AndroidAssetsInfoT>
       boolean neverlink,
       Location location,
       StarlarkThread thread)
@@ -287,7 +287,7 @@
             name = "resources",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileProviderApi.class,
             named = true,
             doc = "Providers of this target's resources."),
@@ -295,7 +295,7 @@
             name = "deps",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidResourcesInfoApi.class,
             named = true,
             doc =
@@ -336,8 +336,8 @@
   ValidatedAndroidDataT mergeRes(
       AndroidDataContextT ctx,
       AndroidManifestInfoT manifest,
-      SkylarkList<?> resources, // <TransitiveInfoCollectionT>
-      SkylarkList<?> deps, // <AndroidResourcesInfoT>
+      Sequence<?> resources, // <TransitiveInfoCollectionT>
+      Sequence<?> deps, // <AndroidResourcesInfoT>
       boolean neverlink,
       boolean enableDataBinding,
       Location location,
@@ -365,7 +365,7 @@
             name = "resources",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileProviderApi.class,
             named = true,
             doc = "Providers of this target's resources."),
@@ -373,7 +373,7 @@
             name = "deps",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidResourcesInfoApi.class,
             named = true,
             doc =
@@ -413,8 +413,8 @@
   SkylarkDict<? extends ProviderApi, ? extends StructApi> mergeResources(
       AndroidDataContextT ctx,
       AndroidManifestInfoT manifest,
-      SkylarkList<?> resources, // <TransitiveInfoCollectionT>
-      SkylarkList<?> deps, // <AndroidResourcesInfoT>
+      Sequence<?> resources, // <TransitiveInfoCollectionT>
+      Sequence<?> deps, // <AndroidResourcesInfoT>
       boolean neverlink,
       boolean enableDataBinding,
       Location location,
@@ -454,7 +454,7 @@
             doc = "The library class jar."),
         @Param(
             name = "local_proguard_specs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             positional = false,
@@ -464,7 +464,7 @@
                     + " inherited in the top-level target."),
         @Param(
             name = "deps",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = AndroidLibraryAarInfoApi.class,
             defaultValue = "[]",
             positional = false,
@@ -490,8 +490,8 @@
       AndroidResourcesInfoT resourcesInfo,
       AndroidAssetsInfoT assetsInfo,
       FileT libraryClassJar,
-      SkylarkList<?> localProguardSpecs, // <FileT>
-      SkylarkList<?> deps, // <AndroidLibraryAarInfoT>
+      Sequence<?> localProguardSpecs, // <FileT>
+      Sequence<?> deps, // <AndroidLibraryAarInfoT>
       boolean neverlink)
       throws EvalException, InterruptedException;
 
@@ -524,7 +524,7 @@
             doc = "The manifest file."),
         @Param(
             name = "deps",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             named = true,
             positional = false,
@@ -538,7 +538,7 @@
       SpecialFileT resources,
       SpecialFileT assets,
       FileT androidManifest,
-      SkylarkList<?> deps /* <TransitiveInfoCollectionT> */)
+      Sequence<?> deps /* <TransitiveInfoCollectionT> */)
       throws InterruptedException, EvalException;
 
   @SkylarkCallable(
@@ -564,7 +564,7 @@
             name = "resources",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileProviderApi.class,
             named = true,
             doc = "Providers of this target's resources."),
@@ -572,7 +572,7 @@
             name = "assets",
             positional = false,
             defaultValue = "None",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             noneable = true,
             named = true,
@@ -624,7 +624,7 @@
             name = "deps",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             named = true,
             doc =
@@ -634,7 +634,7 @@
             name = "nocompress_extensions",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             doc = "A list of file extensions to leave uncompressed in the resource apk.")
@@ -648,14 +648,14 @@
   SkylarkDict<? extends ProviderApi, ? extends StructApi> processLocalTestData(
       AndroidDataContextT ctx,
       Object manifest,
-      SkylarkList<?> resources, // <TransitiveInfoCollectionT>
+      Sequence<?> resources, // <TransitiveInfoCollectionT>
       Object assets,
       Object assetsDir,
       Object customPackage,
       String aaptVersionString,
       SkylarkDict<?, ?> manifestValues, // <String, String>
-      SkylarkList<?> deps, // <TransitiveInfoCollectionT>
-      SkylarkList<?> noCompressExtensions, // <String>
+      Sequence<?> deps, // <TransitiveInfoCollectionT>
+      Sequence<?> noCompressExtensions, // <String>
       Location location,
       StarlarkThread thread)
       throws InterruptedException, EvalException;
@@ -683,7 +683,7 @@
             name = "resource_configuration_filters",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             doc =
@@ -693,7 +693,7 @@
             name = "densities",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             doc =
@@ -704,7 +704,7 @@
             name = "nocompress_extensions",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             doc =
@@ -729,9 +729,9 @@
   AndroidBinaryDataSettingsApi makeBinarySettings(
       AndroidDataContextT ctx,
       Object shrinkResources,
-      SkylarkList<?> resourceConfigurationFilters, // <String>
-      SkylarkList<?> densities, // <String>
-      SkylarkList<?> noCompressExtensions, // <String>
+      Sequence<?> resourceConfigurationFilters, // <String>
+      Sequence<?> densities, // <String>
+      Sequence<?> noCompressExtensions, // <String>
       String aaptVersionString,
       Location location,
       StarlarkThread thread)
@@ -750,7 +750,7 @@
             name = "resources",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileProviderApi.class,
             named = true,
             doc = "Providers of this target's resources."),
@@ -758,7 +758,7 @@
             name = "assets",
             positional = false,
             defaultValue = "None",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             noneable = true,
             named = true,
@@ -811,7 +811,7 @@
             name = "deps",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             named = true,
             doc =
@@ -861,13 +861,13 @@
       documented = false)
   AndroidBinaryDataInfoT processBinaryData(
       AndroidDataContextT ctx,
-      SkylarkList<?> resources, // <TransitiveInfoCollectionT>
+      Sequence<?> resources, // <TransitiveInfoCollectionT>
       Object assets,
       Object assetsDir,
       Object manifest,
       Object customPackage,
       SkylarkDict<?, ?> manifestValues, // <String, String>
-      SkylarkList<?> deps, // <TransitiveInfoCollectionT>
+      Sequence<?> deps, // <TransitiveInfoCollectionT>
       String manifestMerger,
       Object maybeSettings,
       boolean crunchPng,
@@ -917,7 +917,7 @@
             name = "deps",
             positional = false,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             named = true,
             doc =
@@ -925,7 +925,7 @@
                     + " type of data."),
         @Param(
             name = "proguard_specs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             defaultValue = "[]",
             positional = false,
@@ -935,7 +935,7 @@
                     + " inherited in the top-level target."),
         @Param(
             name = "extra_proguard_specs,",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = TransitiveInfoCollectionApi.class,
             defaultValue = "[]",
             positional = false,
@@ -956,9 +956,9 @@
       FileT proguardOutputJar,
       FileT proguardMapping,
       Object maybeSettings,
-      SkylarkList<?> deps, // <TransitiveInfoCollectionT>
-      SkylarkList<?> localProguardSpecs, // <TransitiveInfoCollectionT>
-      SkylarkList<?> extraProguardSpecs, // <TransitiveInfoCollectionT>
+      Sequence<?> deps, // <TransitiveInfoCollectionT>
+      Sequence<?> localProguardSpecs, // <TransitiveInfoCollectionT>
+      Sequence<?> extraProguardSpecs, // <TransitiveInfoCollectionT>
       Location location,
       StarlarkThread thread)
       throws EvalException, InterruptedException;
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 70991b0..80c1a33 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
@@ -24,8 +24,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import javax.annotation.Nullable;
 
@@ -219,14 +219,14 @@
               doc = "A list of artifacts of the idl srcs.",
               positional = true,
               named = false,
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = FileApi.class),
           @Param(
               name = "idl_generated_java_files",
               doc = "A list of artifacts of the idl generated java files.",
               positional = true,
               named = false,
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = FileApi.class),
           @Param(
               name = "idl_source_jar",
@@ -281,7 +281,7 @@
               doc = "A list of artifacts of the apks under test",
               positional = true,
               named = false,
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = FileApi.class),
           @Param(
               name = "native_libs",
@@ -300,8 +300,8 @@
         /*noneable*/ Object manifest,
         /*noneable*/ Object generatedManifest,
         /*noneable*/ Object idlImportRoot,
-        SkylarkList<?> idlSrcs, // <FileT>
-        SkylarkList<?> idlGeneratedJavaFiles, // <FileT>
+        Sequence<?> idlSrcs, // <FileT>
+        Sequence<?> idlGeneratedJavaFiles, // <FileT>
         /*noneable*/ Object idlSourceJar,
         /*noneable*/ Object idlClassJar,
         boolean definesAndroidResources,
@@ -309,7 +309,7 @@
         /*noneable*/ Object resourceApk,
         /*noneable*/ Object signedApk,
         /*noneable*/ Object aar,
-        SkylarkList<?> apksUnderTest, // <FileT>
+        Sequence<?> apksUnderTest, // <FileT>
         SkylarkDict<?, ?> nativeLibs /* <String, SkylarkNestedSet> */)
         throws EvalException;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidProguardInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidProguardInfoApi.java
index d41b6e9..6ef28ed 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidProguardInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidProguardInfoApi.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /** A target that can provide local proguard specifications. */
 @SkylarkModule(
@@ -61,12 +61,12 @@
               doc = "A list of local proguard specs.",
               positional = true,
               named = false,
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = FileApi.class)
         },
         selfCall = true)
     @SkylarkConstructor(objectType = AndroidProguardInfoApi.class)
-    AndroidProguardInfoApi<FileT> createInfo(SkylarkList<?> localProguardSpecs /* <FileT> */)
+    AndroidProguardInfoApi<FileT> createInfo(Sequence<?> localProguardSpecs /* <FileT> */)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java
index b7f4f9d..ee3544c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import javax.annotation.Nullable;
 
 /**
@@ -176,7 +176,7 @@
               positional = false,
               named = true,
               defaultValue = "[]",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = DataBindingV2ProviderApi.class),
           @Param(
               name = "databinding_v2_providers_in_exports",
@@ -184,7 +184,7 @@
               positional = false,
               named = true,
               defaultValue = "[]",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = DataBindingV2ProviderApi.class),
         },
         selfCall = true)
@@ -195,8 +195,8 @@
         Object brFile,
         Object label,
         Object javaPackage,
-        SkylarkList<?> databindingV2ProvidersInDeps, // <DataBindingV2ProviderApi<FileT>>
-        SkylarkList<?> databindingV2ProvidersInExports /* <DataBindingV2ProviderApi<FileT>> */)
+        Sequence<?> databindingV2ProvidersInDeps, // <DataBindingV2ProviderApi<FileT>>
+        Sequence<?> databindingV2ProvidersInExports /* <DataBindingV2ProviderApi<FileT>> */)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/UsesDataBindingProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/UsesDataBindingProviderApi.java
index b8c6684..8c1a2ab 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/UsesDataBindingProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/UsesDataBindingProviderApi.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /**
  * An interface for a provider that exposes the use of <a
@@ -65,12 +65,12 @@
               doc = "A list of artifacts of the metadata outputs.",
               positional = true,
               named = false,
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = FileApi.class),
         },
         selfCall = true)
     @SkylarkConstructor(objectType = UsesDataBindingProviderApi.class)
-    UsesDataBindingProviderApi<FileT> createInfo(SkylarkList<?> metadataOutputs /* <FileT> */)
+    UsesDataBindingProviderApi<FileT> createInfo(Sequence<?> metadataOutputs /* <FileT> */)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
index 3e89181..9696dca 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
@@ -18,7 +18,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import javax.annotation.Nullable;
 
@@ -116,5 +116,5 @@
       doc = "",
       documented = false,
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS)
-  SkylarkList<FileT> getResourcesList();
+  Sequence<FileT> getResourcesList();
 }
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 5a7c2e6..22e6d48 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
@@ -27,8 +27,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -371,7 +371,7 @@
             doc = "The Starlark rule context."),
         @Param(
             name = "extra_linkopts",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             positional = false,
@@ -379,7 +379,7 @@
             doc = "Extra linkopts to be passed to the linker action."),
         @Param(
             name = "extra_link_inputs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             named = true,
             positional = false,
@@ -390,8 +390,8 @@
   // TODO(b/70937317): Iterate on, improve, and solidify this API.
   public StructApi linkMultiArchBinary(
       SkylarkRuleContextApi skylarkRuleContext,
-      SkylarkList<?> extraLinkopts, // <String> expected.
-      SkylarkList<?> extraLinkInputs, // <? extends FileApi> expected.
+      Sequence<?> extraLinkopts, // <String> expected.
+      Sequence<?> extraLinkInputs, // <? extends FileApi> expected.
       StarlarkThread thread)
       throws EvalException, InterruptedException;
 
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcProviderApi.java
index ad6b9c4..1e023fc 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcProviderApi.java
@@ -20,7 +20,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /**
@@ -80,7 +80,7 @@
       doc =
           "Header files from this target directly (no transitive headers). "
               + "These may be either public or private headers.")
-  public SkylarkList<FileApiT> directHeaders();
+  public Sequence<FileApiT> directHeaders();
 
   @SkylarkCallable(name = "imported_library",
       structField = true,
@@ -174,7 +174,7 @@
       doc =
           "Module map files from this target directly (no transitive module maps). "
               + "Used to enforce proper use of private header files and for Swift compilation.")
-  public SkylarkList<FileApiT> directModuleMaps();
+  public Sequence<FileApiT> directModuleMaps();
 
   @SkylarkCallable(name = "multi_arch_dynamic_libraries",
       structField = true,
@@ -216,7 +216,7 @@
       name = "direct_sources",
       structField = true,
       doc = "All direct source files from this target (no transitive files).")
-  public SkylarkList<FileApiT> directSources();
+  public Sequence<FileApiT> directSources();
 
   @SkylarkCallable(
       name = "static_framework_file",
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 5f4688e..05e0620 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
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.syntax.BaseFunction;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -80,7 +80,7 @@
                     + "split transition."),
         @Param(
             name = "inputs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             positional = false,
             named = true,
@@ -90,7 +90,7 @@
                     + "parameter."),
         @Param(
             name = "outputs",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             positional = false,
             named = true,
@@ -103,8 +103,8 @@
   @SkylarkConstructor(objectType = ConfigurationTransitionApi.class)
   ConfigurationTransitionApi transition(
       BaseFunction implementation,
-      SkylarkList<?> inputs, // <String> expected
-      SkylarkList<?> outputs, // <String> expected
+      Sequence<?> inputs, // <String> expected
+      Sequence<?> outputs, // <String> expected
       Location location,
       StarlarkThread thread)
       throws EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
index 0cf3fa9..8aeadb8 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.syntax.Tuple;
@@ -93,7 +93,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "public_hdrs",
             doc =
@@ -102,7 +102,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "private_hdrs",
             doc =
@@ -111,7 +111,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "includes",
             doc =
@@ -120,7 +120,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "quote_includes",
             doc =
@@ -131,7 +131,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "system_includes",
             doc =
@@ -142,7 +142,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "framework_includes",
             doc =
@@ -152,7 +152,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "defines",
             doc =
@@ -161,7 +161,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "local_defines",
             doc =
@@ -170,21 +170,21 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "user_compile_flags",
             doc = "Additional list of compilation options.",
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "compilation_contexts",
             doc = "Headers from dependencies used for compilation.",
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "name",
             doc =
@@ -213,27 +213,27 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
       })
   Tuple<Object> compile(
       SkylarkActionFactoryT skylarkActionFactoryApi,
       FeatureConfigurationT skylarkFeatureConfiguration,
       CcToolchainProviderT skylarkCcToolchainProvider,
-      SkylarkList<?> sources, // <FileT> expected
-      SkylarkList<?> publicHeaders, // <FileT> expected
-      SkylarkList<?> privateHeaders, // <FileT> expected
-      SkylarkList<?> includes, // <String> expected
-      SkylarkList<?> quoteIncludes, // <String> expected
-      SkylarkList<?> systemIncludes, // <String> expected
-      SkylarkList<?> frameworkIncludes, // <String> expected
-      SkylarkList<?> defines, // <String> expected
-      SkylarkList<?> localDefines, // <String> expected
-      SkylarkList<?> userCompileFlags, // <String> expected
-      SkylarkList<?> ccCompilationContexts, // <CompilationContextT> expected
+      Sequence<?> sources, // <FileT> expected
+      Sequence<?> publicHeaders, // <FileT> expected
+      Sequence<?> privateHeaders, // <FileT> expected
+      Sequence<?> includes, // <String> expected
+      Sequence<?> quoteIncludes, // <String> expected
+      Sequence<?> systemIncludes, // <String> expected
+      Sequence<?> frameworkIncludes, // <String> expected
+      Sequence<?> defines, // <String> expected
+      Sequence<?> localDefines, // <String> expected
+      Sequence<?> userCompileFlags, // <String> expected
+      Sequence<?> ccCompilationContexts, // <CompilationContextT> expected
       String name,
       boolean disallowPicOutputs,
       boolean disallowNopicOutputs,
-      SkylarkList<?> additionalInputs, // <FileT> expected
+      Sequence<?> additionalInputs, // <FileT> expected
       Location location,
       StarlarkThread thread)
       throws EvalException, InterruptedException;
@@ -279,7 +279,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "linking_contexts",
             doc =
@@ -288,7 +288,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "name",
             doc =
@@ -324,7 +324,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "grep_includes",
             positional = false,
@@ -338,13 +338,13 @@
       FeatureConfigurationT skylarkFeatureConfiguration,
       CcToolchainProviderT skylarkCcToolchainProvider,
       Object compilationOutputs,
-      SkylarkList<?> userLinkFlags, // <String> expected
-      SkylarkList<?> linkingContexts, // <LinkingContextT> expected
+      Sequence<?> userLinkFlags, // <String> expected
+      Sequence<?> linkingContexts, // <LinkingContextT> expected
       String name,
       String language,
       String outputType,
       boolean linkDepsStatically,
-      SkylarkList<?> additionalInputs, // <FileT> expected
+      Sequence<?> additionalInputs, // <FileT> expected
       Object grepIncludes,
       Location location,
       StarlarkThread thread)
@@ -390,9 +390,9 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
       })
   CompilationOutputsT mergeCcCompilationOutputsFromSkylark(
-      SkylarkList<?> compilationOutputs) // <CompilationOutputsT> expected
+      Sequence<?> compilationOutputs) // <CompilationOutputsT> expected
       throws EvalException;
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
index fe5b519..eecdd69 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /** Interface for a structured representation of the compilation outputs of a C++ rule. */
@@ -43,12 +43,12 @@
         @Param(name = "use_pic", doc = "use_pic", positional = false, named = true),
       })
   @Deprecated
-  SkylarkList<FileT> getSkylarkObjectFiles(boolean usePic, Location location, StarlarkThread thread)
+  Sequence<FileT> getSkylarkObjectFiles(boolean usePic, Location location, StarlarkThread thread)
       throws EvalException;
 
   @SkylarkCallable(name = "objects", documented = false, useLocation = true, structField = true)
-  SkylarkList<FileT> getSkylarkObjects(Location location) throws EvalException;
+  Sequence<FileT> getSkylarkObjects(Location location) throws EvalException;
 
   @SkylarkCallable(name = "pic_objects", documented = false, useLocation = true, structField = true)
-  SkylarkList<FileT> getSkylarkPicObjects(Location location) throws EvalException;
+  Sequence<FileT> getSkylarkPicObjects(Location location) throws EvalException;
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
index 51fa062..90860fa 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
@@ -19,7 +19,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 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;
@@ -36,7 +36,7 @@
       name = "user_link_flags",
       doc = "Returns the list of user link flags passed as strings.",
       structField = true)
-  SkylarkList<String> getSkylarkUserLinkFlags();
+  Sequence<String> getSkylarkUserLinkFlags();
 
   @SkylarkCallable(
       name = "libraries_to_link",
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 3f341ff..85eb133 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
@@ -27,8 +27,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 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;
@@ -95,20 +95,20 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "unsupported_features",
             doc = "List of features that are unsupported by the current rule.",
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
       })
   FeatureConfigurationT configureFeatures(
       Object ruleContextOrNone,
       CcToolchainProviderT toolchain,
-      SkylarkList<?> requestedFeatures, // <String> expected
-      SkylarkList<?> unsupportedFeatures) // <String> expected
+      Sequence<?> requestedFeatures, // <String> expected
+      Sequence<?> unsupportedFeatures) // <String> expected
       throws EvalException;
 
   @SkylarkCallable(
@@ -153,7 +153,7 @@
             named = true,
             positional = false),
       })
-  SkylarkList<String> getExecutionRequirements(
+  Sequence<String> getExecutionRequirements(
       FeatureConfigurationT featureConfiguration, String actionName);
 
   @SkylarkCallable(
@@ -222,7 +222,7 @@
             positional = false,
             type = CcToolchainVariablesApi.class),
       })
-  SkylarkList<String> getCommandLine(
+  Sequence<String> getCommandLine(
       FeatureConfigurationT featureConfiguration,
       String actionName,
       CcToolchainVariablesT variables)
@@ -307,7 +307,7 @@
             noneable = true,
             allowedTypes = {
               @ParamType(type = NoneType.class),
-              @ParamType(type = SkylarkList.class),
+              @ParamType(type = Sequence.class),
             }),
         @Param(
             name = "include_directories",
@@ -438,10 +438,7 @@
             named = true,
             defaultValue = "None",
             noneable = true,
-            allowedTypes = {
-              @ParamType(type = NoneType.class),
-              @ParamType(type = SkylarkList.class)
-            }),
+            allowedTypes = {@ParamType(type = NoneType.class), @ParamType(type = Sequence.class)}),
         @Param(
             name = "output_file",
             doc = "Optional output file path.",
@@ -684,10 +681,7 @@
             named = true,
             noneable = true,
             defaultValue = "None",
-            allowedTypes = {
-              @ParamType(type = NoneType.class),
-              @ParamType(type = SkylarkList.class)
-            }),
+            allowedTypes = {@ParamType(type = NoneType.class), @ParamType(type = Sequence.class)}),
         @Param(
             name = "user_link_flags",
             doc = "List of user link flags passed as strings.",
@@ -695,10 +689,7 @@
             named = true,
             noneable = true,
             defaultValue = "None",
-            allowedTypes = {
-              @ParamType(type = NoneType.class),
-              @ParamType(type = SkylarkList.class)
-            }),
+            allowedTypes = {@ParamType(type = NoneType.class), @ParamType(type = Sequence.class)}),
         @Param(
             name = "additional_inputs",
             doc = "For additional inputs to the linking action, e.g.: linking scripts.",
@@ -706,10 +697,7 @@
             named = true,
             noneable = true,
             defaultValue = "None",
-            allowedTypes = {
-              @ParamType(type = NoneType.class),
-              @ParamType(type = SkylarkList.class)
-            }),
+            allowedTypes = {@ParamType(type = NoneType.class), @ParamType(type = Sequence.class)}),
       })
   LinkingContextT createCcLinkingInfo(
       Object linkerInputs,
@@ -730,9 +718,9 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class)
+            type = Sequence.class)
       })
-  CcInfoApi mergeCcInfos(SkylarkList<?> ccInfos) // <CcInfoApi> expected
+  CcInfoApi mergeCcInfos(Sequence<?> ccInfos) // <CcInfoApi> expected
       throws EvalException;
 
   @SkylarkCallable(
@@ -855,7 +843,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "A list of <a href=\"https://github.com/bazelbuild/bazel/blob/master/tools/cpp/"
                     + "cc_toolchain_config_lib.bzl#L336\">features</a>."),
@@ -864,7 +852,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "A list of <a href=\"https://github.com/bazelbuild/bazel/blob/master/tools/cpp/"
                     + "cc_toolchain_config_lib.bzl#L461\">action_configs</a>."),
@@ -873,7 +861,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "A list of <a href=\"https://github.com/bazelbuild/bazel/blob/master/tools/cpp/"
                     + "cc_toolchain_config_lib.bzl#L516\">artifact_name_patterns</a>."),
@@ -882,7 +870,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "<p>Built-in include directories for C++ compilation. These should be the exact "
                     + "paths used by the compiler, and are generally relative to the exec root.</p>"
@@ -950,7 +938,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "A list of <a href=\"https://github.com/bazelbuild/bazel/blob/master/tools/cpp/"
                     + "cc_toolchain_config_lib.bzl#L400\">tool_paths</a>."),
@@ -959,7 +947,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "A list of <a href=\"https://github.com/bazelbuild/bazel/blob/master/tools/cpp/"
                     + "cc_toolchain_config_lib.bzl#L86\">make_variables</a>."),
@@ -984,10 +972,10 @@
       })
   CcToolchainConfigInfoT ccToolchainConfigInfoFromSkylark(
       SkylarkRuleContextT skylarkRuleContext,
-      SkylarkList<?> features, // <StructApi> expected
-      SkylarkList<?> actionConfigs, // <StructApi> expected
-      SkylarkList<?> artifactNamePatterns, // <StructApi> expected
-      SkylarkList<?> cxxBuiltInIncludeDirectories, // <String> expected
+      Sequence<?> features, // <StructApi> expected
+      Sequence<?> actionConfigs, // <StructApi> expected
+      Sequence<?> artifactNamePatterns, // <StructApi> expected
+      Sequence<?> cxxBuiltInIncludeDirectories, // <String> expected
       String toolchainIdentifier,
       String hostSystemName,
       String targetSystemName,
@@ -996,8 +984,8 @@
       String compiler,
       String abiVersion,
       String abiLibcVersion,
-      SkylarkList<?> toolPaths, // <StructApi> expected
-      SkylarkList<?> makeVariables, // <StructApi> expected
+      Sequence<?> toolPaths, // <StructApi> expected
+      Sequence<?> makeVariables, // <StructApi> expected
       Object builtinSysroot,
       Object ccTargetOs)
       throws EvalException;
@@ -1041,7 +1029,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "linking_contexts",
             doc =
@@ -1050,7 +1038,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "name",
             doc =
@@ -1079,7 +1067,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "disallow_static_libraries",
             doc = "Whether static libraries should be created.",
@@ -1107,12 +1095,12 @@
       FeatureConfigurationT skylarkFeatureConfiguration,
       CcToolchainProviderT skylarkCcToolchainProvider,
       CompilationOutputsT compilationOutputs,
-      SkylarkList<?> userLinkFlags, // <String> expected
-      SkylarkList<?> linkingContexts, // <LinkingContextT> expected
+      Sequence<?> userLinkFlags, // <String> expected
+      Sequence<?> linkingContexts, // <LinkingContextT> expected
       String name,
       String language,
       boolean alwayslink,
-      SkylarkList<?> additionalInputs, // <FileT> expected
+      Sequence<?> additionalInputs, // <FileT> expected
       boolean disallowStaticLibraries,
       boolean disallowDynamicLibraries,
       Object grepIncludes,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java
index 4b3fbb7..37d4010 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Tuple;
 
 /**
@@ -153,14 +153,14 @@
             positional = false,
             named = true,
             type = CcToolchainProviderApi.class),
-        @Param(name = "srcs", positional = false, named = true, type = SkylarkList.class),
-        @Param(name = "deps", positional = false, named = true, type = SkylarkList.class),
+        @Param(name = "srcs", positional = false, named = true, type = Sequence.class),
+        @Param(name = "deps", positional = false, named = true, type = Sequence.class),
       })
   public Tuple<FileT> createGoCompileActions(
       SkylarkRuleContextT skylarkRuleContext,
       CcToolchainProviderT ccToolchainProvider,
-      SkylarkList<?> srcs, // <FileT> expected
-      SkylarkList<?> deps /* <TransitiveInfoCollectionT> expected */)
+      Sequence<?> srcs, // <FileT> expected
+      Sequence<?> deps /* <TransitiveInfoCollectionT> expected */)
       throws EvalException;
 
   @SkylarkCallable(
@@ -174,14 +174,14 @@
             positional = false,
             named = true,
             type = CcToolchainProviderApi.class),
-        @Param(name = "srcs", positional = false, named = true, type = SkylarkList.class),
-        @Param(name = "deps", positional = false, named = true, type = SkylarkList.class),
+        @Param(name = "srcs", positional = false, named = true, type = Sequence.class),
+        @Param(name = "deps", positional = false, named = true, type = Sequence.class),
       })
   public Tuple<FileT> createGoCompileActionsGopkg(
       SkylarkRuleContextT skylarkRuleContext,
       CcToolchainProviderT ccToolchainProvider,
-      SkylarkList<?> srcs, // <FileT> expected
-      SkylarkList<?> deps /* <TransitiveInfoCollectionT> expected */)
+      Sequence<?> srcs, // <FileT> expected
+      Sequence<?> deps /* <TransitiveInfoCollectionT> expected */)
       throws EvalException;
 
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
index 1bfc17f..1f90a49 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
@@ -19,7 +19,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /**
  * A library the user can link to. This is different from a simple linker input in that it also has
@@ -35,14 +35,14 @@
       allowReturnNones = true,
       doc = "<code>List</code> of object files in the library.",
       structField = true)
-  SkylarkList<FileT> getObjectFilesForStarlark();
+  Sequence<FileT> getObjectFilesForStarlark();
 
   @SkylarkCallable(
       name = "pic_objects",
       allowReturnNones = true,
       doc = "<code>List</code> of pic object files in the library.",
       structField = true)
-  SkylarkList<FileT> getPicObjectFilesForStarlark();
+  Sequence<FileT> getPicObjectFilesForStarlark();
 
   @SkylarkCallable(
       name = "static_library",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
index a82f769..fec7916 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -47,7 +47,7 @@
       doc = "Returns the list of user link flags passed as strings.",
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_CC_SHARED_LIBRARY,
       structField = true)
-  SkylarkList<String> getSkylarkUserLinkFlags();
+  Sequence<String> getSkylarkUserLinkFlags();
 
   @SkylarkCallable(
       name = "libraries",
@@ -57,12 +57,12 @@
       structField = true,
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_CC_SHARED_LIBRARY,
       useStarlarkThread = true)
-  SkylarkList<LibraryToLinkT> getSkylarkLibrariesToLink(StarlarkThread thread);
+  Sequence<LibraryToLinkT> getSkylarkLibrariesToLink(StarlarkThread thread);
 
   @SkylarkCallable(
       name = "additional_inputs",
       doc = "Returns the depset of additional inputs, e.g.: linker scripts.",
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_CC_SHARED_LIBRARY,
       structField = true)
-  SkylarkList<FileT> getSkylarkNonCodeInputs();
+  Sequence<FileT> getSkylarkNonCodeInputs();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java
index 841ae42..3217d45 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /**
@@ -63,7 +63,7 @@
         @Param(name = "ctx", positional = false, named = true, type = SkylarkRuleContextApi.class),
       })
   // TODO(plf): PyExtension is not in Skylark.
-  public SkylarkList<String> getPyExtensionLinkopts(SkylarkRuleContextT skylarkRuleContext)
+  public Sequence<String> getPyExtensionLinkopts(SkylarkRuleContextT skylarkRuleContext)
       throws EvalException, InterruptedException;
 
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java
index cac6114..d01e68b 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /**
@@ -91,8 +91,8 @@
             name = "dep_compilation_contexts",
             positional = false,
             named = true,
-            type = SkylarkList.class),
-        @Param(name = "target_copts", positional = false, named = true, type = SkylarkList.class),
+            type = Sequence.class),
+        @Param(name = "target_copts", positional = false, named = true, type = Sequence.class),
       })
   public CompilationInfoT skylarkCreateCompileActions(
       SkylarkRuleContextT skylarkRuleContext,
@@ -100,8 +100,8 @@
       CcToolchainProviderT ccToolchain,
       FileT ccFile,
       FileT headerFile,
-      SkylarkList<?> depCcCompilationContexts, // <CcCompilationContextT> expected
-      SkylarkList<?> targetCopts /* <String> expected */)
+      Sequence<?> depCcCompilationContexts, // <CcCompilationContextT> expected
+      Sequence<?> targetCopts /* <String> expected */)
       throws EvalException, InterruptedException;
 
   @SkylarkCallable(
@@ -158,10 +158,10 @@
             named = true,
             type = SkylarkNestedSet.class),
         @Param(name = "swig_source", positional = false, named = true, type = FileApi.class),
-        @Param(name = "sub_parameters", positional = false, named = true, type = SkylarkList.class),
+        @Param(name = "sub_parameters", positional = false, named = true, type = Sequence.class),
         @Param(name = "cc_file", positional = false, named = true, type = FileApi.class),
         @Param(name = "header_file", positional = false, named = true, type = FileApi.class),
-        @Param(name = "output_files", positional = false, named = true, type = SkylarkList.class),
+        @Param(name = "output_files", positional = false, named = true, type = Sequence.class),
         @Param(
             name = "out_dir",
             positional = false,
@@ -201,10 +201,10 @@
       CcCompilationContextT wrapperCcCompilationContext,
       SkylarkNestedSet swigIncludes,
       FileT swigSource,
-      SkylarkList<?> subParameters, // <String> expected
+      Sequence<?> subParameters, // <String> expected
       FileT ccFile,
       FileT headerFile,
-      SkylarkList<?> outputFiles, // <FileT> expected
+      Sequence<?> outputFiles, // <FileT> expected
       Object outDir,
       Object javaDir,
       SkylarkNestedSet auxiliaryInputs,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
index bdeacba..d889bb6 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
@@ -27,7 +27,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
@@ -70,7 +70,7 @@
             name = "source_jars",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             doc =
@@ -80,7 +80,7 @@
             name = "source_files",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             doc =
@@ -99,7 +99,7 @@
             name = "javac_opts",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             doc = "A list of the desired javac options. Optional."),
@@ -107,7 +107,7 @@
             name = "deps",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = JavaInfoApi.class,
             defaultValue = "[]",
             doc = "A list of dependencies. Optional."),
@@ -115,7 +115,7 @@
             name = "exports",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = JavaInfoApi.class,
             defaultValue = "[]",
             doc = "A list of exports. Optional."),
@@ -123,7 +123,7 @@
             name = "plugins",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = JavaInfoApi.class,
             defaultValue = "[]",
             doc = "A list of plugins. Optional."),
@@ -131,7 +131,7 @@
             name = "exported_plugins",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = JavaInfoApi.class,
             defaultValue = "[]",
             doc = "A list of exported plugins. Optional."),
@@ -139,7 +139,7 @@
             name = "annotation_processor_additional_inputs",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             doc =
@@ -149,7 +149,7 @@
             name = "annotation_processor_additional_outputs",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             doc =
@@ -184,14 +184,14 @@
             name = "sourcepath",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]"),
         @Param(
             name = "resources",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]"),
         @Param(
@@ -205,22 +205,22 @@
       useStarlarkThread = true)
   public JavaInfoT createJavaCompileAction(
       SkylarkRuleContextT skylarkRuleContext,
-      SkylarkList<?> sourceJars, // <FileT> expected.
-      SkylarkList<?> sourceFiles, // <FileT> expected.
+      Sequence<?> sourceJars, // <FileT> expected.
+      Sequence<?> sourceFiles, // <FileT> expected.
       FileT outputJar,
       Object outputSourceJar,
-      SkylarkList<?> javacOpts, // <String> expected.
-      SkylarkList<?> deps, // <JavaInfoT> expected.
-      SkylarkList<?> exports, // <JavaInfoT> expected.
-      SkylarkList<?> plugins, // <JavaInfoT> expected.
-      SkylarkList<?> exportedPlugins, // <JavaInfoT> expected.
-      SkylarkList<?> annotationProcessorAdditionalInputs, // <FileT> expected.
-      SkylarkList<?> annotationProcessorAdditionalOutputs, // <FileT> expected.
+      Sequence<?> javacOpts, // <String> expected.
+      Sequence<?> deps, // <JavaInfoT> expected.
+      Sequence<?> exports, // <JavaInfoT> expected.
+      Sequence<?> plugins, // <JavaInfoT> expected.
+      Sequence<?> exportedPlugins, // <JavaInfoT> expected.
+      Sequence<?> annotationProcessorAdditionalInputs, // <FileT> expected.
+      Sequence<?> annotationProcessorAdditionalOutputs, // <FileT> expected.
       String strictDepsMode,
       JavaToolchainT javaToolchain,
       JavaRuntimeT hostJavabase,
-      SkylarkList<?> sourcepathEntries, // <FileT> expected.
-      SkylarkList<?> resources, // <FileT> expected.
+      Sequence<?> sourcepathEntries, // <FileT> expected.
+      Sequence<?> resources, // <FileT> expected.
       Boolean neverlink,
       Location loc,
       StarlarkThread thread)
@@ -349,7 +349,7 @@
             name = "sources",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             doc = "A list of Java source files to be packed into the source jar."),
@@ -357,7 +357,7 @@
             name = "source_jars",
             positional = false,
             named = true,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             defaultValue = "[]",
             doc = "A list of source jars to be packed into the source jar."),
@@ -382,8 +382,8 @@
   public FileApi packSources(
       SkylarkActionFactoryT actions,
       FileT outputJar,
-      SkylarkList<?> sourceFiles, // <FileT> expected.
-      SkylarkList<?> sourceJars, // <FileT> expected.
+      Sequence<?> sourceFiles, // <FileT> expected.
+      Sequence<?> sourceJars, // <FileT> expected.
       JavaToolchainT javaToolchain,
       JavaRuntimeT hostJavabase,
       Location location,
@@ -419,11 +419,11 @@
             name = "providers",
             positional = true,
             named = false,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = JavaInfoApi.class,
             doc = "The list of providers to merge."),
       })
-  public JavaInfoT mergeJavaProviders(SkylarkList<?> providers /* <JavaInfoT> expected. */)
+  public JavaInfoT mergeJavaProviders(Sequence<?> providers /* <JavaInfoT> expected. */)
       throws EvalException;
 
   @SkylarkCallable(
@@ -490,7 +490,7 @@
             doc = "The JavaInfo to enhance."),
         @Param(
             name = "constraints",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             named = true,
             positional = false,
@@ -499,7 +499,7 @@
       },
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_GOOGLE_LEGACY_API)
   public JavaInfoT addConstraints(
-      JavaInfoT javaInfo, SkylarkList<?> constraints /* <String> expected. */) throws EvalException;
+      JavaInfoT javaInfo, Sequence<?> constraints /* <String> expected. */) throws EvalException;
 
   @SkylarkCallable(
       name = "experimental_disable_annotation_processing",
@@ -545,7 +545,7 @@
             doc = "The JavaInfo to clone."),
         @Param(
             name = "compile_time_jdeps",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = FileApi.class,
             named = true,
             positional = false,
@@ -554,7 +554,7 @@
       },
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_GOOGLE_LEGACY_API)
   public JavaInfoT addCompileTimeJavaDependencyArtifacts(
-      JavaInfoT javaInfo, SkylarkList<?> compileTimeJavaDependencyArtifacts /* <FileT> expected. */)
+      JavaInfoT javaInfo, Sequence<?> compileTimeJavaDependencyArtifacts /* <FileT> expected. */)
       throws EvalException;
 
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java
index 853d3ed..b1d18c2 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -90,7 +90,7 @@
               + " annotations) of the target  itself, i.e. NOT including the sources of the"
               + " transitive dependencies.",
       structField = true)
-  public SkylarkList<FileT> getSourceJars();
+  public Sequence<FileT> getSourceJars();
 
   @SkylarkCallable(
       name = "outputs",
@@ -117,7 +117,7 @@
       name = "runtime_output_jars",
       doc = "Returns a list of runtime Jars created by this Java/Java-like target.",
       structField = true)
-  public SkylarkList<FileT> getRuntimeOutputJars();
+  public Sequence<FileT> getRuntimeOutputJars();
 
   @SkylarkCallable(
       name = "transitive_deps",
@@ -201,21 +201,21 @@
               doc = "If true only use this library for compilation and not at runtime."),
           @Param(
               name = "deps",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = JavaInfoApi.class,
               named = true,
               defaultValue = "[]",
               doc = "Compile time dependencies that were used to create the output jar."),
           @Param(
               name = "runtime_deps",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = JavaInfoApi.class,
               named = true,
               defaultValue = "[]",
               doc = "Runtime dependencies that are needed for this library."),
           @Param(
               name = "exports",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = JavaInfoApi.class,
               named = true,
               defaultValue = "[]",
@@ -244,9 +244,9 @@
         Object compileJarApi,
         Object sourceJarApi,
         Boolean neverlink,
-        SkylarkList<?> deps,
-        SkylarkList<?> runtimeDeps,
-        SkylarkList<?> exports,
+        Sequence<?> deps,
+        Sequence<?> runtimeDeps,
+        Sequence<?> exports,
         Object jdepsApi,
         Location loc,
         StarlarkThread thread)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaToolchainSkylarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaToolchainSkylarkApiProviderApi.java
index c610c02..e48db2d 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaToolchainSkylarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaToolchainSkylarkApiProviderApi.java
@@ -19,7 +19,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /**
@@ -62,7 +62,7 @@
       name = "jvm_opt",
       doc = "The default options for the JVM running the java compiler and associated tools.",
       structField = true)
-  public SkylarkList<String> getSkylarkJvmOptions();
+  public Sequence<String> getSkylarkJvmOptions();
 
   @SkylarkCallable(name = "tools", doc = "The compilation tools.", structField = true)
   public SkylarkNestedSet getSkylarkTools();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java
index dcc01af..10cc305 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java
@@ -19,7 +19,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /** A tuple of a java classes jar and its associated source and interface archives. */
 @SkylarkModule(
@@ -64,10 +64,9 @@
   public FileT getSrcJar();
 
   @SkylarkCallable(
-    name = "source_jars",
-    doc = "A list of sources archive files.",
-    allowReturnNones = true,
-    structField = true
-  )
-  public SkylarkList<FileT> getSrcJarsSkylark();
+      name = "source_jars",
+      doc = "A list of sources archive files.",
+      allowReturnNones = true,
+      structField = true)
+  public Sequence<FileT> getSrcJarsSkylark();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/javascript/JsModuleInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/javascript/JsModuleInfoApi.java
index 2f1d3da..ddccfba 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/javascript/JsModuleInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/javascript/JsModuleInfoApi.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
 /** Info object propagating information about protocol buffer sources. */
@@ -95,7 +95,7 @@
               positional = false,
               named = true,
               defaultValue = "[]",
-              type = SkylarkList.class,
+              type = Sequence.class,
               generic1 = JsModuleInfoApi.class),
         },
         selfCall = true,
@@ -106,7 +106,7 @@
         String wrapper,
         Object fullPintoSources,
         Object directPintoSources,
-        SkylarkList<?> directModuleDependencies /* <? extends JsModuleApi> expected */)
+        Sequence<?> directModuleDependencies /* <? extends JsModuleApi> expected */)
         throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintCollectionApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintCollectionApi.java
index fe66df4..8c11e29 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintCollectionApi.java
@@ -19,8 +19,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.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkIndexable;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import javax.annotation.Nullable;
 
@@ -41,7 +41,7 @@
       doc = "The ConstraintSettingInfo values that this collection directly references.",
       structField = true,
       enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_PLATFORM_API)
-  SkylarkList<ConstraintSettingInfoT> constraintSettings();
+  Sequence<ConstraintSettingInfoT> constraintSettings();
 
   @SkylarkCallable(
       name = "get",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoRegistryProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoRegistryProviderApi.java
index 24b0533..e65decf 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoRegistryProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoRegistryProviderApi.java
@@ -20,7 +20,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /** Provides information about flavors for all built protos. */
 @SkylarkModule(
@@ -33,7 +33,7 @@
   NestedSet<FileT> getJars();
 
   @SkylarkCallable(name = "flavors", documented = false, doc = "", structField = true)
-  SkylarkList<String> getFlavors();
+  Sequence<String> getFlavors();
 
   @SkylarkCallable(
       name = "errorMessage",
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 1c00d66..b5a919e 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
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.syntax.BaseFunction;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /**
@@ -71,7 +71,7 @@
             positional = false),
         @Param(
             name = "environ",
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = String.class,
             defaultValue = "[]",
             doc =
@@ -103,7 +103,7 @@
       BaseFunction implementation,
       Object attrs,
       Boolean local,
-      SkylarkList<?> environ, // <String> expected
+      Sequence<?> environ, // <String> expected
       Boolean configure,
       String doc,
       FuncallExpression ast,
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 3f7e470..531492b 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
@@ -24,8 +24,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 
 /** Skylark API for the repository_rule's context. */
 @SkylarkModule(
@@ -235,7 +235,7 @@
       parameters = {
         @Param(
             name = "arguments",
-            type = SkylarkList.class,
+            type = Sequence.class,
             doc =
                 "List of arguments, the first element should be the path to the program to "
                     + "execute."),
@@ -267,7 +267,7 @@
                     + "Can be relative to the repository root or absolute."),
       })
   public SkylarkExecutionResultApi execute(
-      SkylarkList<?> arguments,
+      Sequence<?> arguments,
       Integer timeout,
       SkylarkDict<?, ?> environment, // <String, String> expected
       boolean quiet,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
index ab75787..5f2f1b3 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /** Helper functions for Starlark to access coverage-related infrastructure */
 @SkylarkModule(
@@ -50,7 +50,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "dependency_attributes",
             doc =
@@ -59,7 +59,7 @@
             positional = false,
             named = true,
             defaultValue = "[]",
-            type = SkylarkList.class),
+            type = Sequence.class),
         @Param(
             name = "extensions",
             doc =
@@ -71,13 +71,13 @@
             named = true,
             noneable = true,
             defaultValue = "None",
-            type = SkylarkList.class),
+            type = Sequence.class),
       },
       useLocation = true)
   public InstrumentedFilesInfoApi instrumentedFilesInfo(
       RuleContextT skylarkRuleContext,
-      SkylarkList<?> sourceAttributes, // <String> expected
-      SkylarkList<?> dependencyAttributes, // <String> expected
+      Sequence<?> sourceAttributes, // <String> expected
+      Sequence<?> dependencyAttributes, // <String> expected
       Object extensions,
       Location location)
       throws EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/Param.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/Param.java
index a129263..9f7598c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/Param.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/Param.java
@@ -50,8 +50,8 @@
   String defaultValue() default "";
 
   /**
-   * Type of the parameter, e.g. {@link String}.class or
-   * {@link com.google.devtools.build.lib.syntax.SkylarkList}.class.
+   * Type of the parameter, e.g. {@link String}.class or {@link
+   * com.google.devtools.build.lib.syntax.Sequence}.class.
    */
   Class<?> type() default Object.class;
 
@@ -63,10 +63,10 @@
   ParamType[] allowedTypes() default {};
 
   /**
-   * When {@link #type()} is a generic type (e.g.,
-   * {@link com.google.devtools.build.lib.syntax.SkylarkList}), specify the type parameter (e.g.
-   * {@link String}.class} along with {@link com.google.devtools.build.lib.syntax.SkylarkList} for
-   * {@link #type()} to specify a list of strings).
+   * When {@link #type()} is a generic type (e.g., {@link
+   * com.google.devtools.build.lib.syntax.Sequence}), specify the type parameter (e.g. {@link
+   * String}.class} along with {@link com.google.devtools.build.lib.syntax.Sequence} for {@link
+   * #type()} to specify a list of strings).
    *
    * <p>This is only used for documentation generation. The actual generic type is not checked at
    * runtime, so the Java method signature should use a generic type of Object and cast
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/ParamType.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/ParamType.java
index 7cf9e45..0912217 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/ParamType.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/ParamType.java
@@ -22,16 +22,16 @@
 @Retention(RetentionPolicy.RUNTIME)
 public @interface ParamType {
   /**
-   * The Java class of the type, e.g. {@link String}.class or
-   * {@link com.google.devtools.build.lib.syntax.SkylarkList}.class.
+   * The Java class of the type, e.g. {@link String}.class or {@link
+   * com.google.devtools.build.lib.syntax.Sequence}.class.
    */
   Class<?> type() default Object.class;
 
   /**
-   * When {@link #type()} is a generic type (e.g.,
-   * {@link com.google.devtools.build.lib.syntax.SkylarkList}), specify the type parameter (e.g.
-   * {@link String}.class} along with {@link com.google.devtools.build.lib.syntax.SkylarkList} for
-   * {@link #type()} to specify a list of strings).
+   * When {@link #type()} is a generic type (e.g., {@link
+   * com.google.devtools.build.lib.syntax.Sequence}), specify the type parameter (e.g. {@link
+   * String}.class} along with {@link com.google.devtools.build.lib.syntax.Sequence} for {@link
+   * #type()} to specify a list of strings).
    *
    * <p>This is only used for documentation generation. The actual generic type is not checked at
    * runtime, so the Java method signature should use a generic type of Object and cast
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 107612c..edc4849 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
@@ -47,8 +47,8 @@
  *   <li>The underlying java method's parameters must be supplied in the following order:
  *       <pre>method([positionals]*[named args]*(extra positionals list)(extra kwargs)
  *       (Location)(FuncallExpression)(StarlarkThread)(StarlarkSemantics))</pre>
- *       where (extra positionals list) is a SkylarkList if extraPositionals is defined, (extra
- *       kwargs) is a SkylarkDict if extraKeywords is defined, and Location, FuncallExpression,
+ *       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.
@@ -99,11 +99,11 @@
    *
    * <p>If this is left as default, it is an error for the caller to pass more positional arguments
    * than are explicitly allowed by the method signature. If this is defined, all additional
-   * positional arguments are passed as elements of a {@link SkylarkList} to the method.
+   * positional arguments are passed as elements of a {@link Sequence} to the method.
    *
    * <p>See python's <code>*args</code> (http://thepythonguru.com/python-args-and-kwargs/).
    *
-   * <p>(If this is defined, the annotated method signature must contain a corresponding SkylarkList
+   * <p>(If this is defined, the annotated method signature must contain a corresponding Sequence
    * parameter. See the interface-level javadoc for details.)
    */
   Param extraPositionals() default @Param(name = "");
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java
index 18009f6..bbc5606 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java
@@ -40,10 +40,10 @@
  * <p>Inheriting an annotation is useful when the class is an implementation detail, such as a
  * concrete implementation of an abstract interface. Overriding an annotation is useful when the
  * class should have its own distinct user-visible API or documentation. For example, {@link
- * SkylarkList} is an abstract type implemented by both {@link StarlarkList} and {@link
- * SkylarkList.Tuple}, all three of which are annotated. Annotating the list and tuple types allows
- * them to define different methods, while annotating {@link SkylarkList} allows them to be
- * identified as a single type for the purpose of type checking, documentation, and error messages.
+ * Sequence} is an abstract type implemented by both {@link StarlarkList} and {@link
+ * Sequence.Tuple}, all three of which are annotated. Annotating the list and tuple types allows
+ * them to define different methods, while annotating {@link Sequence} allows them to be identified
+ * as a single type for the purpose of type checking, documentation, and error messages.
  *
  * <p>All {@code @SkylarkModule}-annotated types must implement {@link SkylarkValue}. Nearly all
  * non-abstract implementations of {@link SkylarkValue} have or inherit a {@code @SkylarkModule}
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 48b7ea7..e3a08a7 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
@@ -93,7 +93,7 @@
   // that class (where "method name" is @SkylarkCallable.name").
   private SetMultimap<String, String> processedClassMethods;
 
-  private static final String SKYLARK_LIST = "com.google.devtools.build.lib.syntax.SkylarkList<?>";
+  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 LOCATION = "com.google.devtools.build.lib.events.Location";
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 217b953..ceede1f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BUILD
@@ -115,10 +115,10 @@
         "RangeList.java",
         "SelectorList.java",
         "SelectorValue.java",
+        "Sequence.java",
         "SkylarkClassObject.java",
         "SkylarkDict.java",
         "SkylarkIndexable.java",
-        "SkylarkList.java",
         "SkylarkNestedSet.java",
         "SkylarkQueryable.java",
         "SkylarkSignatureProcessor.java",
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 9c09635..f9d383e 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
@@ -568,8 +568,8 @@
 
           // TODO(adonovan): move the rest into a public EvalUtils.slice() operator.
 
-          if (object instanceof SkylarkList) {
-            return ((SkylarkList<?>) object).getSlice(start, end, step, loc, thread.mutability());
+          if (object instanceof Sequence) {
+            return ((Sequence<?>) object).getSlice(start, end, step, loc, thread.mutability());
           }
 
           if (object instanceof String) {
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 cf94230..2d4a739 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
@@ -61,7 +61,7 @@
    */
   public static final Ordering<Object> SKYLARK_COMPARATOR =
       new Ordering<Object>() {
-        private int compareLists(SkylarkList<?> o1, SkylarkList<?> o2) {
+        private int compareLists(Sequence<?> o1, Sequence<?> o2) {
           if (o1 instanceof RangeList || o2 instanceof RangeList) {
             throw new ComparisonException("Cannot compare range objects");
           }
@@ -91,10 +91,10 @@
           o1 = SkylarkType.convertToSkylark(o1, (StarlarkThread) null);
           o2 = SkylarkType.convertToSkylark(o2, (StarlarkThread) null);
 
-          if (o1 instanceof SkylarkList
-              && o2 instanceof SkylarkList
+          if (o1 instanceof Sequence
+              && o2 instanceof Sequence
               && o1 instanceof Tuple == o2 instanceof Tuple) {
-            return compareLists((SkylarkList) o1, (SkylarkList) o2);
+            return compareLists((Sequence) o1, (Sequence) o2);
           }
 
           if (o1 instanceof ClassObject) {
@@ -188,9 +188,8 @@
   /**
    * Return the Skylark-type of {@code c}
    *
-   * <p>The result will be a type that Skylark understands and is either equal to {@code c}
-   * or is a supertype of it. For example, all instances of (all subclasses of) SkylarkList
-   * are considered to be SkylarkLists.
+   * <p>The result will be a type that Skylark understands and is either equal to {@code c} or is a
+   * supertype of it.
    *
    * <p>Skylark's type validation isn't equipped to deal with inheritance so we must tell it which
    * of the superclasses or interfaces of {@code c} is the one that matters for type compatibility.
@@ -272,7 +271,7 @@
       return "int";
     } else if (c.equals(Boolean.class)) {
       return "bool";
-    } else if (List.class.isAssignableFrom(c)) { // This is a Java List that isn't a SkylarkList
+    } 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
       return "Map"; // This case shouldn't happen in normal code, but we keep it for debugging.
@@ -306,8 +305,8 @@
       throws EvalException {
     if (o instanceof Collection) {
       return (Collection<?>) o;
-    } else if (o instanceof SkylarkList) {
-      return ((SkylarkList) o).getImmutableList();
+    } else if (o instanceof Sequence) {
+      return ((Sequence) o).getImmutableList();
     } else if (o instanceof Map) {
       // For dictionaries we iterate through the keys only
       if (o instanceof SkylarkDict) {
@@ -611,10 +610,10 @@
 
         // TODO(bazel-team): Unify this check with the logic in getSkylarkType. Might
         // break some providers whose contents don't implement SkylarkValue, aren't wrapped in
-        // SkylarkList, etc.
+        // Sequence, etc.
         // TODO(adonovan): this is still far too permissive. Replace with isSkylarkAcceptable.
         if (result instanceof NestedSet
-            || (result instanceof List && !(result instanceof SkylarkList))) {
+            || (result instanceof List && !(result instanceof Sequence))) {
           throw new EvalException(
               loc,
               "internal error: type '"
@@ -854,9 +853,9 @@
       } else if (otherFactor instanceof String) {
         // Similar to Python, a factor < 1 leads to an empty string.
         return Strings.repeat((String) otherFactor, Math.max(0, number));
-      } else if (otherFactor instanceof SkylarkList && !(otherFactor instanceof RangeList)) {
+      } else if (otherFactor instanceof Sequence && !(otherFactor instanceof RangeList)) {
         // Similar to Python, a factor < 1 leads to an empty string.
-        return ((SkylarkList<?>) otherFactor).repeat(number, thread.mutability());
+        return ((Sequence<?>) otherFactor).repeat(number, thread.mutability());
       }
     }
     throw unknownBinaryOperator(x, y, TokenKind.STAR, location);
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 c257922..6fbdd6d 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
@@ -59,10 +59,10 @@
               + "<pre class=\"language-python\">min(2, 5, 4) == 2\n"
               + "min([5, 6, 3]) == 3</pre>",
       extraPositionals =
-          @Param(name = "args", type = SkylarkList.class, doc = "The elements to be checked."),
+          @Param(name = "args", type = Sequence.class, doc = "The elements to be checked."),
       useLocation = true,
       useStarlarkThread = true)
-  public Object min(SkylarkList<?> args, Location loc, StarlarkThread thread) throws EvalException {
+  public Object min(Sequence<?> args, Location loc, StarlarkThread thread) throws EvalException {
     try {
       return findExtreme(args, EvalUtils.SKYLARK_COMPARATOR.reverse(), loc, thread);
     } catch (ComparisonException e) {
@@ -79,10 +79,10 @@
               + "<pre class=\"language-python\">max(2, 5, 4) == 5\n"
               + "max([5, 6, 3]) == 6</pre>",
       extraPositionals =
-          @Param(name = "args", type = SkylarkList.class, doc = "The elements to be checked."),
+          @Param(name = "args", type = Sequence.class, doc = "The elements to be checked."),
       useLocation = true,
       useStarlarkThread = true)
-  public Object max(SkylarkList<?> args, Location loc, StarlarkThread thread) throws EvalException {
+  public Object max(Sequence<?> args, Location loc, StarlarkThread thread) throws EvalException {
     try {
       return findExtreme(args, EvalUtils.SKYLARK_COMPARATOR, loc, thread);
     } catch (ComparisonException e) {
@@ -92,7 +92,7 @@
 
   /** Returns the maximum element from this list, as determined by maxOrdering. */
   private static Object findExtreme(
-      SkylarkList<?> args, Ordering<Object> maxOrdering, Location loc, StarlarkThread thread)
+      Sequence<?> args, Ordering<Object> maxOrdering, Location loc, StarlarkThread thread)
       throws EvalException {
     // Args can either be a list of items to compare, or a singleton list whose element is an
     // iterable of items to compare. In either case, there must be at least one item to compare.
@@ -340,8 +340,8 @@
       return ((String) x).length();
     } else if (x instanceof Map) {
       return ((Map<?, ?>) x).size();
-    } else if (x instanceof SkylarkList) {
-      return ((SkylarkList<?>) x).size();
+    } else if (x instanceof Sequence) {
+      return ((Sequence<?>) x).size();
     } else if (x instanceof SkylarkNestedSet) {
       if (thread.getSemantics().incompatibleDepsetIsNotIterable()) {
         throw new EvalException(
@@ -637,7 +637,7 @@
   public StarlarkList<?> enumerate(Object input, Integer start, Location loc, StarlarkThread thread)
       throws EvalException {
     int count = start;
-    ArrayList<SkylarkList<?>> result = new ArrayList<>();
+    ArrayList<Sequence<?>> result = new ArrayList<>();
     for (Object obj : EvalUtils.toCollection(input, loc, thread)) {
       result.add(Tuple.of(count, obj));
       count++;
@@ -705,7 +705,7 @@
       },
       useLocation = true,
       useStarlarkThread = true)
-  public SkylarkList<Integer> range(
+  public Sequence<Integer> range(
       Integer startOrStop, Object stopOrNone, Integer step, Location loc, StarlarkThread thread)
       throws EvalException {
     int start;
@@ -883,7 +883,7 @@
       extraPositionals = @Param(name = "args", doc = "The objects to print."),
       useLocation = true,
       useStarlarkThread = true)
-  public NoneType print(String sep, SkylarkList<?> starargs, Location loc, StarlarkThread thread)
+  public NoneType print(String sep, Sequence<?> starargs, Location loc, StarlarkThread thread)
       throws EvalException {
     try {
       String msg = starargs.stream().map(Printer::debugPrint).collect(joining(sep));
@@ -993,7 +993,7 @@
             name = "transitive",
             named = true,
             positional = false,
-            type = SkylarkList.class,
+            type = Sequence.class,
             generic1 = SkylarkNestedSet.class,
             noneable = true,
             doc = "A list of depsets whose elements will become indirect elements of the depset.",
@@ -1076,8 +1076,8 @@
   private static <T> List<T> listFromNoneable(
       Object listOrNone, Class<T> objectType, String paramName) throws EvalException {
     if (listOrNone != Starlark.NONE) {
-      SkylarkType.checkType(listOrNone, SkylarkList.class, paramName);
-      return ((SkylarkList<?>) listOrNone).getContents(objectType, paramName);
+      SkylarkType.checkType(listOrNone, Sequence.class, paramName);
+      return ((Sequence<?>) listOrNone).getContents(objectType, paramName);
     } else {
       return ImmutableList.of();
     }
@@ -1100,18 +1100,17 @@
     // Non-legacy behavior: either 'transitive' or 'direct' were specified.
     Iterable<Object> directElements;
     if (direct != Starlark.NONE) {
-      SkylarkType.checkType(direct, SkylarkList.class, "direct");
-      directElements = ((SkylarkList<?>) direct).getContents(Object.class, "direct");
+      SkylarkType.checkType(direct, Sequence.class, "direct");
+      directElements = ((Sequence<?>) direct).getContents(Object.class, "direct");
     } else {
-      SkylarkType.checkType(items, SkylarkList.class, "items");
-      directElements = ((SkylarkList<?>) items).getContents(Object.class, "items");
+      SkylarkType.checkType(items, Sequence.class, "items");
+      directElements = ((Sequence<?>) items).getContents(Object.class, "items");
     }
 
     Iterable<SkylarkNestedSet> transitiveList;
     if (transitive != Starlark.NONE) {
-      SkylarkType.checkType(transitive, SkylarkList.class, "transitive");
-      transitiveList =
-          ((SkylarkList<?>) transitive).getContents(SkylarkNestedSet.class, "transitive");
+      SkylarkType.checkType(transitive, Sequence.class, "transitive");
+      transitiveList = ((Sequence<?>) transitive).getContents(SkylarkNestedSet.class, "transitive");
     } else {
       transitiveList = ImmutableList.of();
     }
@@ -1126,7 +1125,7 @@
   }
 
   private static boolean isEmptySkylarkList(Object o) {
-    return o instanceof SkylarkList && ((SkylarkList) o).isEmpty();
+    return o instanceof Sequence && ((Sequence) o).isEmpty();
   }
 
   /**
@@ -1187,7 +1186,7 @@
       extraPositionals = @Param(name = "args", doc = "lists to zip."),
       useLocation = true,
       useStarlarkThread = true)
-  public StarlarkList<?> zip(SkylarkList<?> args, Location loc, StarlarkThread thread)
+  public StarlarkList<?> zip(Sequence<?> args, Location loc, StarlarkThread thread)
       throws EvalException {
     Iterator<?>[] iterators = new Iterator<?>[args.size()];
     for (int i = 0; i < args.size(); i++) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/RangeList.java b/src/main/java/com/google/devtools/build/lib/syntax/RangeList.java
index 79cb476..921d5a7 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/RangeList.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/RangeList.java
@@ -51,7 +51,7 @@
             + "range(10)[::2]  # range(0, 10, 2)\n"
             + "range(10)[3:0:-1]  # range(3, 0, -1)</pre>"
             + "Ranges are immutable, as in Python 3.")
-final class RangeList extends SkylarkList<Integer> {
+final class RangeList extends Sequence<Integer> {
 
   private final int step;
   private final int start;
@@ -181,7 +181,7 @@
   }
 
   @Override
-  public SkylarkList<Integer> getSlice(
+  public Sequence<Integer> getSlice(
       Object start, Object end, Object step, Location loc, Mutability mutability)
       throws EvalException {
     Slice slice = Slice.from(size(), start, end, step, loc);
@@ -192,7 +192,7 @@
   }
 
   @Override
-  public SkylarkList<Integer> repeat(int times, Mutability mutability) {
+  public Sequence<Integer> repeat(int times, Mutability mutability) {
     throw new UnsupportedOperationException("Ranges do not support repetition.");
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/Sequence.java
similarity index 85%
rename from src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
rename to src/main/java/com/google/devtools/build/lib/syntax/Sequence.java
index 626ac16..03eb01f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Sequence.java
@@ -26,18 +26,17 @@
 import javax.annotation.Nullable;
 
 /**
- * A Skylark list or tuple.
+ * A Sequence is a finite sequence of Starlark values, such as a list or tuple.
  *
  * <p>Although this implements the {@link List} interface, it is not mutable via that interface's
  * methods. Instead, use the mutators that take in a {@link Mutability} object.
  */
-// TODO(adonovan): rename to Sequence.
 @SkylarkModule(
     name = "sequence",
     documented = false,
     category = SkylarkModuleCategory.BUILTIN,
     doc = "common type of lists and tuples.")
-public abstract class SkylarkList<E> extends BaseMutableList<E>
+public abstract class Sequence<E> extends BaseMutableList<E>
     implements List<E>, RandomAccess, SkylarkIndexable {
 
   @Override
@@ -45,13 +44,11 @@
     return !isEmpty();
   }
 
-  /**
-   * Returns an ImmutableList object with the current underlying contents of this SkylarkList.
-   */
+  /** Returns an ImmutableList object with the current underlying contents of this Sequence. */
   public abstract ImmutableList<E> getImmutableList();
 
   /**
-   * Retrieve an entry from a SkylarkList.
+   * Retrieve an entry from a Sequence.
    *
    * @param key the index
    * @param loc a {@link Location} in case of error
@@ -75,7 +72,7 @@
   }
 
   /**
-   * Constructs a version of this {@code SkylarkList} containing just the items in a slice.
+   * Constructs a version of this {@code Sequence} containing just the items in a slice.
    *
    * <p>{@code mutability} will be used for the resulting list. If it is null, the list will be
    * immutable. For {@code Tuple}s, which are always immutable, this argument is ignored.
@@ -83,17 +80,17 @@
    * @see EvalUtils#getSliceIndices
    * @throws EvalException if the key is invalid; uses {@code loc} for error reporting
    */
-  public abstract SkylarkList<E> getSlice(
+  public abstract Sequence<E> getSlice(
       Object start, Object end, Object step, Location loc, Mutability mutability)
       throws EvalException;
 
   /**
-   * Constructs a repetition of this {@code SkylarkList}.
+   * Constructs a repetition of this {@code Sequence}.
    *
    * <p>{@code mutability} will be used for the resulting list. If it is null, the list will be
    * immutable. For {@code Tuple}s, which are always immutable, this argument is ignored.
    */
-  public abstract SkylarkList<E> repeat(int times, Mutability mutability);
+  public abstract Sequence<E> repeat(int times, Mutability mutability);
 
   @Override
   public void repr(SkylarkPrinter printer) {
@@ -106,7 +103,7 @@
   }
 
   // Note that the following two functions slightly violate the Java List protocol,
-  // in that it does NOT consider that a SkylarkList .equals() an arbitrary List with same contents.
+  // in that it does NOT consider that a Sequence .equals() an arbitrary List with same contents.
   // This is because we use .equals() to model skylark equality, which like Python
   // distinguishes a StarlarkList from a Tuple.
   @Override
@@ -114,7 +111,7 @@
     return (this == object)
         || ((object != null)
             && (this.getClass() == object.getClass())
-            && getContentsUnsafe().equals(((SkylarkList) object).getContentsUnsafe()));
+            && getContentsUnsafe().equals(((Sequence) object).getContentsUnsafe()));
   }
 
   @Override
@@ -146,7 +143,7 @@
   }
 
   /**
-   * If {@code obj} is a {@code SkylarkList}, casts it to an unmodifiable {@code List<T>} after
+   * If {@code obj} is a {@code Sequence}, casts it to an unmodifiable {@code List<T>} after
    * checking that each element has type {@code type}. If {@code obj} is {@code None} or null,
    * treats it as an empty list. For all other values, throws an {@link EvalException}.
    *
@@ -157,13 +154,12 @@
    * @param description a description of the argument being converted, or null, for debugging
    */
   public static <T> List<T> castSkylarkListOrNoneToList(
-      Object obj, Class<T> type, @Nullable String description)
-      throws EvalException {
+      Object obj, Class<T> type, @Nullable String description) throws EvalException {
     if (EvalUtils.isNullOrNone(obj)) {
       return ImmutableList.of();
     }
-    if (obj instanceof SkylarkList) {
-      return ((SkylarkList<?>) obj).getContents(type, description);
+    if (obj instanceof Sequence) {
+      return ((Sequence<?>) obj).getContents(type, description);
     }
     throw new EvalException(null,
         String.format("Illegal argument: %s is not of expected type list or NoneType",
@@ -194,7 +190,7 @@
   // such a method, we may no longer need to take null as a possible value for the Mutability or
   // StarlarkThread. That in turn would allow us to overload StarlarkList#of to take either a
   // Mutability or StarlarkThread.
-  public static <E> SkylarkList<E> createImmutable(Iterable<? extends E> contents) {
+  public static <E> Sequence<E> createImmutable(Iterable<? extends E> contents) {
     return StarlarkList.copyOf(Mutability.IMMUTABLE, contents);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java
index 6d4bf82..1fca545 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkDict.java
@@ -74,7 +74,7 @@
 // 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 SkylarkList.
+// Ditto Sequence.
 public final class SkylarkDict<K, V> extends MutableMap<K, V>
     implements Map<K, V>, SkylarkIndexable {
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
index 96688e7..8b05f4d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
@@ -128,10 +128,10 @@
             contentType, nestedSet.contentType, /*lastInsertedType=*/ null, loc);
         transitiveItemsBuilder.add(nestedSet.set);
       }
-    } else if (item instanceof SkylarkList) {
+    } else if (item instanceof Sequence) {
       SkylarkType lastInsertedType = null;
       // TODO(bazel-team): we should check ImmutableList here but it screws up genrule at line 43
-      for (Object object : (SkylarkList) item) {
+      for (Object object : (Sequence) item) {
         SkylarkType elemType = SkylarkType.of(object);
         contentType = getTypeAfterInsert(contentType, elemType, lastInsertedType, loc);
         lastInsertedType = elemType;
@@ -162,7 +162,7 @@
 
   static SkylarkNestedSet of(Order order, Object item, Location loc) throws EvalException {
     // TODO(adonovan): rethink this API. TOP is a pessimistic type for item, and it's wrong
-    // (should be BOTTOM) if item is an empty SkylarkNestedSet or SkylarkList.
+    // (should be BOTTOM) if item is an empty SkylarkNestedSet or Sequence.
     return of(order, SkylarkType.TOP, item, loc, null);
   }
 
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 28de42e..43b3767 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
@@ -178,7 +178,7 @@
   // that doesn't make a difference between list and tuple, so that functions can be declared
   // that keep not making the difference. Going forward, though, we should investigate whether
   // we ever want to use this type, and if not, make sure no existing client code uses it.
-  @AutoCodec public static final Simple SEQUENCE = Simple.forClass(SkylarkList.class);
+  @AutoCodec public static final Simple SEQUENCE = Simple.forClass(Sequence.class);
 
   /** The LIST type, that contains all StarlarkList-s */
   @AutoCodec public static final Simple LIST = Simple.forClass(StarlarkList.class);
@@ -350,7 +350,7 @@
   public static class Combination extends SkylarkType {
     // For the moment, we can only combine a Simple type with a Simple type,
     // and the first one has to be a Java generic class,
-    // and in practice actually one of SkylarkList or SkylarkNestedSet
+    // and in practice actually one of Sequence or SkylarkNestedSet
     private final SkylarkType genericType; // actually always a Simple, for now.
     private final SkylarkType argType; // not always Simple
 
@@ -767,7 +767,7 @@
    * Converts an object to a Skylark-compatible type if possible.
    */
   public static Object convertToSkylark(Object object, @Nullable Mutability mutability) {
-    if (object instanceof List && !(object instanceof SkylarkList)) {
+    if (object instanceof List && !(object instanceof Sequence)) {
       return StarlarkList.copyOf(mutability, (List<?>) object);
     }
     if (object instanceof SkylarkValue) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkList.java
index 1764b54..ec6caaf 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkList.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkList.java
@@ -46,7 +46,7 @@
             + "['a', 'b', 'c', 'd'][::2]  # ['a', 'c']\n"
             + "['a', 'b', 'c', 'd'][3:0:-1]  # ['d', 'c', 'b']</pre>"
             + "Lists are mutable, as in Python.")
-public final class StarlarkList<E> extends SkylarkList<E> {
+public final class StarlarkList<E> extends Sequence<E> {
 
   private final ArrayList<E> contents;
 
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 5831753..4225ec0 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
@@ -766,7 +766,7 @@
             defaultValue = "False",
             doc = "Whether the line breaks should be included in the resulting list.")
       })
-  public SkylarkList<String> splitLines(String self, Boolean keepEnds) throws EvalException {
+  public Sequence<String> splitLines(String self, Boolean keepEnds) throws EvalException {
     List<String> result = new ArrayList<>();
     Matcher matcher = SPLIT_LINES_PATTERN.matcher(self);
     while (matcher.find()) {
@@ -782,7 +782,7 @@
         result.add(line);
       }
     }
-    return SkylarkList.createImmutable(result);
+    return Sequence.createImmutable(result);
   }
 
   @SkylarkCallable(
@@ -965,12 +965,12 @@
               + "Equivalent to <code>[s[i] for i in range(len(s))]</code>, except that the "
               + "returned value might not be a list.",
       parameters = {@Param(name = "self", type = String.class, doc = "This string.")})
-  public SkylarkList<String> elems(String self) throws EvalException {
+  public Sequence<String> elems(String self) throws EvalException {
     ImmutableList.Builder<String> builder = new ImmutableList.Builder<>();
     for (char c : self.toCharArray()) {
       builder.add(String.valueOf(c));
     }
-    return SkylarkList.createImmutable(builder.build());
+    return Sequence.createImmutable(builder.build());
   }
 
   @SkylarkCallable(
@@ -1048,7 +1048,7 @@
       extraPositionals =
           @Param(
               name = "args",
-              type = SkylarkList.class,
+              type = Sequence.class,
               defaultValue = "()",
               doc = "List of arguments."),
       extraKeywords =
@@ -1058,7 +1058,7 @@
               defaultValue = "{}",
               doc = "Dictionary of arguments."),
       useLocation = true)
-  public String format(String self, SkylarkList<?> args, SkylarkDict<?, ?> kwargs, Location loc)
+  public String format(String self, Sequence<?> args, SkylarkDict<?, ?> kwargs, Location loc)
       throws EvalException {
     @SuppressWarnings("unchecked")
     List<Object> argObjects = (List<Object>) args.getImmutableList();
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Tuple.java b/src/main/java/com/google/devtools/build/lib/syntax/Tuple.java
index 91f5b855..9067066 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Tuple.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Tuple.java
@@ -41,7 +41,7 @@
             + "('a', 'b', 'c', 'd')[::2]  # ('a', 'c')\n"
             + "('a', 'b', 'c', 'd')[3:0:-1]  # ('d', 'c', 'b')</pre>"
             + "Tuples are immutable, therefore <code>x[1] = \"a\"</code> is not supported.")
-public final class Tuple<E> extends SkylarkList<E> {
+public final class Tuple<E> extends Sequence<E> {
 
     private final ImmutableList<E> contents;
 
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
index 25c79b5..71cbb58 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
@@ -20,8 +20,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.AttributeType;
 import java.util.ArrayList;
@@ -39,7 +39,7 @@
       Integer defaultInt,
       String doc,
       Boolean mandatory,
-      SkylarkList<?> values,
+      Sequence<?> values,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -51,7 +51,7 @@
       String defaultString,
       String doc,
       Boolean mandatory,
-      SkylarkList<?> values,
+      Sequence<?> values,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -71,11 +71,11 @@
       Object allowFiles,
       Object allowSingleFile,
       Boolean mandatory,
-      SkylarkList<?> providers,
+      Sequence<?> providers,
       Object allowRules,
       Boolean singleFile,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -91,7 +91,7 @@
       Boolean mandatory,
       Boolean nonEmpty,
       Boolean allowEmpty,
-      SkylarkList<?> defaultList,
+      Sequence<?> defaultList,
       String doc,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -105,7 +105,7 @@
       Boolean mandatory,
       Boolean nonEmpty,
       Boolean allowEmpty,
-      SkylarkList<?> defaultList,
+      Sequence<?> defaultList,
       String doc,
       FuncallExpression ast,
       StarlarkThread thread)
@@ -121,12 +121,12 @@
       String doc,
       Object allowFiles,
       Object allowRules,
-      SkylarkList<?> providers,
-      SkylarkList<?> flags,
+      Sequence<?> providers,
+      Sequence<?> flags,
       Boolean mandatory,
       Boolean nonEmpty,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -144,12 +144,12 @@
       String doc,
       Object allowFiles,
       Object allowRules,
-      SkylarkList<?> providers,
-      SkylarkList<?> flags,
+      Sequence<?> providers,
+      Sequence<?> flags,
       Boolean mandatory,
       Boolean nonEmpty,
       Object cfg,
-      SkylarkList<?> aspects,
+      Sequence<?> aspects,
       FuncallExpression ast,
       StarlarkThread thread)
       throws EvalException {
@@ -243,13 +243,13 @@
    * each of the inner lists is a separate group.
    */
   private static List<List<String>> allProviderNameGroups(
-      SkylarkList<?> providers, StarlarkThread thread) {
+      Sequence<?> providers, StarlarkThread thread) {
 
     List<List<String>> allNameGroups = new ArrayList<>();
     for (Object object : providers) {
       List<String> providerNameGroup;
-      if (object instanceof SkylarkList) {
-        SkylarkList<?> group = (SkylarkList<?>) object;
+      if (object instanceof Sequence) {
+        Sequence<?> group = (Sequence<?>) object;
         providerNameGroup = parseProviderGroup(group, thread);
         allNameGroups.add(providerNameGroup);
       } else {
@@ -267,7 +267,7 @@
    * <p>Each item in the group may be either a {@link ProviderApi} or a {@code String} (representing
    * a legacy provider).
    */
-  private static List<String> parseProviderGroup(SkylarkList<?> group, StarlarkThread thread) {
+  private static List<String> parseProviderGroup(Sequence<?> group, StarlarkThread thread) {
     List<String> providerNameGroup = new ArrayList<>();
     for (Object object : group) {
       if (object instanceof ProviderApi) {
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java
index 25eca0f..32554bf 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java
@@ -21,8 +21,8 @@
 import com.google.devtools.build.lib.syntax.ClassObject;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import javax.annotation.Nullable;
@@ -31,9 +31,9 @@
 public class FakeSkylarkNativeModuleApi implements SkylarkNativeModuleApi, ClassObject {
 
   @Override
-  public SkylarkList<?> glob(
-      SkylarkList<?> include,
-      SkylarkList<?> exclude,
+  public Sequence<?> glob(
+      Sequence<?> include,
+      Sequence<?> exclude,
       Integer excludeDirectories,
       Object allowEmpty,
       Location loc,
@@ -56,18 +56,14 @@
 
   @Override
   public NoneType packageGroup(
-      String name,
-      SkylarkList<?> packages,
-      SkylarkList<?> includes,
-      Location loc,
-      StarlarkThread thread)
+      String name, Sequence<?> packages, Sequence<?> includes, Location loc, StarlarkThread thread)
       throws EvalException {
     return null;
   }
 
   @Override
   public NoneType exportsFiles(
-      SkylarkList<?> srcs, Object visibility, Object licenses, Location loc, StarlarkThread thread)
+      Sequence<?> srcs, Object visibility, Object licenses, Location loc, StarlarkThread thread)
       throws EvalException {
     return null;
   }
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
index 33fbff7..6dc554e 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
@@ -27,8 +27,8 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.FunctionSignature;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkType;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkFunction;
@@ -90,13 +90,16 @@
     FakeProviderApi fakeProvider = new FakeProviderApi();
     // Field documentation will be output preserving the order in which the fields are listed.
     ImmutableList.Builder<ProviderFieldInfo> providerFieldInfos = ImmutableList.builder();
-    if (fields instanceof SkylarkList) {
+    if (fields instanceof Sequence) {
       @SuppressWarnings("unchecked")
-      SkylarkList<String> fieldNames = (SkylarkList<String>)
-          SkylarkType.cast(
-              fields,
-              SkylarkList.class, String.class, location,
-              "Expected list of strings or dictionary of string -> string for 'fields'");
+      Sequence<String> fieldNames =
+          (Sequence<String>)
+              SkylarkType.cast(
+                  fields,
+                  Sequence.class,
+                  String.class,
+                  location,
+                  "Expected list of strings or dictionary of string -> string for 'fields'");
       for (String fieldName : fieldNames) {
         providerFieldInfos.add(asProviderFieldInfo(fieldName, "(Undocumented)"));
       }
@@ -134,13 +137,13 @@
       Object implicitOutputs,
       Boolean executable,
       Boolean outputToGenfiles,
-      SkylarkList<?> fragments,
-      SkylarkList<?> hostFragments,
+      Sequence<?> fragments,
+      Sequence<?> hostFragments,
       Boolean skylarkTestable,
-      SkylarkList<?> toolchains,
+      Sequence<?> toolchains,
       String doc,
-      SkylarkList<?> providesArg,
-      SkylarkList<?> execCompatibleWith,
+      Sequence<?> providesArg,
+      Sequence<?> execCompatibleWith,
       Object analysisTest,
       Object buildSetting,
       Object cfg,
@@ -188,13 +191,13 @@
   @Override
   public SkylarkAspectApi aspect(
       StarlarkFunction implementation,
-      SkylarkList<?> attributeAspects,
+      Sequence<?> attributeAspects,
       Object attrs,
-      SkylarkList<?> requiredAspectProvidersArg,
-      SkylarkList<?> providesArg,
-      SkylarkList<?> fragments,
-      SkylarkList<?> hostFragments,
-      SkylarkList<?> toolchains,
+      Sequence<?> requiredAspectProvidersArg,
+      Sequence<?> providesArg,
+      Sequence<?> fragments,
+      Sequence<?> hostFragments,
+      Sequence<?> toolchains,
       String doc,
       Boolean applyToFiles,
       FuncallExpression ast,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
index 6858e68..87d706c 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
@@ -23,7 +23,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /** Fake implementation of {@link AndroidResourcesInfoApi}. */
@@ -190,7 +190,7 @@
     }
 
     @Override
-    public SkylarkList<FileApi> getResourcesList() {
+    public Sequence<FileApi> getResourcesList() {
       return null;
     }
   }
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
index f3702c1..cd1b0ba 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
@@ -29,8 +29,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.apple.DottedVersionApi;
 import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.apple.XcodeConfigProviderApi;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
 import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkAspect;
@@ -120,8 +120,8 @@
   @Override
   public StructApi linkMultiArchBinary(
       SkylarkRuleContextApi skylarkRuleContext,
-      SkylarkList<?> extraLinkopts,
-      SkylarkList<?> extraLinkInputs,
+      Sequence<?> extraLinkopts,
+      Sequence<?> extraLinkInputs,
       StarlarkThread thread) {
     return new FakeStructApi();
   }
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java
index f645635..1a5f330 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java
@@ -18,7 +18,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /**
@@ -57,7 +57,7 @@
   }
 
   @Override
-  public SkylarkList<FileApi> directHeaders() {
+  public Sequence<FileApi> directHeaders() {
     return null;
   }
 
@@ -127,7 +127,7 @@
   }
 
   @Override
-  public SkylarkList<FileApi> directModuleMaps() {
+  public Sequence<FileApi> directModuleMaps() {
     return null;
   }
 
@@ -162,7 +162,7 @@
   }
 
   @Override
-  public SkylarkList<FileApi> directSources() {
+  public Sequence<FileApi> directSources() {
     return null;
   }
 
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java
index fd422f3..28c7506 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java
@@ -18,8 +18,8 @@
 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.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -31,8 +31,8 @@
   @Override
   public ConfigurationTransitionApi transition(
       BaseFunction implementation,
-      SkylarkList<?> inputs,
-      SkylarkList<?> outputs,
+      Sequence<?> inputs,
+      Sequence<?> outputs,
       Location location,
       StarlarkThread thread) {
     return new FakeConfigurationTransition();
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
index 8604ea9..537065b 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
@@ -35,8 +35,8 @@
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkerInputApi;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.lib.syntax.Tuple;
 import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
@@ -67,8 +67,8 @@
   public FeatureConfigurationApi configureFeatures(
       Object ruleContextOrNone,
       CcToolchainProviderApi<FeatureConfigurationApi> toolchain,
-      SkylarkList<?> requestedFeatures,
-      SkylarkList<?> unsupportedFeatures)
+      Sequence<?> requestedFeatures,
+      Sequence<?> unsupportedFeatures)
       throws EvalException {
     return null;
   }
@@ -79,9 +79,9 @@
   }
 
   @Override
-  public SkylarkList<String> getExecutionRequirements(
+  public Sequence<String> getExecutionRequirements(
       FeatureConfigurationApi featureConfiguration, String actionName) {
-    return SkylarkList.createImmutable(ImmutableList.of());
+    return Sequence.createImmutable(ImmutableList.of());
   }
 
   @Override
@@ -95,8 +95,10 @@
   }
 
   @Override
-  public SkylarkList<String> getCommandLine(FeatureConfigurationApi featureConfiguration,
-      String actionName, CcToolchainVariablesApi variables) {
+  public Sequence<String> getCommandLine(
+      FeatureConfigurationApi featureConfiguration,
+      String actionName,
+      CcToolchainVariablesApi variables) {
     return null;
   }
 
@@ -178,7 +180,7 @@
   }
 
   @Override
-  public CcInfoApi mergeCcInfos(SkylarkList<?> ccInfos) {
+  public CcInfoApi mergeCcInfos(Sequence<?> ccInfos) {
     return null;
   }
 
@@ -210,21 +212,21 @@
       SkylarkActionFactoryApi skylarkActionFactoryApi,
       FeatureConfigurationApi skylarkFeatureConfiguration,
       CcToolchainProviderApi<FeatureConfigurationApi> skylarkCcToolchainProvider,
-      SkylarkList<?> sources,
-      SkylarkList<?> publicHeaders,
-      SkylarkList<?> privateHeaders,
-      SkylarkList<?> includes,
-      SkylarkList<?> quoteIncludes,
-      SkylarkList<?> defines,
-      SkylarkList<?> localDefines,
-      SkylarkList<?> systemIncludes,
-      SkylarkList<?> frameworkIncludes,
-      SkylarkList<?> userCompileFlags,
-      SkylarkList<?> ccCompilationContexts,
+      Sequence<?> sources,
+      Sequence<?> publicHeaders,
+      Sequence<?> privateHeaders,
+      Sequence<?> includes,
+      Sequence<?> quoteIncludes,
+      Sequence<?> defines,
+      Sequence<?> localDefines,
+      Sequence<?> systemIncludes,
+      Sequence<?> frameworkIncludes,
+      Sequence<?> userCompileFlags,
+      Sequence<?> ccCompilationContexts,
       String name,
       boolean disallowPicOutputs,
       boolean disallowNopicOutputs,
-      SkylarkList<?> additionalInputs,
+      Sequence<?> additionalInputs,
       Location location,
       StarlarkThread thread)
       throws EvalException, InterruptedException {
@@ -237,12 +239,12 @@
       FeatureConfigurationApi skylarkFeatureConfiguration,
       CcToolchainProviderApi<FeatureConfigurationApi> skylarkCcToolchainProvider,
       CcCompilationOutputsApi<FileApi> compilationOutputs,
-      SkylarkList<?> userLinkFlags,
-      SkylarkList<?> ccLinkingContextApis,
+      Sequence<?> userLinkFlags,
+      Sequence<?> ccLinkingContextApis,
       String name,
       String language,
       boolean alwayslink,
-      SkylarkList<?> nonCodeInputs,
+      Sequence<?> nonCodeInputs,
       boolean disallowStaticLibraries,
       boolean disallowDynamicLibraries,
       Object grepIncludes,
@@ -258,13 +260,13 @@
       FeatureConfigurationApi skylarkFeatureConfiguration,
       CcToolchainProviderApi<FeatureConfigurationApi> skylarkCcToolchainProvider,
       Object compilationOutputs,
-      SkylarkList<?> userLinkFlags,
-      SkylarkList<?> linkingContexts,
+      Sequence<?> userLinkFlags,
+      Sequence<?> linkingContexts,
       String name,
       String language,
       String outputType,
       boolean linkDepsStatically,
-      SkylarkList<?> additionalInputs,
+      Sequence<?> additionalInputs,
       Object grepIncludes,
       Location location,
       StarlarkThread thread)
@@ -275,10 +277,10 @@
   @Override
   public CcToolchainConfigInfoApi ccToolchainConfigInfoFromSkylark(
       SkylarkRuleContextApi skylarkRuleContext,
-      SkylarkList<?> features,
-      SkylarkList<?> actionConfigs,
-      SkylarkList<?> artifactNamePatterns,
-      SkylarkList<?> cxxBuiltInIncludeDirectories,
+      Sequence<?> features,
+      Sequence<?> actionConfigs,
+      Sequence<?> artifactNamePatterns,
+      Sequence<?> cxxBuiltInIncludeDirectories,
       String toolchainIdentifier,
       String hostSystemName,
       String targetSystemName,
@@ -287,8 +289,8 @@
       String compiler,
       String abiVersion,
       String abiLibcVersion,
-      SkylarkList<?> toolPaths,
-      SkylarkList<?> makeVariables,
+      Sequence<?> toolPaths,
+      Sequence<?> makeVariables,
       Object builtinSysroot,
       Object ccTargetOs)
       throws EvalException {
@@ -303,7 +305,7 @@
 
   @Override
   public CcCompilationOutputsApi<FileApi> mergeCcCompilationOutputsFromSkylark(
-      SkylarkList<?> compilationOutputs) {
+      Sequence<?> compilationOutputs) {
     return null;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
index a140c5d..422c0dd 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoConfigurationApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoContextInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoPackageInfoApi;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Tuple;
 
@@ -89,8 +89,8 @@
   public Tuple<FileApi> createGoCompileActions(
       SkylarkRuleContextApi skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
-      SkylarkList<?> srcs,
-      SkylarkList<?> deps) {
+      Sequence<?> srcs,
+      Sequence<?> deps) {
     return null;
   }
 
@@ -98,8 +98,8 @@
   public Tuple<FileApi> createGoCompileActionsGopkg(
       SkylarkRuleContextApi skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
-      SkylarkList<?> srcs,
-      SkylarkList<?> deps) {
+      Sequence<?> srcs,
+      Sequence<?> deps) {
     return null;
   }
 
@@ -138,8 +138,8 @@
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
       FileApi ccFile,
       FileApi headerFile,
-      SkylarkList<?> depCcCompilationContexts,
-      SkylarkList<?> targetCopts) {
+      Sequence<?> depCcCompilationContexts,
+      Sequence<?> targetCopts) {
     return null;
   }
 
@@ -162,10 +162,10 @@
       CcCompilationContextApi wrapperCcCompilationContext,
       SkylarkNestedSet swigIncludes,
       FileApi swigSource,
-      SkylarkList<?> subParameters,
+      Sequence<?> subParameters,
       FileApi ccFile,
       FileApi headerFile,
-      SkylarkList<?> outputFiles,
+      Sequence<?> outputFiles,
       Object outDir,
       Object javaDir,
       SkylarkNestedSet auxiliaryInputs,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
index 2335d76..5f74293 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyWrapCcHelperApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyWrapCcInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.WrapCcIncludeProviderApi;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /** Fake implementation of {@link PyWrapCcHelperApi}. */
@@ -41,7 +41,7 @@
         WrapCcIncludeProviderApi> {
 
   @Override
-  public SkylarkList<String> getPyExtensionLinkopts(SkylarkRuleContextApi skylarkRuleContext) {
+  public Sequence<String> getPyExtensionLinkopts(SkylarkRuleContextApi skylarkRuleContext) {
     return null;
   }
 
@@ -95,10 +95,10 @@
       CcCompilationContextApi wrapperCcCompilationContext,
       SkylarkNestedSet swigIncludes,
       FileApi swigSource,
-      SkylarkList<?> subParameters,
+      Sequence<?> subParameters,
       FileApi ccFile,
       FileApi headerFile,
-      SkylarkList<?> outputFiles,
+      Sequence<?> outputFiles,
       Object outDir,
       Object javaDir,
       SkylarkNestedSet auxiliaryInputs,
@@ -112,8 +112,8 @@
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
       FileApi ccFile,
       FileApi headerFile,
-      SkylarkList<?> depCcCompilationContexts,
-      SkylarkList<?> targetCopts) {
+      Sequence<?> depCcCompilationContexts,
+      Sequence<?> targetCopts) {
     return null;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
index 7ad40e0..3bdab61 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCommonApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaToolchainSkylarkApiProviderApi;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -48,22 +48,22 @@
   @Override
   public FakeJavaInfo createJavaCompileAction(
       SkylarkRuleContextApi skylarkRuleContext,
-      SkylarkList<?> sourceJars,
-      SkylarkList<?> sourceFiles,
+      Sequence<?> sourceJars,
+      Sequence<?> sourceFiles,
       FileApi outputJar,
       Object outputSourceJar,
-      SkylarkList<?> javacOpts,
-      SkylarkList<?> deps,
-      SkylarkList<?> exports,
-      SkylarkList<?> plugins,
-      SkylarkList<?> exportedPlugins,
-      SkylarkList<?> annotationProcessorAdditionalInputs,
-      SkylarkList<?> annotationProcessorAdditionalOutputs,
+      Sequence<?> javacOpts,
+      Sequence<?> deps,
+      Sequence<?> exports,
+      Sequence<?> plugins,
+      Sequence<?> exportedPlugins,
+      Sequence<?> annotationProcessorAdditionalInputs,
+      Sequence<?> annotationProcessorAdditionalOutputs,
       String strictDepsMode,
       FakeJavaToolchainSkylarkApiProviderApi javaToolchain,
       FakeJavaRuntimeInfoApi hostJavabase,
-      SkylarkList<?> sourcepathEntries,
-      SkylarkList<?> resources,
+      Sequence<?> sourcepathEntries,
+      Sequence<?> resources,
       Boolean neverlink,
       Location loc,
       StarlarkThread thread)
@@ -99,8 +99,8 @@
   public FileApi packSources(
       SkylarkActionFactoryApi actions,
       FileApi outputJar,
-      SkylarkList<?> sourceFiles,
-      SkylarkList<?> sourceJars,
+      Sequence<?> sourceFiles,
+      Sequence<?> sourceJars,
       FakeJavaToolchainSkylarkApiProviderApi javaToolchain,
       FakeJavaRuntimeInfoApi hostJavabase,
       Location location,
@@ -116,7 +116,7 @@
   }
 
   @Override
-  public FakeJavaInfo mergeJavaProviders(SkylarkList<?> providers) {
+  public FakeJavaInfo mergeJavaProviders(Sequence<?> providers) {
     return new FakeJavaInfo();
   }
 
@@ -146,7 +146,7 @@
   }
 
   @Override
-  public FakeJavaInfo addConstraints(FakeJavaInfo javaInfo, SkylarkList<?> constraints) {
+  public FakeJavaInfo addConstraints(FakeJavaInfo javaInfo, Sequence<?> constraints) {
     return new FakeJavaInfo();
   }
 
@@ -163,7 +163,7 @@
 
   @Override
   public FakeJavaInfo addCompileTimeJavaDependencyArtifacts(
-      FakeJavaInfo javaInfo, SkylarkList<?> compileTimeJavaDependencyArtifacts) {
+      FakeJavaInfo javaInfo, Sequence<?> compileTimeJavaDependencyArtifacts) {
     return new FakeJavaInfo();
   }
 
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
index 2b5df40..70f6f0e 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuleOutputJarsProviderApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -52,7 +52,7 @@
   }
 
   @Override
-  public SkylarkList<FileApi> getSourceJars() {
+  public Sequence<FileApi> getSourceJars() {
     return null;
   }
 
@@ -72,7 +72,7 @@
   }
 
   @Override
-  public SkylarkList<FileApi> getRuntimeOutputJars() {
+  public Sequence<FileApi> getRuntimeOutputJars() {
     return null;
   }
 
@@ -120,9 +120,9 @@
         Object compileJarApi,
         Object sourceJarApi,
         Boolean neverlink,
-        SkylarkList<?> deps,
-        SkylarkList<?> runtimeDeps,
-        SkylarkList<?> exports,
+        Sequence<?> deps,
+        Sequence<?> runtimeDeps,
+        Sequence<?> exports,
         Object jdepsApi,
         Location loc,
         StarlarkThread thread)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java
index cf65129..3f841f6 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java
@@ -19,7 +19,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaToolchainSkylarkApiProviderApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 final class FakeJavaToolchainSkylarkApiProviderApi implements JavaToolchainSkylarkApiProviderApi {
@@ -50,7 +50,7 @@
   }
 
   @Override
-  public SkylarkList<String> getSkylarkJvmOptions() {
+  public Sequence<String> getSkylarkJvmOptions() {
     return null;
   }
 
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
index 0757adc..4c28900 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
@@ -22,8 +22,8 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.FunctionSignature;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 import com.google.devtools.build.skydoc.fakebuildapi.FakeDescriptor;
@@ -54,7 +54,7 @@
       BaseFunction implementation,
       Object attrs,
       Boolean local,
-      SkylarkList<?> environ, // <String> expected
+      Sequence<?> environ, // <String> expected
       Boolean configure,
       String doc,
       FuncallExpression ast,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
index a1cb8bd..e09fd19 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
@@ -19,7 +19,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.test.CoverageCommonApi;
 import com.google.devtools.build.lib.skylarkbuildapi.test.InstrumentedFilesInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /** Fake implementation of {@link CoverageCommonApi}. */
 public class FakeCoverageCommon implements CoverageCommonApi<SkylarkRuleContextApi> {
@@ -27,8 +27,8 @@
   @Override
   public InstrumentedFilesInfoApi instrumentedFilesInfo(
       SkylarkRuleContextApi skylarkRuleContext,
-      SkylarkList<?> sourceAttributes,
-      SkylarkList<?> dependencyAttributes,
+      Sequence<?> sourceAttributes,
+      Sequence<?> dependencyAttributes,
       Object extensions,
       Location location) {
     return null;
diff --git a/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java b/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java
index 4341cd0..d943a5e 100644
--- a/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java
+++ b/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java
@@ -27,8 +27,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkList;
 import com.google.devtools.build.lib.syntax.Tuple;
@@ -142,17 +142,16 @@
   @SkylarkModule(name = "MockClassF", doc = "MockClassF")
   private static class MockClassF implements SkylarkValue {
     @SkylarkCallable(
-      name = "test",
-      doc = "MockClassF#test",
-      parameters = {
-        @Param(name = "a", named = false, positional = true),
-        @Param(name = "b", named = true, positional = true),
-        @Param(name = "c", named = true, positional = false),
-        @Param(name = "d", named = true, positional = false, defaultValue = "1"),
-      },
-      extraPositionals = @Param(name = "myArgs")
-    )
-    public Integer test(int a, int b, int c, int d, SkylarkList<?> args) {
+        name = "test",
+        doc = "MockClassF#test",
+        parameters = {
+          @Param(name = "a", named = false, positional = true),
+          @Param(name = "b", named = true, positional = true),
+          @Param(name = "c", named = true, positional = false),
+          @Param(name = "d", named = true, positional = false, defaultValue = "1"),
+        },
+        extraPositionals = @Param(name = "myArgs"))
+    public Integer test(int a, int b, int c, int d, Sequence<?> args) {
       return 0;
     }
   }
@@ -180,18 +179,17 @@
   @SkylarkModule(name = "MockClassH", doc = "MockClassH")
   private static class MockClassH implements SkylarkValue {
     @SkylarkCallable(
-      name = "test",
-      doc = "MockClassH#test",
-      parameters = {
-        @Param(name = "a", named = false, positional = true),
-        @Param(name = "b", named = true, positional = true),
-        @Param(name = "c", named = true, positional = false),
-        @Param(name = "d", named = true, positional = false, defaultValue = "1"),
-      },
-      extraPositionals = @Param(name = "myArgs"),
-      extraKeywords = @Param(name = "myKwargs")
-    )
-    public Integer test(int a, int b, int c, int d, SkylarkList<?> args, SkylarkDict<?, ?> kwargs) {
+        name = "test",
+        doc = "MockClassH#test",
+        parameters = {
+          @Param(name = "a", named = false, positional = true),
+          @Param(name = "b", named = true, positional = true),
+          @Param(name = "c", named = true, positional = false),
+          @Param(name = "d", named = true, positional = false, defaultValue = "1"),
+        },
+        extraPositionals = @Param(name = "myArgs"),
+        extraKeywords = @Param(name = "myKwargs"))
+    public Integer test(int a, int b, int c, int d, Sequence<?> args, SkylarkDict<?, ?> kwargs) {
       return 0;
     }
   }
@@ -208,15 +206,14 @@
         name = "MockGlobalCallable",
         doc = "GlobalCallable documentation",
         parameters = {
-            @Param(name = "a", named = false, positional = true),
-            @Param(name = "b", named = true, positional = true),
-            @Param(name = "c", named = true, positional = false),
-            @Param(name = "d", named = true, positional = false, defaultValue = "1"),
+          @Param(name = "a", named = false, positional = true),
+          @Param(name = "b", named = true, positional = true),
+          @Param(name = "c", named = true, positional = false),
+          @Param(name = "d", named = true, positional = false, defaultValue = "1"),
         },
         extraPositionals = @Param(name = "myArgs"),
-        extraKeywords = @Param(name = "myKwargs")
-    )
-    public Integer test(int a, int b, int c, int d, SkylarkList<?> args, SkylarkDict<?, ?> kwargs) {
+        extraKeywords = @Param(name = "myKwargs"))
+    public Integer test(int a, int b, int c, int d, Sequence<?> args, SkylarkDict<?, ?> kwargs) {
       return 0;
     }
   }
@@ -248,7 +245,7 @@
     }
 
     @SkylarkCallable(name = "skylark", doc = "skylark")
-    public SkylarkList<Integer> getSkylarkList() {
+    public Sequence<Integer> getSkylarkList() {
       return null;
     }
   }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index fa2cddc..eb72b8a 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -52,8 +52,8 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.StringValueParser;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkList;
@@ -271,8 +271,8 @@
 
     ConfiguredTarget r = getConfiguredTarget("//a:r");
     @SuppressWarnings("unchecked")
-    SkylarkList<String> requirements =
-        (SkylarkList<String>) getMyInfoFromTarget(r).getValue("requirements");
+    Sequence<String> requirements =
+        (Sequence<String>) getMyInfoFromTarget(r).getValue("requirements");
     assertThat(requirements).containsExactly("requires-yolo");
   }
 
@@ -386,8 +386,8 @@
 
     ConfiguredTarget r = getConfiguredTarget("//a:r");
     @SuppressWarnings("unchecked")
-    SkylarkList<String> commandLine =
-        (SkylarkList<String>) getMyInfoFromTarget(r).getValue("command_line");
+    Sequence<String> commandLine =
+        (Sequence<String>) getMyInfoFromTarget(r).getValue("command_line");
     RuleContext ruleContext = getRuleContext(r);
     CcToolchainProvider toolchain =
         CppHelper.getToolchain(
@@ -987,7 +987,7 @@
         .doesNotContain("-i_dont_want_to_see_this_on_archiver_command_line");
   }
 
-  private SkylarkList<String> commandLineForVariables(String actionName, String... variables)
+  private Sequence<String> commandLineForVariables(String actionName, String... variables)
       throws Exception {
     return commandLineForVariables(actionName, 0, variables);
   }
@@ -995,7 +995,7 @@
   // This method is only there to change the package to fix multiple runs of this method in a single
   // test.
   // TODO(b/109917616): Remove pkgSuffix argument when bzl files are not cached within single test
-  private SkylarkList<String> commandLineForVariables(
+  private Sequence<String> commandLineForVariables(
       String actionName, int pkgSuffix, String... variables) throws Exception {
     scratch.file(
         "a" + pkgSuffix + "/BUILD",
@@ -1033,8 +1033,7 @@
       return null;
     }
     @SuppressWarnings("unchecked")
-    SkylarkList<String> result =
-        (SkylarkList<String>) getMyInfoFromTarget(r).getValue("command_line");
+    Sequence<String> result = (Sequence<String>) getMyInfoFromTarget(r).getValue("command_line");
     return result;
   }
 
@@ -1336,8 +1335,8 @@
 
     StructImpl info = ((StructImpl) getMyInfoFromTarget(a).getValue("info"));
     @SuppressWarnings("unchecked")
-    SkylarkList<String> userLinkFlags =
-        (SkylarkList<String>) info.getValue("user_link_flags", SkylarkList.class);
+    Sequence<String> userLinkFlags =
+        (Sequence<String>) info.getValue("user_link_flags", Sequence.class);
     assertThat(userLinkFlags.getImmutableList())
         .containsExactly("-la", "-lc2", "-DEP2_LINKOPT", "-lc1", "-lc2", "-DEP1_LINKOPT");
     SkylarkNestedSet additionalInputs = info.getValue("additional_inputs", SkylarkNestedSet.class);
@@ -5440,8 +5439,8 @@
     ConfiguredTarget target = getConfiguredTarget("//foo:skylark_lib");
     assertThat(target).isNotNull();
     @SuppressWarnings("unchecked")
-    SkylarkList<LibraryToLink> libraries =
-        (SkylarkList<LibraryToLink>) getMyInfoFromTarget(target).getValue("libraries");
+    Sequence<LibraryToLink> libraries =
+        (Sequence<LibraryToLink>) getMyInfoFromTarget(target).getValue("libraries");
     assertThat(
             libraries.stream()
                 .map(x -> x.getResolvedSymlinkDynamicLibrary().getFilename())
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
index f370e48..087a09b 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.packages.SkylarkProvider.SkylarkKey;
 import com.google.devtools.build.lib.packages.StructImpl;
 import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.util.FileType;
@@ -322,7 +322,7 @@
     SkylarkNestedSet compileJars = ((SkylarkNestedSet) info.getValue("compile_jars"));
     SkylarkNestedSet fullCompileJars = ((SkylarkNestedSet) info.getValue("full_compile_jars"));
     @SuppressWarnings("unchecked")
-    SkylarkList<Artifact> sourceJars = ((SkylarkList<Artifact>) info.getValue("source_jars"));
+    Sequence<Artifact> sourceJars = ((Sequence<Artifact>) info.getValue("source_jars"));
     JavaRuleOutputJarsProvider outputs = ((JavaRuleOutputJarsProvider) info.getValue("outputs"));
 
     assertThat(artifactFilesNames(transitiveRuntimeJars.toCollection(Artifact.class)))
@@ -593,7 +593,7 @@
 
     ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:custom");
     JavaInfo info = configuredTarget.get(JavaInfo.PROVIDER);
-    SkylarkList<Artifact> sourceJars = info.getSourceJars();
+    Sequence<Artifact> sourceJars = info.getSourceJars();
     NestedSet<Artifact> transitiveSourceJars =
         info.getTransitiveSourceJars().getSet(Artifact.class);
     assertThat(artifactFilesNames(sourceJars)).containsExactly("libcustom-src.jar");
@@ -665,7 +665,7 @@
 
     ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:custom");
     JavaInfo info = configuredTarget.get(JavaInfo.PROVIDER);
-    SkylarkList<Artifact> sourceJars = info.getSourceJars();
+    Sequence<Artifact> sourceJars = info.getSourceJars();
     NestedSet<Artifact> transitiveSourceJars =
         info.getTransitiveSourceJars().getSet(Artifact.class);
     assertThat(artifactFilesNames(sourceJars))
@@ -717,7 +717,7 @@
 
     ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:custom");
     JavaInfo info = configuredTarget.get(JavaInfo.PROVIDER);
-    SkylarkList<Artifact> sourceJars = info.getSourceJars();
+    Sequence<Artifact> sourceJars = info.getSourceJars();
     assertThat(artifactFilesNames(sourceJars)).containsExactly("libcustom-src.jar");
     JavaRuleOutputJarsProvider outputJars = info.getOutputJars();
     assertThat(outputJars.getOutputJars()).hasSize(1);
@@ -771,7 +771,7 @@
 
     ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:custom");
     JavaInfo info = configuredTarget.get(JavaInfo.PROVIDER);
-    SkylarkList<Artifact> sourceJars = info.getSourceJars();
+    Sequence<Artifact> sourceJars = info.getSourceJars();
     assertThat(artifactFilesNames(sourceJars)).containsExactly("libcustom-src.jar");
     JavaRuleOutputJarsProvider outputJars = info.getOutputJars();
     assertThat(outputJars.getOutputJars()).hasSize(1);
@@ -827,7 +827,7 @@
 
     ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:custom");
     JavaInfo info = configuredTarget.get(JavaInfo.PROVIDER);
-    SkylarkList<Artifact> sourceJars = info.getSourceJars();
+    Sequence<Artifact> sourceJars = info.getSourceJars();
     assertThat(artifactFilesNames(sourceJars)).containsExactly("libcustom-mysrc.jar");
     JavaRuleOutputJarsProvider outputJars = info.getOutputJars();
     assertThat(outputJars.getOutputJars()).hasSize(1);
@@ -1349,7 +1349,7 @@
                 new SkylarkKey(
                     Label.parseAbsolute("//foo:extension.bzl", ImmutableMap.of()), "result"));
     @SuppressWarnings("unchecked")
-    SkylarkList<Artifact> sourceJars = (SkylarkList<Artifact>) (info.getValue("source_jars"));
+    Sequence<Artifact> sourceJars = (Sequence<Artifact>) (info.getValue("source_jars"));
     assertThat(prettyArtifactNames(sourceJars)).containsExactly("foo/libmy_java_lib_a-src.jar");
 
     assertThat(prettyArtifactNames(sourceJars)).doesNotContain("foo/libmy_java_lib_b-src.jar");
@@ -2165,8 +2165,7 @@
 
     ConfiguredTarget r = getConfiguredTarget("//a:r");
     @SuppressWarnings("unchecked") // Use an extra variable in order to suppress the warning.
-    SkylarkList<String> javacopts =
-        (SkylarkList<String>) getMyInfoFromTarget(r).getValue("javac_opts");
+    Sequence<String> javacopts = (Sequence<String>) getMyInfoFromTarget(r).getValue("javac_opts");
     assertThat(String.join(" ", javacopts)).contains("-source 6 -target 6");
   }
 
@@ -2192,8 +2191,7 @@
 
     ConfiguredTarget r = getConfiguredTarget("//a:r");
     @SuppressWarnings("unchecked") // Use an extra variable in order to suppress the warning.
-    SkylarkList<String> javacopts =
-        (SkylarkList<String>) getMyInfoFromTarget(r).getValue("javac_opts");
+    Sequence<String> javacopts = (Sequence<String>) getMyInfoFromTarget(r).getValue("javac_opts");
     assertThat(String.join(" ", javacopts)).contains("-source 6 -target 6");
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintCollectionApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintCollectionApiTest.java
index de693ed..18f7309 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintCollectionApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintCollectionApiTest.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.SkylarkProvider.SkylarkKey;
 import com.google.devtools.build.lib.packages.StructImpl;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import java.util.Collection;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -168,8 +168,8 @@
         .isEqualTo(Label.parseAbsoluteUnchecked("//foo:value1"));
 
     @SuppressWarnings("unchecked")
-    SkylarkList<ConstraintSettingInfo> usedConstraints =
-        (SkylarkList<ConstraintSettingInfo>) info.getValue("used_constraints");
+    Sequence<ConstraintSettingInfo> usedConstraints =
+        (Sequence<ConstraintSettingInfo>) info.getValue("used_constraints");
     assertThat(usedConstraints).isNotNull();
     assertThat(usedConstraints)
         .containsExactly(
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java
index befdd40..ddff11d 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java
@@ -26,8 +26,8 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.SkylarkProvider.SkylarkKey;
 import com.google.devtools.build.lib.packages.StructImpl;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import java.util.List;
 import java.util.stream.Collectors;
 import org.junit.Test;
@@ -66,8 +66,8 @@
     StructImpl fooProvider = (StructImpl) configuredAspect.get(fooKey);
     assertThat(fooProvider.getValue("actions")).isNotNull();
     @SuppressWarnings("unchecked")
-    SkylarkList<ActionAnalysisMetadata> actions =
-        (SkylarkList<ActionAnalysisMetadata>) fooProvider.getValue("actions");
+    Sequence<ActionAnalysisMetadata> actions =
+        (Sequence<ActionAnalysisMetadata>) fooProvider.getValue("actions");
     assertThat(actions).isNotEmpty();
 
     ActionAnalysisMetadata action = actions.get(0);
@@ -121,37 +121,34 @@
     StructImpl fooProvider = (StructImpl) configuredAspect.get(fooKey);
     assertThat(fooProvider.getValue("actions")).isNotNull();
 
-    SkylarkList<ActionAnalysisMetadata> actions =
-        (SkylarkList<ActionAnalysisMetadata>) fooProvider.getValue("actions");
+    Sequence<ActionAnalysisMetadata> actions =
+        (Sequence<ActionAnalysisMetadata>) fooProvider.getValue("actions");
     assertThat(actions).hasSize(2);
 
-    SkylarkList<String> mnemonics =
-        (SkylarkList<String>) fooProvider.getValue("mnemonics");
+    Sequence<String> mnemonics = (Sequence<String>) fooProvider.getValue("mnemonics");
     assertThat(mnemonics).containsExactly("MyAction0", "MyAction1");
 
-    SkylarkList<SkylarkDict<String, String>> envs =
-        (SkylarkList<SkylarkDict<String, String>>) fooProvider.getValue("envs");
+    Sequence<SkylarkDict<String, String>> envs =
+        (Sequence<SkylarkDict<String, String>>) fooProvider.getValue("envs");
     assertThat(envs).containsExactly(
         SkylarkDict.of(null, "foo", "bar", "pet", "puppy"),
         SkylarkDict.of(null, "pet", "bunny"));
 
-    SkylarkList<SkylarkList<Artifact>> inputs =
-        (SkylarkList<SkylarkList<Artifact>>) fooProvider.getValue("inputs");
+    Sequence<Sequence<Artifact>> inputs =
+        (Sequence<Sequence<Artifact>>) fooProvider.getValue("inputs");
     assertThat(flattenArtifactNames(inputs)).containsExactly("executable");
 
-    SkylarkList<SkylarkList<Artifact>> outputs =
-        (SkylarkList<SkylarkList<Artifact>>) fooProvider.getValue("outputs");
+    Sequence<Sequence<Artifact>> outputs =
+        (Sequence<Sequence<Artifact>>) fooProvider.getValue("outputs");
     assertThat(flattenArtifactNames(outputs)).containsExactly("myfile0", "executable", "myfile1");
 
-    SkylarkList<SkylarkList<String>> argv =
-        (SkylarkList<SkylarkList<String>>) fooProvider.getValue("argv");
+    Sequence<Sequence<String>> argv = (Sequence<Sequence<String>>) fooProvider.getValue("argv");
     assertThat(argv.get(0)).hasSize(1);
     assertThat(argv.get(0).get(0)).endsWith("executable");
     assertThat(argv.get(1)).contains("fakecmd");
   }
 
-  private static List<String> flattenArtifactNames(
-      SkylarkList<SkylarkList<Artifact>> artifactLists) {
+  private static List<String> flattenArtifactNames(Sequence<Sequence<Artifact>> artifactLists) {
     return artifactLists.stream()
         .flatMap(artifacts -> artifacts.stream())
         .map(artifact -> artifact.getFilename())
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
index 379fbce..5314287 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
@@ -45,7 +45,7 @@
 import com.google.devtools.build.lib.rules.java.JavaConfiguration;
 import com.google.devtools.build.lib.rules.objc.ObjcProtoProvider;
 import com.google.devtools.build.lib.skyframe.AspectValue;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import java.util.Arrays;
@@ -1945,7 +1945,7 @@
         "r2(name = 'r2', dep = ':r1')");
     AnalysisResult analysisResult = update("//test:r2");
     ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
-    SkylarkList<?> result = (SkylarkList) target.get("result");
+    Sequence<?> result = (Sequence) target.get("result");
 
     // "yes" means that aspect a2 sees a1's providers.
     assertThat(result)
@@ -2009,7 +2009,7 @@
         "rcollect(name = 'rcollect', deps = [':r1', ':r2'])");
     AnalysisResult analysisResult = update("//test:rcollect");
     ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
-    SkylarkList<?> result = (SkylarkList) target.get("result");
+    Sequence<?> result = (Sequence) target.get("result");
     assertThat(result)
         .containsExactly(
             "//test:r0[\"//test:aspect.bzl%a1\", \"//test:aspect.bzl%a3\"]=a1p",
@@ -2059,7 +2059,7 @@
         "r2(name = 'r2', dep = ':r1')");
     AnalysisResult analysisResult = update("//test:r2");
     ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
-    SkylarkList<?> result = (SkylarkList) target.get("result");
+    Sequence<?> result = (Sequence) target.get("result");
     // "yes" means that aspect a2 sees a1's providers.
     assertThat(result)
         .containsExactly(
@@ -2102,7 +2102,7 @@
         "r2(name = 'r2', dep = ':r1')");
     AnalysisResult analysisResult = update("//test:r2");
     ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
-    SkylarkList<?> result = (SkylarkList<?>) target.get("result");
+    Sequence<?> result = (Sequence<?>) target.get("result");
 
     // "yes" means that aspect a2 sees a1's providers.
     assertThat(result)
@@ -2141,7 +2141,7 @@
         "r(name = 'r2', dep = ':r1')");
     AnalysisResult analysisResult = update("//test:r2");
     ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
-    SkylarkList<?> result = (SkylarkList<?>) target.get("result");
+    Sequence<?> result = (Sequence<?>) target.get("result");
 
     assertThat(result)
         .containsExactly(
@@ -2343,7 +2343,7 @@
     SkylarkKey p3 =
         new SkylarkKey(Label.parseAbsolute("//test:aspect.bzl", ImmutableMap.of()), "p3");
     StructImpl p3Provider = (StructImpl) configuredAspect.get(p3);
-    assertThat((SkylarkList<?>) p3Provider.getValue("value"))
+    assertThat((Sequence<?>) p3Provider.getValue("value"))
         .containsExactly(
             "//test:r0_1=True",
             "//test:r0_2=True",
@@ -2406,7 +2406,7 @@
     SkylarkKey pCollector =
         new SkylarkKey(Label.parseAbsolute("//test:aspect.bzl", ImmutableMap.of()), "PCollector");
     StructImpl pCollectorProvider = (StructImpl) configuredTarget.get(pCollector);
-    assertThat((SkylarkList<?>) pCollectorProvider.getValue("result"))
+    assertThat((Sequence<?>) pCollectorProvider.getValue("result"))
         .containsExactly("//test:r1", "//test:r0", "//test:r0+PAspect");
   }
 
@@ -2686,7 +2686,7 @@
         "r2(name = 'r2', dep = ':r1')");
     AnalysisResult analysisResult = update("//test:r2");
     ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
-    SkylarkList<?> result = (SkylarkList<?>) target.get("result");
+    Sequence<?> result = (Sequence<?>) target.get("result");
 
     // We should see both the action from the 'r0' rule, and the action from the 'a1' aspect
     assertThat(result).hasSize(2);
@@ -2890,12 +2890,12 @@
     StructImpl rootInfoWithFiles = (StructImpl) targetWithFiles.get(rootInfoKey);
     // With apply_to_generating_rules=True, the aspect should have traversed :beta_output and
     // applied to both :beta and :charlie.
-    assertThat(rootInfoWithFiles.getValue("from_aspect", SkylarkList.class))
+    assertThat(rootInfoWithFiles.getValue("from_aspect", Sequence.class))
         .containsExactly(
             Label.parseAbsolute("//test:charlie", ImmutableMap.of()),
             Label.parseAbsolute("//test:beta", ImmutableMap.of()),
             Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
-    assertThat(rootInfoWithFiles.getValue("non_aspect", SkylarkList.class))
+    assertThat(rootInfoWithFiles.getValue("non_aspect", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
 
     AnalysisResult analysisResultNoFiles = update("//test:test_no_files");
@@ -2904,9 +2904,9 @@
     StructImpl rootInfoNoFiles = (StructImpl) targetNoFiles.get(rootInfoKey);
     // With apply_to_generating_rules=False, the aspect should have only accessed :alpha, as it
     // must have stopped before :beta_output.
-    assertThat(rootInfoNoFiles.getValue("from_aspect", SkylarkList.class))
+    assertThat(rootInfoNoFiles.getValue("from_aspect", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
-    assertThat(rootInfoWithFiles.getValue("non_aspect", SkylarkList.class))
+    assertThat(rootInfoWithFiles.getValue("non_aspect", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
   }
 
@@ -3004,13 +3004,13 @@
     StructImpl rootInfo = (StructImpl) target.get(rootInfoKey);
     StructImpl depInfo = (StructImpl) target.get(depInfoKey);
 
-    assertThat(rootInfo.getValue("both_labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("both_labels", Sequence.class))
         .containsExactly(
             Label.parseAbsolute("//test:alpha", ImmutableMap.of()),
             Label.parseAbsolute("//test:beta_output", ImmutableMap.of()),
             Label.parseAbsolute("//test:charlie", ImmutableMap.of()));
-    assertThat(rootInfo.getValue("root_only_labels", SkylarkList.class)).isEmpty();
-    assertThat(depInfo.getValue("labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("root_only_labels", Sequence.class)).isEmpty();
+    assertThat(depInfo.getValue("labels", Sequence.class))
         .containsExactly(
             Label.parseAbsolute("//test:alpha", ImmutableMap.of()),
             Label.parseAbsolute("//test:beta", ImmutableMap.of()),
@@ -3032,10 +3032,10 @@
     StructImpl rootInfo = (StructImpl) target.get(rootInfoKey);
     StructImpl depInfo = (StructImpl) target.get(depInfoKey);
 
-    assertThat(rootInfo.getValue("both_labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("both_labels", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
-    assertThat(rootInfo.getValue("root_only_labels", SkylarkList.class)).isEmpty();
-    assertThat(depInfo.getValue("labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("root_only_labels", Sequence.class)).isEmpty();
+    assertThat(depInfo.getValue("labels", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
   }
 
@@ -3054,13 +3054,13 @@
     StructImpl rootInfo = (StructImpl) target.get(rootInfoKey);
     StructImpl depInfo = (StructImpl) target.get(depInfoKey);
 
-    assertThat(rootInfo.getValue("both_labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("both_labels", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
-    assertThat(rootInfo.getValue("root_only_labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("root_only_labels", Sequence.class))
         .containsExactly(
             Label.parseAbsolute("//test:beta_output", ImmutableMap.of()),
             Label.parseAbsolute("//test:charlie", ImmutableMap.of()));
-    assertThat(depInfo.getValue("labels", SkylarkList.class))
+    assertThat(depInfo.getValue("labels", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
   }
 
@@ -3079,10 +3079,10 @@
     StructImpl rootInfo = (StructImpl) target.get(rootInfoKey);
     StructImpl depInfo = (StructImpl) target.get(depInfoKey);
 
-    assertThat(rootInfo.getValue("both_labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("both_labels", Sequence.class))
         .containsExactly(Label.parseAbsolute("//test:alpha", ImmutableMap.of()));
-    assertThat(rootInfo.getValue("root_only_labels", SkylarkList.class)).isEmpty();
-    assertThat(depInfo.getValue("labels", SkylarkList.class))
+    assertThat(rootInfo.getValue("root_only_labels", Sequence.class)).isEmpty();
+    assertThat(depInfo.getValue("labels", Sequence.class))
         .containsExactly(
             Label.parseAbsolute("//test:alpha", ImmutableMap.of()),
             Label.parseAbsolute("//test:beta", ImmutableMap.of()),
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index 820eccc..433b989 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -55,7 +55,7 @@
 import com.google.devtools.build.lib.skyframe.PackageFunction;
 import com.google.devtools.build.lib.skyframe.SkyFunctions;
 import com.google.devtools.build.lib.skyframe.SkylarkImportLookupFunction;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkList;
@@ -294,7 +294,7 @@
         .containsExactlyElementsIn(hiddenTopLevelArtifacts);
     assertThat(myInfo.getValue("has_key1")).isEqualTo(Boolean.TRUE);
     assertThat(myInfo.getValue("has_key2")).isEqualTo(Boolean.FALSE);
-    assertThat((SkylarkList) myInfo.getValue("all_keys"))
+    assertThat((Sequence) myInfo.getValue("all_keys"))
         .containsExactly(
             OutputGroupInfo.HIDDEN_TOP_LEVEL,
             OutputGroupInfo.COMPILATION_PREREQUISITES,
@@ -2225,8 +2225,8 @@
     StructImpl outerDepInfo = (StructImpl) outerTarget.get(myDepKey);
     StructImpl innerInfo = (StructImpl) outerDepInfo.getValue("info");
 
-    assertThat((SkylarkList) outerInfo.getValue("copts")).containsExactly("yeehaw");
-    assertThat((SkylarkList) innerInfo.getValue("copts")).containsExactly("cowabunga");
+    assertThat((Sequence) outerInfo.getValue("copts")).containsExactly("yeehaw");
+    assertThat((Sequence) innerInfo.getValue("copts")).containsExactly("cowabunga");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index 423f92e..fe8fc13 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -47,8 +47,8 @@
 import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
 import com.google.devtools.build.lib.rules.python.PyProviderUtils;
 import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkList;
@@ -458,8 +458,8 @@
   }
 
   private void assertArtifactList(Object result, List<String> artifacts) {
-    assertThat(result).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> resultList = (SkylarkList) result;
+    assertThat(result).isInstanceOf(Sequence.class);
+    Sequence<?> resultList = (Sequence) result;
     assertThat(resultList).hasSize(artifacts.size());
     int i = 0;
     for (String artifact : artifacts) {
@@ -473,7 +473,7 @@
     setRuleContext(ruleContext);
     Object result = eval("ruleContext.attr.srcs");
     // Check for a known provider
-    TransitiveInfoCollection tic1 = (TransitiveInfoCollection) ((SkylarkList) result).get(0);
+    TransitiveInfoCollection tic1 = (TransitiveInfoCollection) ((Sequence) result).get(0);
     assertThat(JavaInfo.getProvider(JavaSourceJarsProvider.class, tic1)).isNotNull();
     // Check an unimplemented provider too
     assertThat(PyProviderUtils.hasLegacyProvider(tic1)).isFalse();
@@ -494,7 +494,7 @@
     SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
     setRuleContext(ruleContext);
     Object result = eval("ruleContext.attr.outs");
-    assertThat(result).isInstanceOf(SkylarkList.class);
+    assertThat(result).isInstanceOf(Sequence.class);
   }
 
   @Test
@@ -646,7 +646,7 @@
     SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
     setRuleContext(ruleContext);
     Object result = eval("ruleContext.attr.outs");
-    assertThat(((SkylarkList) result)).hasSize(1);
+    assertThat(((Sequence) result)).hasSize(1);
   }
 
   @Test
@@ -654,7 +654,7 @@
     SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
     setRuleContext(ruleContext);
     Object result = eval("ruleContext.attr.outs");
-    assertThat(((SkylarkList) result)).hasSize(1);
+    assertThat(((Sequence) result)).hasSize(1);
   }
 
   @Test
@@ -865,14 +865,14 @@
   public void testFeatures() throws Exception {
     setRuleContext(createRuleContext("//foo:cc_with_features"));
     Object result = eval("ruleContext.features");
-    assertThat((SkylarkList) result).containsExactly("cc_include_scanning", "f1", "f2");
+    assertThat((Sequence) result).containsExactly("cc_include_scanning", "f1", "f2");
   }
 
   @Test
   public void testDisabledFeatures() throws Exception {
     setRuleContext(createRuleContext("//foo:cc_with_features"));
     Object result = eval("ruleContext.disabled_features");
-    assertThat((SkylarkList) result).containsExactly("f3");
+    assertThat((Sequence) result).containsExactly("f3");
   }
 
   @Test
@@ -1571,19 +1571,19 @@
     setRuleContext(createRuleContext("//test:foo"));
     Object filenames =
         eval("[f.short_path for f in ruleContext.attr.dep.default_runfiles.files.to_list()]");
-    assertThat(filenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> filenamesList = (SkylarkList) filenames;
+    assertThat(filenames).isInstanceOf(Sequence.class);
+    Sequence<?> filenamesList = (Sequence) filenames;
     assertThat(filenamesList).containsAtLeast("test/lib.py", "test/lib2.py");
     Object emptyFilenames = eval("ruleContext.attr.dep.default_runfiles.empty_filenames.to_list()");
-    assertThat(emptyFilenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> emptyFilenamesList = (SkylarkList) emptyFilenames;
+    assertThat(emptyFilenames).isInstanceOf(Sequence.class);
+    Sequence<?> emptyFilenamesList = (Sequence) emptyFilenames;
     assertThat(emptyFilenamesList).containsExactly("test/__init__.py");
 
     setRuleContext(createRuleContext("//test:foo_with_init"));
     Object noEmptyFilenames =
         eval("ruleContext.attr.dep.default_runfiles.empty_filenames.to_list()");
-    assertThat(noEmptyFilenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> noEmptyFilenamesList = (SkylarkList) noEmptyFilenames;
+    assertThat(noEmptyFilenames).isInstanceOf(Sequence.class);
+    Sequence<?> noEmptyFilenamesList = (Sequence) noEmptyFilenames;
     assertThat(noEmptyFilenamesList).isEmpty();
   }
 
@@ -1622,15 +1622,15 @@
     setRuleContext(createRuleContext("//test:test_with_symlink"));
     Object symlinkPaths =
         eval("[s.path for s in ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
-    assertThat(symlinkPaths).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> symlinkPathsList = (SkylarkList) symlinkPaths;
+    assertThat(symlinkPaths).isInstanceOf(Sequence.class);
+    Sequence<?> symlinkPathsList = (Sequence) symlinkPaths;
     assertThat(symlinkPathsList).containsExactly("symlink_test/a.py").inOrder();
     Object symlinkFilenames =
         eval(
             "[s.target_file.short_path for s in"
                 + " ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
-    assertThat(symlinkFilenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> symlinkFilenamesList = (SkylarkList) symlinkFilenames;
+    assertThat(symlinkFilenames).isInstanceOf(Sequence.class);
+    Sequence<?> symlinkFilenamesList = (Sequence) symlinkFilenames;
     assertThat(symlinkFilenamesList).containsExactly("test/a.py").inOrder();
   }
 
@@ -1668,15 +1668,15 @@
     setRuleContext(createRuleContext("//test:test_with_symlink"));
     Object symlinkPaths =
         eval("[s.path for s in ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
-    assertThat(symlinkPaths).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> symlinkPathsList = (SkylarkList) symlinkPaths;
+    assertThat(symlinkPaths).isInstanceOf(Sequence.class);
+    Sequence<?> symlinkPathsList = (Sequence) symlinkPaths;
     assertThat(symlinkPathsList).containsExactly("symlink_test/a.py").inOrder();
     Object symlinkFilenames =
         eval(
             "[s.target_file.short_path for s in"
                 + " ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
-    assertThat(symlinkFilenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> symlinkFilenamesList = (SkylarkList) symlinkFilenames;
+    assertThat(symlinkFilenames).isInstanceOf(Sequence.class);
+    Sequence<?> symlinkFilenamesList = (Sequence) symlinkFilenames;
     assertThat(symlinkFilenamesList).containsExactly("test/a.py").inOrder();
   }
 
@@ -1715,15 +1715,15 @@
     setRuleContext(createRuleContext("//test:test_with_root_symlink"));
     Object rootSymlinkPaths =
         eval("[s.path for s in ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
-    assertThat(rootSymlinkPaths).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> rootSymlinkPathsList = (SkylarkList) rootSymlinkPaths;
+    assertThat(rootSymlinkPaths).isInstanceOf(Sequence.class);
+    Sequence<?> rootSymlinkPathsList = (Sequence) rootSymlinkPaths;
     assertThat(rootSymlinkPathsList).containsExactly("root_symlink_test/a.py").inOrder();
     Object rootSymlinkFilenames =
         eval(
             "[s.target_file.short_path for s in"
                 + " ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
-    assertThat(rootSymlinkFilenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> rootSymlinkFilenamesList = (SkylarkList) rootSymlinkFilenames;
+    assertThat(rootSymlinkFilenames).isInstanceOf(Sequence.class);
+    Sequence<?> rootSymlinkFilenamesList = (Sequence) rootSymlinkFilenames;
     assertThat(rootSymlinkFilenamesList).containsExactly("test/a.py").inOrder();
   }
 
@@ -1761,15 +1761,15 @@
     setRuleContext(createRuleContext("//test:test_with_root_symlink"));
     Object rootSymlinkPaths =
         eval("[s.path for s in ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
-    assertThat(rootSymlinkPaths).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> rootSymlinkPathsList = (SkylarkList) rootSymlinkPaths;
+    assertThat(rootSymlinkPaths).isInstanceOf(Sequence.class);
+    Sequence<?> rootSymlinkPathsList = (Sequence) rootSymlinkPaths;
     assertThat(rootSymlinkPathsList).containsExactly("root_symlink_test/a.py").inOrder();
     Object rootSymlinkFilenames =
         eval(
             "[s.target_file.short_path for s in"
                 + " ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
-    assertThat(rootSymlinkFilenames).isInstanceOf(SkylarkList.class);
-    SkylarkList<?> rootSymlinkFilenamesList = (SkylarkList) rootSymlinkFilenames;
+    assertThat(rootSymlinkFilenames).isInstanceOf(Sequence.class);
+    Sequence<?> rootSymlinkFilenamesList = (Sequence) rootSymlinkFilenames;
     assertThat(rootSymlinkFilenamesList).containsExactly("test/a.py").inOrder();
   }
 
@@ -2445,7 +2445,7 @@
         new SkylarkKey(Label.parseAbsolute("//a:a.bzl", ImmutableMap.of()), "key_provider");
 
     SkylarkInfo keyInfo = (SkylarkInfo) a.get(key);
-    SkylarkList<?> keys = (SkylarkList) keyInfo.getValue("keys");
+    Sequence<?> keys = (Sequence) keyInfo.getValue("keys");
     assertThat(keys).containsExactly("c", "b", "a", "f", "e", "d").inOrder();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 8e67867..e01f42a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -61,7 +61,7 @@
 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.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkList;
@@ -2912,7 +2912,7 @@
         "directory = ruleContext.actions.declare_directory('dir')",
         "def _short_path(f): return f.short_path", // For easier assertions
         "args.add_all([directory], map_each=_short_path)");
-    SkylarkList<?> result = (SkylarkList<?>) eval("args, directory");
+    Sequence<?> result = (Sequence<?>) eval("args, directory");
     Args args = (Args) result.get(0);
     Artifact directory = (Artifact) result.get(1);
     CommandLine commandLine = args.build();
@@ -2939,7 +2939,7 @@
         "def _short_path(f): return f.short_path", // For easier assertions
         "args.add_all([directory], map_each=_short_path, expand_directories=True)",
         "args.add_all([directory], map_each=_short_path, expand_directories=False)");
-    SkylarkList<?> result = (SkylarkList<?>) eval("args, directory");
+    Sequence<?> result = (Sequence<?>) eval("args, directory");
     Args args = (Args) result.get(0);
     Artifact directory = (Artifact) result.get(1);
     CommandLine commandLine = args.build();
@@ -2974,7 +2974,7 @@
         "args.add_all([directory])",
         "params = ruleContext.actions.declare_file('params')",
         "ruleContext.actions.write(params, args)");
-    SkylarkList<?> result = (SkylarkList<?>) eval("params, directory");
+    Sequence<?> result = (Sequence<?>) eval("params, directory");
     Artifact params = (Artifact) result.get(0);
     Artifact directory = (Artifact) result.get(1);
     ActionAnalysisMetadata action =
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
index 244d541..a0ee468 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
@@ -42,7 +42,7 @@
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.ParserInput;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Starlark;
 import com.google.devtools.build.lib.syntax.StarlarkFile;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -367,7 +367,7 @@
                 Scope.newBuilder()
                     .setName("global")
                     .addBinding(
-                        getValueProto("x", SkylarkList.createImmutable(ImmutableList.of(1, 2, 3)))))
+                        getValueProto("x", Sequence.createImmutable(ImmutableList.of(1, 2, 3)))))
             .build());
   }
 
@@ -391,7 +391,7 @@
     Value xValue = frames.getFrame(0).getScope(0).getBinding(0);
 
     assertValuesEqualIgnoringId(
-        xValue, getValueProto("x", SkylarkList.createImmutable(ImmutableList.of(1, 2, 3))));
+        xValue, getValueProto("x", Sequence.createImmutable(ImmutableList.of(1, 2, 3))));
 
     List<Value> children = getChildren(xValue);
 
@@ -522,7 +522,7 @@
 
     ListFramesResponse frames = listFrames(threadId);
     assertThat(frames.getFrame(0).getScope(0).getBindingList())
-        .contains(getValueProto("x", SkylarkList.createImmutable(ImmutableList.of(5, 6))));
+        .contains(getValueProto("x", Sequence.createImmutable(ImmutableList.of(5, 6))));
   }
 
   @Test
@@ -556,7 +556,7 @@
 
     ListFramesResponse frames = listFrames(threadId);
     assertThat(frames.getFrame(0).getScope(0).getBindingList())
-        .contains(getValueProto("x", SkylarkList.createImmutable(ImmutableList.of(1, 2, 3, 4))));
+        .contains(getValueProto("x", Sequence.createImmutable(ImmutableList.of(1, 2, 3, 4))));
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
index a3200bf..a2214dc 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
@@ -20,8 +20,8 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 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.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -193,11 +193,7 @@
       extraKeywords = @Param(name = "kwargs"),
       useStarlarkThread = true)
   public String twoArgMethodWithParamsAndInfoAndKwargs(
-      String one,
-      Integer two,
-      SkylarkList<?> args,
-      SkylarkDict<?, ?> kwargs,
-      StarlarkThread thread) {
+      String one, Integer two, Sequence<?> args, SkylarkDict<?, ?> kwargs, StarlarkThread thread) {
     return "yar";
   }
 
@@ -230,10 +226,10 @@
       name = "method_with_list_and_dict",
       documented = false,
       parameters = {
-        @Param(name = "one", type = SkylarkList.class, named = true),
+        @Param(name = "one", type = Sequence.class, named = true),
         @Param(name = "two", type = SkylarkDict.class, named = true),
       })
-  public String methodWithListandDict(SkylarkList<?> one, SkylarkDict<?, ?> two) {
+  public String methodWithListandDict(Sequence<?> one, SkylarkDict<?, ?> two) {
     return "bar";
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java
index 0d0755c..19dbae0 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java
@@ -17,8 +17,8 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter with an unsafely specified generic
@@ -31,7 +31,7 @@
       name = "specified_generic_type",
       documented = false,
       parameters = {
-        @Param(name = "one", type = SkylarkList.class, named = true),
+        @Param(name = "one", type = Sequence.class, named = true),
       })
   public String specifiedGenericType(SkylarkDict<?, String> one) {
     return "bar";
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java
index 1472480..f3b1f04 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java
@@ -17,18 +17,17 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
-import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.Sequence;
 
 /** Test case which verifies a struct field method cannot specify extraArgs. */
 public class StructFieldWithExtraArgs implements SkylarkValue {
 
   @SkylarkCallable(
-    name = "struct_field_method_with_extra_args",
-    documented = false,
-    structField = true,
-    extraPositionals = @Param(name = "args")
-  )
-  public String structFieldMethodWithExtraArgs(SkylarkList<?> args) {
+      name = "struct_field_method_with_extra_args",
+      documented = false,
+      structField = true,
+      extraPositionals = @Param(name = "args"))
+  public String structFieldMethodWithExtraArgs(Sequence<?> args) {
     return "Cat.";
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java
index d0eded9..0ba4095 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java
@@ -17,8 +17,8 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
-import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -42,11 +42,7 @@
               enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_BUILD_SETTING_API),
       useStarlarkThread = true)
   public String toggledKwargsMethod(
-      String one,
-      Integer two,
-      SkylarkList<?> args,
-      SkylarkDict<?, ?> kwargs,
-      StarlarkThread thread) {
+      String one, Integer two, Sequence<?> args, SkylarkDict<?, ?> kwargs, StarlarkThread thread) {
     return "cat";
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java b/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java
index 79eeaa7..4b5edb5 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java
@@ -33,8 +33,8 @@
 public class BaseFunctionTest extends EvaluationTestCase {
 
   /**
-   * Handy implementation of {@link BaseFunction} that returns all its args as a list.
-   * (We'd use SkylarkList.tuple, but it can't handle null.)
+   * Handy implementation of {@link BaseFunction} that returns all its args as a list. (We'd use
+   * Sequence.tuple, but it can't handle null.)
    */
   private static class TestingBaseFunction extends BaseFunction {
     TestingBaseFunction(FunctionSignature signature) {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index de86116..ff07322 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -227,55 +227,49 @@
     }
 
     @SkylarkCallable(
-      name = "with_params",
-      documented = false,
-      parameters = {
-        @Param(name = "pos1"),
-        @Param(name = "pos2", defaultValue = "False", type = Boolean.class),
-        @Param(
-          name = "posOrNamed",
-          defaultValue = "False",
-          type = Boolean.class,
-          positional = true,
-          named = true
-        ),
-        @Param(name = "named", type = Boolean.class, positional = false, named = true),
-        @Param(
-          name = "optionalNamed",
-          type = Boolean.class,
-          defaultValue = "False",
-          positional = false,
-          named = true
-        ),
-        @Param(
-          name = "nonNoneable",
-          type = Object.class,
-          defaultValue = "\"a\"",
-          positional = false,
-          named = true
-        ),
-        @Param(
-          name = "noneable",
-          type = Integer.class,
-          defaultValue = "None",
-          noneable = true,
-          positional = false,
-          named = true
-        ),
-        @Param(
-          name = "multi",
-          allowedTypes = {
-            @ParamType(type = String.class),
-            @ParamType(type = Integer.class),
-            @ParamType(type = SkylarkList.class, generic1 = Integer.class),
-          },
-          defaultValue = "None",
-          noneable = true,
-          positional = false,
-          named = true
-        )
-      }
-    )
+        name = "with_params",
+        documented = false,
+        parameters = {
+          @Param(name = "pos1"),
+          @Param(name = "pos2", defaultValue = "False", type = Boolean.class),
+          @Param(
+              name = "posOrNamed",
+              defaultValue = "False",
+              type = Boolean.class,
+              positional = true,
+              named = true),
+          @Param(name = "named", type = Boolean.class, positional = false, named = true),
+          @Param(
+              name = "optionalNamed",
+              type = Boolean.class,
+              defaultValue = "False",
+              positional = false,
+              named = true),
+          @Param(
+              name = "nonNoneable",
+              type = Object.class,
+              defaultValue = "\"a\"",
+              positional = false,
+              named = true),
+          @Param(
+              name = "noneable",
+              type = Integer.class,
+              defaultValue = "None",
+              noneable = true,
+              positional = false,
+              named = true),
+          @Param(
+              name = "multi",
+              allowedTypes = {
+                @ParamType(type = String.class),
+                @ParamType(type = Integer.class),
+                @ParamType(type = Sequence.class, generic1 = Integer.class),
+              },
+              defaultValue = "None",
+              noneable = true,
+              positional = false,
+              named = true)
+        })
     public String withParams(
         Integer pos1,
         boolean pos2,
@@ -359,7 +353,7 @@
               allowedTypes = {
                 @ParamType(type = String.class),
                 @ParamType(type = Integer.class),
-                @ParamType(type = SkylarkList.class, generic1 = Integer.class),
+                @ParamType(type = Sequence.class, generic1 = Integer.class),
               },
               defaultValue = "None",
               noneable = true,
@@ -428,7 +422,7 @@
         extraPositionals = @Param(name = "args"),
         useStarlarkThread = true)
     public String withArgsAndThread(
-        Integer pos1, boolean pos2, boolean named, SkylarkList<?> args, StarlarkThread thread) {
+        Integer pos1, boolean pos2, boolean named, Sequence<?> args, StarlarkThread thread) {
       String argsString =
           "args(" + args.stream().map(Printer::debugPrint).collect(joining(", ")) + ")";
       return "with_args_and_thread("
@@ -468,15 +462,14 @@
     }
 
     @SkylarkCallable(
-      name = "with_args_and_kwargs",
-      documented = false,
-      parameters = {
-        @Param(name = "foo", named = true, positional = true, type = String.class),
-      },
-      extraPositionals = @Param(name = "args"),
-      extraKeywords = @Param(name = "kwargs")
-    )
-    public String withArgsAndKwargs(String foo, SkylarkList<?> args, SkylarkDict<?, ?> kwargs)
+        name = "with_args_and_kwargs",
+        documented = false,
+        parameters = {
+          @Param(name = "foo", named = true, positional = true, type = String.class),
+        },
+        extraPositionals = @Param(name = "args"),
+        extraKeywords = @Param(name = "kwargs"))
+    public String withArgsAndKwargs(String foo, Sequence<?> args, SkylarkDict<?, ?> kwargs)
         throws EvalException {
       String argsString =
           "args(" + args.stream().map(Printer::debugPrint).collect(joining(", ")) + ")";
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkListTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkListTest.java
index d31a7e0..f7eeb0b 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkListTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkListTest.java
@@ -24,9 +24,7 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-/**
- * Tests for SkylarkList.
- */
+/** Tests for Sequence. */
 @RunWith(JUnit4.class)
 public class SkylarkListTest extends EvaluationTestCase {
 
@@ -64,8 +62,8 @@
   }
 
   @SuppressWarnings("unchecked")
-  private SkylarkList<Object> listEval(String... input) throws Exception {
-    return (SkylarkList<Object>) eval(input);
+  private Sequence<Object> listEval(String... input) throws Exception {
+    return (Sequence<Object>) eval(input);
   }
 
   @Test
@@ -156,8 +154,7 @@
 
   @Test
   public void testListConcat() throws Exception {
-    assertThat(eval("[1, 2] + [3, 4]"))
-        .isEqualTo(SkylarkList.createImmutable(Tuple.of(1, 2, 3, 4)));
+    assertThat(eval("[1, 2] + [3, 4]")).isEqualTo(Sequence.createImmutable(Tuple.of(1, 2, 3, 4)));
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFileTest.java b/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFileTest.java
index feb49ae..0d1fafe 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFileTest.java
@@ -58,7 +58,7 @@
     // input1.BUILD contains:
     // x = [1,2,'foo',4] + [1,2, "%s%d" % ('foo', 1)]
     assertThat(thread.moduleLookup("x"))
-        .isEqualTo(SkylarkList.createImmutable(Tuple.of(1, 2, "foo", 4, 1, 2, "foo1")));
+        .isEqualTo(Sequence.createImmutable(Tuple.of(1, 2, "foo", 4, 1, 2, "foo1")));
   }
 
   @Test