anchor.diff:           (warn "GLSL stages cannot be used from the cpu")))))
   
   (defun glsl-stage-spec-to-varjo-compile-result
  -    (in-args uniforms outputs context body-string)
  +    (stage-kind in-args uniforms outputs context body-string)
     "Here our goal is to simple reuse as much from varjo as possible.
      This will mean we have less duplication, even if things seem a little
      ugly here"
  
positive.code:     (let* ((in-args (mapcar #'process-glsl-in-arg in-args))
             (uniforms (mapcar #'process-glsl-uniform-arg uniforms))
             (body-string (get-body-string body-form))
             (spec (%make-glsl-stage-spec ;;[0]
                    name in-args uniforms context body-string
                    (glsl-stage-spec-to-varjo-compile-result ;;[1]
                     in-args uniforms outputs context body-string))))
        (%update-glsl-stage-data spec)
        `(progn
           ,(%make-stand-in-lisp-func-for-glsl-stage spec);;[2]
  
negative.code:             ;;#'(lambda (_) (fill-in-post-proc _ body-string outputs))
              #'varjo::gen-in-arg-strings
              #'varjo::gen-out-var-strings
              #'varjo::gen-out-decl-strings
              #'varjo::final-uniform-strings
              #'varjo::final-string-compose
              #'varjo::package-as-final-result-object)))))))
  
  (defun process-glsl-in-arg (arg)
    (destructuring-bind (glsl-name type . qualifiers) arg
      (let ((name (symb (string-upcase glsl-name))))
        `(,name ,type ,@qualifiers ,glsl-name))))
  
  (defun process-glsl-uniform-arg (arg)
    (destructuring-bind (glsl-name type . qualifiers) arg
  