          (.apply f f (to-array arglist)))))
   ([f x y z args]
      (let [arglist (list* x y z args)
-           fixed-arity (. f -cljs$lang$maxFixedArity)]
-       (if (. f -cljs$lang$applyTo)
+           fixed-arity (.-cljs$lang$maxFixedArity f)]
+       (if (.-cljs$lang$applyTo f)
          (if (<= (bounded-count arglist fixed-arity)
                  fixed-arity)
            (.apply f f (to-array arglist))

  "Applies fn f to the argument list formed by prepending intervening arguments to args.
  First cut.  Not lazy.  Needs to use emitted toApply."
  ([f args]
     (let [fixed-arity (. f -cljs$lang$maxFixedArity)]
       (if (. f -cljs$lang$applyTo)
         (if (<= (bounded-count args (inc fixed-arity))
                 fixed-arity)
           (.apply f f (to-array args))

         (.apply f f (to-array arglist)))))
  ([f a b c d & args]
     (let [arglist (cons a (cons b (cons c (cons d (spread args)))))
           fixed-arity (.-cljs$lang$maxFixedArity f)]
       (if (.-cljs$lang$applyTo f)
         (if (<= (bounded-count arglist fixed-arity)
                 fixed-arity)
           (.apply f f (to-array arglist))
