anchor.diff:              :transform "discard()"
               :context-restriction '(:fragment))
   
  +;; [TODO] why does this need semicolon?
   (glsl-defun :name 'break
               :in-args '()
               :output-type :none
  -            :transform "break"
  +            :transform "break;"
               :context-restriction '((:330)))
   
   (glsl-defun :name 'continue
  
positive.code:              (name (if (eq name :main) :main name))
               (returns (returns body-obj))
               (type (if (eq name :main) '(:void nil nil) 
                         (code-type body-obj))))
          (let ((name (safe-gl-name name)))
            (if (or (not returns) (every (equalp! type) returns)) 
                (make-instance 
                 'code :type type
                 :current-line nil
  
negative.code:                            (current-line length) 
                             (mapcar #'current-line contents)))))
  
  ;;[TODO] arg names arent always safe (try anything with a hyphon)
  (vdefspecial %make-function (name args &rest body)
    (let ((name (if (eq name :main) :main (symb '-f name))))
      (destructuring-bind (form-objs new-vars)
  