anchor.diff:             (lisp-to-jsc-value
               (progn
                 ,@body))))
  -       (%make-jsc-function ,view ,context-designator ,js-name (cffi:callback ,callback-name) ,n-args))))
  +       (%make-jsc-function (get-jsc-context ,view ,context-designator)
  +                           ,js-name (cffi:callback ,callback-name) ,n-args))))
   
   (declaim (ftype (function (jsc-context string (or jsc-class null) (or null (cons (cons string)))))
                   %make-jsc-class))
  
positive.code: See `get-jsc-context' for what CONTEXT-DESIGNATOR could be."
    (let* ((js-name (etypecase name
                      (string name)
                      (null (null-pointer))
                      (symbol (cffi:translate-camelcase-name name))))
           (callback-name (gensym "js-callback"))
           (n-args (length args))
  
negative.code:      hash-table)
      (jsc-value-new-from-json context (format nil "{~{~s:~a~}~:{,~s:~a~}}" (first json-alist) (rest json-alist)))))
  
  (declaim (ftype (function (jsc-context (or string null) t integer)) %make-jsc-function))
  (defun %make-jsc-function (context name callback n-args)
    (let ((jsc-value-type (foreign-funcall "jsc_value_get_type" :pointer)))
      (jsc-value-to-lisp
       (jsc-value-new-functionv
        context (or name (null-pointer)) callback
        (null-pointer) (null-pointer) ;; TODO: Use g-notify-destroy-free?
        jsc-value-type n-args
        (if (not (zerop n-args))
            (foreign-alloc
             :pointer :initial-contents (loop repeat n-args collect jsc-value-type)
                      :count n-args)
            (make-pointer (g-type-make-fundamental 1)))))))
  