anchor.diff:      (dolist (i (%struct-def name) (queue-list form))
         (enqueue form (car i)))))
   
  -(defmacro defstruct (name &rest fields-and-options)
  +(defun %defstruct-expander (name &rest fields-and-options)
     "Define new structure."
     (multiple-value-bind (flds opts) (%struct-sort-fields fields-and-options)
       (%struct-add-def name flds)
  
positive.code: (defun %struct-sort-fields (fields-and-options)
    "Split list into fields and options."
    (with-queue (f o)
      (mapcar #'((x)
  	             (if (and (consp x) (%struct-option-keyword (car x)))
  	                 (enqueue o x)
  	                 (enqueue f x)))
  	        fields-and-options)
      (values (queue-list f) (queue-list o))))
  
  
negative.code:       ,@(%struct-getters name flds)
        (defmacro ,(make-symbol (string-concat "WITH-" (symbol-name name))) (s &rest body)
  		 `(with-struct ,name ,,s ,,@body)))))
  
  (defmacro defstruct (name &rest fields-and-options)
    (apply #'%defstruct-expander name fields-and-options))
  