anchor.diff:            :typecode typecode
             :fields fields)))))
   
  -#+unused-defuns
  -(defun make-struct-internal (id nv-alist &optional nv-plist)
  -  "Make a CORBA structure of type ID.
  -NV-PAIRS is a list field names and field values."
  -  (let ((class (gethash id *specialized-structs*)))
  -    (if class
  -        (apply #'make-instance class
  -               (or nv-plist
  -                   (mapcan (lambda (x) (list (car x) (cdr x)))
  -                           nv-alist)))
  -      (make-instance 'generic-struct
  -        :type-id id
  -        :fields (or nv-alist
  -                    (loop for (name val) on nv-plist by #'cddr
  -                        collect (cons name val)))))))
  -
   
   (defun struct-in (typecode function arg)
     (let* ((params (typecode-params typecode))
  
positive.code: 
  
  ;; old:
  (defun struct-typecode (id name &rest fields)
    (make-typecode :tk_struct
                   id
  
negative.code:         :fields (loop for (name tc) across members
                        collect (cons (lispy-name name)
                                      (funcall function tc arg)))))))
  
  
  (defmethod struct-out ((struct CORBA:struct) typecode fn dest)
    (let* ((params (typecode-params typecode))
           (members (tcp-members params)))
      (loop for (name tc) across members
           do (funcall fn (struct-get struct name) tc dest))))
  
  #|
  (defmethod struct-out ((struct generic-struct) typecode fn dest)
    (let* ((params (typecode-params typecode))
           (members (tcp-members params)))
      (loop for (name . value) in (fields struct)
           do (funcall fn (field-typecode name members) value dest))))
  
  (defun field-typecode (name members)
    (doseq (m members)
           (loop for (field-name tc) across members
              when (string-equal name field-name)
              return tc)))
  |#
  
  
  
  
  (defmethod struct-get ((struct generic-struct) (field symbol))
  