anchor.diff:  ;; (aref (namespace-registry-namespace-table *r*) 0)
   
   
  - (ensure-prefix "bar" *foo.ex* *r*)
  + (bind-prefix "bar" *foo.ex* *r*)
    ;; ^ call multiple times, should not be duplicating prefixes
   
    (handler-case
  -     (ensure-prefix "bar" "http://bar.example.com/" *r*)
  +     (bind-prefix "bar" "http://bar.example.com/" *r*)
      (namespace-prefix-unbind (c)
        (warn "Caught unbind signal: ~s" c)
        (continue c)))
  
positive.code:  ;;    => 2
  
   (handler-case
       (ensure-prefix (string (gensym "NS-")) "http://bar.example.com/" *r*)
     (namespace-prefix-bind (c)
       (warn "Caught bind signal: ~s" c)
       (continue c)))
  
negative.code: 	;; 1.B.A) if so, return
  	;; 1.B.B) if not, add prefix to namespace, emit signal
  	;;        PREFIX-BIND
  	(multiple-value-bind (ns ns-new-p)
  	    (compute-namespace uri registry ensure-p)
  	  (flet ((add-prefix ()
  		   (assert-not-finalized ns
  					 "Unable to add prefix ~s"
  					 pfx)
  		   ;; FIXME: Thread safety onto NS - lock NS
  		   (vector-push-extend pfx (namespace-prefix-table ns)
  				       #.+qname-buffer-extent+)
  		   (restart-case
  		       (signal 'namespace-prefix-bind
  			       :namespace ns
  			       :name pfx)
  			(continue))
  		   (values ns pfx)))
  	    (cond
  	      (ns-new-p (add-prefix))
  	      (t
  	       (let ((pf-p (find-prefix pfx ns)))
  		 (cond
  