Fix value collision in builtins registry

If two values compared equal (e.g., MethodLibrary#bool and SkylarkAttr#bool), we were dropping one of them in favor of the other.

RELNOTES: None
PiperOrigin-RevId: 182057611
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
index 839b311..3decbeb 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
@@ -15,6 +15,7 @@
 package com.google.devtools.build.lib.syntax;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -203,9 +204,9 @@
       functions.get(namespace).put(function.getName(), function);
     }
 
-    /** Returns a set of all registered builtins, in a deterministic order. */
-    public ImmutableSet<Object> getBuiltins() {
-      return ImmutableSet.copyOf(allBuiltins.values());
+    /** Returns a list of all registered builtins, in a deterministic order. */
+    public ImmutableList<Object> getBuiltins() {
+      return ImmutableList.copyOf(allBuiltins.values());
     }
 
     @Nullable