anchor.diff:  
   
   
  -(defmacro def-encrecord (name-and-options &rest doc-and-fields)
  +(defmacro def-encrecord (name-and-options &body doc-and-fields)
     "
   DO:     Defines an enctype template for a record type,
           a lisp structure with the same name,
  
positive.code:     `(progn
         (def-enctype ,name ()
           (record :name ,name ,@options ,@(unless (getf options :lisp-type)
                                                   (list :lisp-type name))
                   ,@(when documentation
                           (list :documentation documentation))
                   :fields ,fields))
         (defstruct ,name  ,@(when documentation
                                   (list :documentation documentation))
                    ,@(mapcar (lambda (oof)
                                (let ((enctype (enctype-instance (second oof))))
                                  `(,(first oof) ,(default-value enctype)
                                     :type ,(to-lisp-type enctype))))
                              fields))
         (let ((enctype (enctype-instance ',name)))
           (setf (name enctype) ',name)
           (defun ,(conc-symbol "READ-" name)  (stream)
             (enctype-read  ',name enctype stream))
           (defun ,(conc-symbol "WRITE-" name) (value stream)
             (enctype-write ',name enctype stream value))
           ',name))))
  
  
  
  
negative.code: "
    ;; TODO: make it more deftype - like.
    ;; TODO: we cannot create an instance because a def-enctype is actually a template.  But not when there's no argument! So we could create the reader and writer sometimes.
    `(eval-when (:compile-toplevel :load-toplevel :execute)
       (make-enctype ',name ',args ',definition)))
  
  
  (defun even-list-p (list)
  