anchor.diff:                              :collect (copy-code obj :type type))))))))
   
   (defun find-functions-for-args (func-name args-code arg-objs env)
  -  (print args-code)
     (let* ((arg-types (mapcar #'code-type arg-objs))
            (any-errors (some #'v-errorp arg-types)))
       (loop :for func :in (get-function func-name env) 
  
positive.code:           (error () nil)))))
  
  (defun glsl-arg-matchp (func arg-types arg-objs)
    (print "spec match")
    (let* ((spec-types (v-argument-spec func))
           (spec-generics (positions-if #'v-spec-typep spec-types))
           (g-dim (when spec-generics 
  
negative.code: 
  ;; [TODO] should this always copy the arg-objs?
  (defun basic-arg-matchp (func arg-types arg-objs)
    (let ((spec-types (v-argument-spec func)))
      (if (loop :for a :in arg-types :for s :in spec-types :always (v-typep a s))
          (list 0 func arg-objs)
  