anchor.diff:  
   (defvar *write-lock* (make-mutex :name "Gypsum display write lock")
     "Write lock used to serialize calls to `with-gypsum-context'.")
  -
  -(defun connect (method &key
  -                         (device "/dev/rfcomm")
  -                         (host "localhost")
  -                         (port 8888))
  -  "Connects to a Gypsum server. Method must be one of :TCP or :RFCOMM. If
  -:RFCOMM is specified, then the client will connect via BlueZ's rfcomm mechanisms
  -as done via `connect-via-rfcomm'. If :TCP is specified, then the client will
  -connect via TCP, as per `connect-via-tcp'.
  -
  -Keyword flags defined are:
  -  :device
  -    The device to connect via RFCOMM with. Defaults to /dev/rfcomm0.
  -
  -  :host
  -    The hostname to connect to via TCP. Defaults to localhost.
  -
  -  :port
  -    The port to connect to via TCP. Defaults to 8888.
  -
  -Returns the newly opened command stream."
  -  (clrhash *cached-params-hash-table*)
  -  (setf *command-stream*
  -        (cond ((eq method :tcp) (connect-via-tcp :host host :port port))
  -              ((eq method :rfcomm) (connect-via-rfcomm :device device))
  -              (t (error "Expected either :TCP or :RFCOMM as a connect method.")))))
   
   (defun connect-via-rfcomm (&key (device "/dev/rfcomm0"))
     "Connects to a Gypsum server via a BlueZ RFCOMM device. If DEVICE is
  
positive.code:                       :output t
                        :auto-close t))
  
  (defun disconnect ()
    "Closes and disconnects the Gypsum command stream and (if connected) TCP
  socket."
  
negative.code:   (when *tcp-socket*
      (socket-close *tcp-socket*)
      (setf *tcp-socket* nil)))
  
  (defun deduplicate-params-in-form (form)
    "Iterates through the a Gypsum parameter list of the form (:field value
  