anchor.diff:     "Compute the TypeCode from the attributes other than type."))
   
   (define-method type ((def irtypecode-mixin))
  -  (unless (slot-boundp def 'type)
  -    (setf (slot-value def 'type)
  -      (idltype-tc def)))
  -  (slot-value def 'type))
  +  ;; Get the typecode for an IDL construct.
  +  ;; The typecode is lazily constructed and recursive typecodes handled.
  +  ;; The specific typcodes are handled ny the idltype-tc function.
  +  (cond ((slot-boundp def 'type)
  +         ;; Either the typecode is computed already or this is a recursive call
  +         ;; during computation.
  +         (let ((tc (slot-value def 'type)))
  +           (cond ((eq t tc)
  +                  ;; Beeing computed, make a placeholder typecode.
  +                  ;; This typecode will be filled when the computation is done.
  +                  (setf (slot-value def 'type) (make-typecode t)))
  +                 (t
  +                  tc))))
  +        (t
  +         ;; Typecode not defined, start computation
  +         ;; mark computation with a t in the slot
  +         (setf (slot-value def 'type) t)
  +         (let* ((new-tc (idltype-tc def))
  +                (old-tc (slot-value def 'type)))
  +           (cond ((eq old-tc t)
  +                  (setf (slot-value def 'type) new-tc))
  +                 (t
  +                  ;; therse was a recurive access during computation
  +                  (typecode-smash old-tc new-tc)
  +                  old-tc))))))
  +
   
   (defmethod slot-updated :after ((obj irtypecode-mixin))
     (slot-makunbound obj 'type))
  
positive.code:   :id "IDL:omg.org/CORBA/ModuleDef:1.0"
    :def_kind :dk_module
    :defaults ())
  
  (defparameter *module-description*
      (struct-typecode
       "IDL:omg.org/CORBA/ModuleDescription:1.0"
       "ModuleDescription"
       "name" CORBA:tc_string             ; Identifier
       "id" CORBA:tc_string               ; RepositoryId
       "defined_in" CORBA:tc_string       ; RepositoryId
       "version" CORBA:tc_string          ; VersionSpec
       #||#))
  
  
  (defmethod describe-contained ((module module-def))
  
negative.code: ;;;; clorb-ifr.lisp -- An Interface Repository Implementation
  ;; $Id: clorb-ifr.lisp,v 1.4 2002/10/28 18:29:01 lenst Exp $
  
  (in-package :clorb)
  
  