anchor.diff:     :octet-seq-type foreign-pointer
      :code-point-seq-getter babel::string-get
      :code-point-seq-setter babel::string-set
  -   ;; working around an SBCL bug
  -   :code-point-seq-type #+sbcl (simple-array character (*))
  -                        #-sbcl simple-unicode-string))
  +   :code-point-seq-type babel:simple-unicode-string))
   
   (defun null-terminator-len (encoding)
     (length (enc-nul-encoding (get-character-encoding encoding))))
  
positive.code:     (format stream "~S" (fst-encoding type))))
  
  (defmethod translate-to-foreign ((s string) (type foreign-string-type))
    (values (foreign-string-alloc s :encoding (fst-encoding type)) t))
  
  (defmethod translate-to-foreign (obj (type foreign-string-type))
    (cond
      ((pointerp obj)
       (values obj nil))
      ;; ((typep obj '(array (unsigned-byte 8)))
      ;;  (values (foreign-string-alloc obj) t))
      (t (error "~A is not a Lisp string or pointer." obj))))
  
  (defmethod translate-from-foreign (ptr (type foreign-string-type))
    (values (foreign-string-to-lisp ptr :encoding (fst-encoding type))))
  
  (defmethod free-translated-object (ptr (type foreign-string-type) free-p)
    (when free-p
  
negative.code: ;;;# STRING+PTR
  
  (define-foreign-type foreign-string+ptr-type (foreign-string-type)
    ()
    (:simple-parser :string+ptr))
  
  (defmethod translate-from-foreign (value (type foreign-string+ptr-type))
    (list (call-next-method) value))
  