 
         (<= (count keys) array-map-threshold)
         (if (distinct-keys? keys)
-          (emits "&CljsCorePersistentArrayMap{nil, " (count keys) ", []interface{}{"
+          (emits "(&CljsCorePersistentArrayMap{nil, " (count keys) ", []interface{}{"
             (comma-sep (interleave keys vals))
-            "}, nil}")
+            "}, nil})")
           (emits "CljsCorePersistentArrayMap_FromArray.X_invoke_Arity3([]interface{}{"
             (comma-sep (interleave keys vals))
             "}, true, false).(*CljsCorePersistentArrayMap)"))

                (or (= ns 'goog)
                    (when-let [ns-str (str ns)]
                      (= (get (string/split ns-str #"\.") 0 nil) "goog"))))
        native? (or js? goog? go?)
        keyword? (and (= (-> f :op) :constant)
                      (keyword? (-> f :form)))
        arity (count args)

      (emits "CljsCorePersistentVector_EMPTY")
      (let [cnt (count items)]
        (if (< cnt 32)
          (emits "(&CljsCorePersistentVector{nil, " cnt
            ", 5, CljsCorePersistentVector_EMPTY_NODE, []interface{}{"  (comma-sep items) "}, nil})")
          (emits "CljsCorePersistentVector_FromArray.X_invoke_Arity2([]interface{}{" (comma-sep items) "}, true).(*CljsCorePersistentVector)"))))))

(defn distinct-constants? [items]
