anchor.diff:  						(push inline struct-template-info)))
   				(t (error "Invalid slot option: ~A~%" opt))))
   
  -		(setq struct-template 
  -			(apply #'define-struct-template name (intern-structure-class name (mapcar 'find-class base-list)) struct-type 
  +		(setq struct-template
  +			(apply #'define-struct-template name (unless struct-type (intern-structure-class name base doc-string)) struct-type
   					base-list initial-offset slot-count (reverse struct-template-info)))
   
   		;; install template		
  
positive.code: (provide :structures)
  (in-package :common-lisp)
  
  (defun intern-structure-class (name superclasses) 
  	(declare (ignore name superclasses))) ;; redefined by CLOS
  
  (defun define-struct-template (name class type base initial-offset num-slots &rest fields)
  	(apply 'vector name class type base initial-offset num-slots fields))
  
negative.code: 
  		(push `',name expressions)	
  		`(progn
  			(let* ((,struct-template-sym
                                                              (apply 'define-struct-template ',name
                              ,(unless struct-type `(intern-structure-class ',name ',base ,doc-string))
                              ',struct-type 
  						',base-list ,initial-offset ,slot-count ',(reverse struct-template-info)))) 
  				,@(reverse struct-template-expressions))
  			,@(nreverse expressions))))
  
  