Eliminate SkylarkType.toMap() in favor of ImmutableMap.copyOf() and simplify 
SkylarkType.castMap() a little.

--
MOS_MIGRATED_REVID=90988088
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
index 803d3da..071185c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
@@ -24,13 +24,13 @@
 import static com.google.devtools.build.lib.packages.Type.STRING;
 import static com.google.devtools.build.lib.syntax.SkylarkType.castList;
 import static com.google.devtools.build.lib.syntax.SkylarkType.castMap;
-import static com.google.devtools.build.lib.syntax.SkylarkType.toMap;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.RunUnder;
@@ -227,8 +227,8 @@
               ? new RuleClass.Builder("", type, true, testBaseRule)
               : new RuleClass.Builder("", type, true, baseRule);
 
-          for (Map.Entry<String, Attribute.Builder> attr : castMap(
-              arguments.get("attrs"), String.class, Attribute.Builder.class, "attrs")) {
+          for (Map.Entry<String, Attribute.Builder> attr : castMap(arguments.get("attrs"),
+              String.class, Attribute.Builder.class, "attrs").entrySet()) {
             Attribute.Builder<?> attrBuilder = attr.getValue();
             String attrName = attributeToNative(attr.getKey(), loc,
                 attrBuilder.hasLateBoundValue());
@@ -252,8 +252,8 @@
                   new SkylarkImplicitOutputsFunctionWithCallback(callback, loc));
             } else {
               builder.setImplicitOutputsFunction(new SkylarkImplicitOutputsFunctionWithMap(
-                  toMap(castMap(arguments.get("outputs"), String.class, String.class,
-                  "implicit outputs of the rule class"))));
+                  ImmutableMap.copyOf(castMap(arguments.get("outputs"), String.class, String.class,
+                      "implicit outputs of the rule class"))));
             }
           }