anchor.diff:  
   (defmacro unmarshal-sequence-m ((buffer &key (el-type t))
                                      &body el-read)
  -  `(loop with buffer = ,buffer
  -       with len = (unmarshal-ulong buffer) 
  -       with r = (make-array len :element-type ,el-type)
  -       for i from 0 below len
  -       do (setf (svref r i) (progn ,@el-read))
  -       finally (return r)))
  +  (let ((len (gensym))
  +        (r (gensym))
  +        (i (gensym)))
  +    `(loop with buffer = ,buffer
  +           with ,len = (unmarshal-ulong buffer) 
  +           with ,r = (make-array ,len :element-type ,el-type)
  +           for ,i from 0 below ,len
  +           do (setf (svref ,r ,i) (progn ,@el-read))
  +           finally (return ,r))))
   
   (defun unmarshal-sequence (el-reader buffer &optional (el-type t))
     (unmarshal-sequence-m (buffer :el-type el-type)
  
positive.code:             (let ((vals (unmarshal-multiple (cdr params) buffer)))
                (when (eq tk :tk_union)
                  (nconc vals
                         (list (unmarshal-sequence-m
                                (buffer :el-type t)
                                (list (unmarshal (third vals) buffer)
                                      (unmarshal-string buffer)
                                      (unmarshal-typecode buffer))))))
                (setf (typecode-params typecode) vals))))
           (t
            (setf (typecode-params typecode) 
  
negative.code:     (values msgtype iiop-version)))
  
  (defun unmarshal-service-context (buffer)
    (unmarshal-sequence-m (buffer) 
      (IOP:ServiceContext :context_id (unmarshal-ulong buffer)
  	                :context_data (unmarshal-osequence buffer))))
  