Changes SplitTransition#split's return type to Map and updates the current native implementations to return CPU-based keys. Lists returned by Starlark transitions are automatically keyed by indexes.

This change relands https://github.com/bazelbuild/bazel/commit/528cb62caa4a742c9918d984d929fe8662a539df with a fix to the duplicate map key issue in the new objc handling code. Other parts of the change are free of the problem because they already deduplicate CPU flag values with ImmutableSortedSet. Added a test case to ObjcSkylarkTest.java and ran TGP with no suspicious results found.

RELNOTES: None
PiperOrigin-RevId: 293656453
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
index b805d85..6e903e0 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
@@ -23,7 +23,6 @@
 import static com.google.devtools.build.lib.testutil.MoreAsserts.assertThrows;
 
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.config.HostTransition;
@@ -40,6 +39,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -286,8 +286,8 @@
 
   private static class TestSplitTransition implements SplitTransition {
     @Override
-    public List<BuildOptions> split(BuildOptions buildOptions) {
-      return ImmutableList.of(buildOptions.clone(), buildOptions.clone());
+    public Map<String, BuildOptions> split(BuildOptions buildOptions) {
+      return ImmutableMap.of("test0", buildOptions.clone(), "test1", buildOptions.clone());
     }
   }