anchor.diff:    :args-valid t
     :return
     (values
  -   (let ((body-objs (loop :for code :in body :collect
  -                       (multiple-value-bind (code-obj new-env)
  -                           (varjo->glsl code env)
  -                         (when new-env (setf env new-env))
  -                         code-obj))))
  -     (let ((last-obj (last1 body-objs)))
  -       (merge-obs body-objs
  -                  :type (code-type last-obj)
  -                  :current-line (current-line last-obj)
  -                  :to-block (merge-lines-into-block-list body-objs)
  -                  :multi-vals (multi-vals (last1 body-objs)))))
  +   (if body
  +       (let ((body-objs (loop :for code :in body :collect
  +                           (multiple-value-bind (code-obj new-env)
  +                               (varjo->glsl code env)
  +                             (when new-env (setf env new-env))
  +                             code-obj))))
  +         (let ((last-obj (last1 body-objs)))
  +           (merge-obs body-objs
  +                      :type (code-type last-obj)
  +                      :current-line (current-line last-obj)
  +                      :to-block (merge-lines-into-block-list body-objs)
  +                      :multi-vals (multi-vals (last1 body-objs)))))
  +       (make-instance 'code :type (type-spec->type :none)))
      env))
   
   (v-defspecial :progn1 (&rest body)
  
positive.code:       (let ((lvars (mapcar #'(lambda (x y) (list (list x (type->type-spec y))))
                             vars mval-types)))
          (varjo->glsl `(%clone-env-block
                         (%env-multi-var-declare ,lvars t ,glsl-names)
                         ,val-obj
                         ,@body)
                       env)))))
  
negative.code: 
  (v-defspecial %merge-env (env-a new-env)
    :args-valid t
    :return
    (let ((dummy-code-obj (make-instance 'code :current-line "")))
      (values dummy-code-obj (merge-env env-a new-env))))
  
  