anchor.diff:  ;; export -- return export list 
   (defxtype* groups () (:optional group-node))
   
  -(defxstruct group-node ()
  -  (name name)
  -  (next groups))
  +(defxtype* group-node () 
  +  (:plist :name name :next groups))
   
   (defxtype* exports () (:optional export-node))
   
  
positive.code: (defrpc call-unmount 3 dir-path :void
    (:arg-transformer (dpath) dpath))
  
  ;; FIXME: when we support keeping a list of mounted clients we should 
  ;; remove the client from this list 
  (defhandler %handle-unmount (dpath 3)
    (let ((provider (nefarious:find-provider dpath)))
      (cond
        (provider
         ;; remove the client from the provider's client list 
         (setf (nefarious:provider-clients provider)
  	     (remove *rpc-remote-host* (nefarious:provider-clients provider) 
  		     :test #'equalp))
         ;; tell the provider about it 
         (nefarious:nfs-provider-unmount provider *rpc-remote-host*)
         nil)
        (t 
         nil))))
  
negative.code:   (let ((provider (nefarious:find-provider dpath)))
      (cond 
        (provider
         ;; get the mount handle 
         (handler-case 
             (let ((dhandle (nefarious:nfs-provider-mount provider *rpc-remote-host*)))
               ;; push the client onto the provider's client list 
               (pushnew *rpc-remote-host* (nefarious:provider-clients provider) :test #'equalp)         
               (make-xunion :ok
                            (list (nefarious:provider-handle-fh provider dhandle)
                                  '(:auth-null))))
           (error (e)
             (log:debug "error ~A" e)
             (make-xunion :access nil))))
        (t 
         ;; no provider registered on that path
         (make-xunion :inval nil)))))
  