anchor.diff:      (when (typep param 'data-parameter/specified-length)
         (let ((size (pi-size-parameter param)))
   	(when (symbolp size)
  -	  (setf (pi-size-parameter param)
  -		(or (find size params :key #'pi-name)
  -		    (error "referenced size parameter not found: ~A"
  -			   size))))))))
  +	  (let ((q (or (find size params :key #'pi-name)
  +		       (error "referenced size parameter not found: ~A"
  +			      size))))
  +	    (setf (pi-size-parameter param) q)
  +	    (setf (size-parameter-p q) t)))))))
   
   (defmethod initialize-instance :after ((instance frame-info) &key)
     (link-size-parameters! (fi-parameters instance))
  -  (check-offsets (fi-parameters instance)))
  +  (check-offsets (fi-parameters instance))
  +  (setf (fi-explicit-parameters instance)
  +	(remove-if #'size-parameter-p (fi-parameters instance))))
   
   ;;;;
   ;;;; PARAMETER-INFO
  
positive.code: (defun fi-nbytes (fi arguments)
    (+ (n-static-bytes fi)
       (loop for arg in arguments
  	   for param in (fi-parameters fi)
  	   when (typep param 'variable-length-data-parameter)
  	   summing (length arg))))
  
  
negative.code: ;;;; command definition macros 
  ;;;;
  
  (defun argnames-from-args (args)
    ;; hack: collect the argument names, expect for data size parameters
    (let ((sizes (loop
  		  :for spec :in (cdr args) :by #'cddr
  		  :for size = (getf (cddr spec) :size)
  		  :when (and size (symbolp size))
  		  :collect size)))
      (loop
         :for key :in args :by #'cddr
         :unless (member key sizes)
         :collect key)))
  
  ;; TRANSLATING THE FORMS INTO COMMANDS
  (defun create-nxt-command-form (name type-code command-code &rest args)
    (let ((argnames (argnames-from-args args)))
      `(progn
         (setf (fp-request (ensure-frame-pair ',name ',type-code ',command-code))
  	     (parse-frame-info ',args))
  