anchor.diff:       poa oid
        (primary-interface servant oid poa))))
   
  +(define-method _is_a ((servant servant) logical-type-id)
  +  (or (equal logical-type-id "IDL:omg.org/CORBA/Object:1.0")
  +      (equal logical-type-id (current-primary-interface servant))
  +      (op:is_a (op:_get_interface servant) logical-type-id)))
  +
  +(define-method _get_interface ((servant servant))
  +  (handler-case
  +      (op:lookup_id (get-ir) (current-primary-interface servant))
  +    (error ()
  +      (error 'corba:intf_repos))))
   
    ;; ----------------------------------------------------------------------
  
positive.code: 
  (define-user-exception POA/InvalidPolicy
      :id "IDL:omg.org/PortableServer/POA/InvalidPolicy:1.0"
      :slots ((index)))
  
  (define-user-exception POA/NoServant
      :id "IDL:omg.org/PortableServer/POA/NoServant:1.0")
  
negative.code: 
  
  ;;;; POA-Current
  
  (defvar *poa-current* nil
    "The current invocation data for the PortableServer::Current object.")
  
  (defun make-poa-current (poa oid) (cons poa oid))
  (defun poa-current-poa (poa-current) (car poa-current))
  (defun poa-current-object-id (poa-current) (cdr poa-current))
  
  
  