anchor.diff:             (write-sequence +crlf+ socket)
              (loop for (name . value) in (reply-headers reply)
                 do (format socket "~:(~A~): ~A" name value)
  -                (write-sequence +crlf+ socket))
  +                (write-sequence +crlf+ socket)
  +                (when (eq :content-length name)
  +                  (setf (reply-chunked-p reply) nil)))
              (write-sequence +crlf+ socket)
              (setf (reply-headers-written-p reply) t)))))
   
  
positive.code:    (write-headers ((reply a)))
     (headers-written-p ((reply a)) :accessorp t)
     (keep-alive-p ((reply a)) :accessorp t)
     (http-server ((reply a)))
     (socket ((reply a))))
    (:prefix reply-))
  
negative.code: (defclass reply (trivial-gray-stream-mixin
                   fundamental-binary-output-stream
                   fundamental-character-output-stream)
    ((headers :accessor reply-headers :initform '((:server . "conserv-http/dev")
                                                  (:transfer-encoding . "chunked")))
     (status :accessor reply-status :initform 200)
     (socket :reader reply-socket :initarg :socket)
     (headers-written-p :accessor reply-headers-written-p :initform nil)
     (http-server :reader reply-http-server :initarg :http-server)
     (keep-alive-p :accessor reply-keep-alive-p :initform t)
     (chunkedp :accessor reply-chunked-p :initform t)))
  
  (defmethod close ((reply reply) &key abort)
    (unless (or (reply-headers-written-p reply) abort)
      (write-headers reply))
    (when (reply-chunked-p reply)
      (format (reply-socket reply) "0~a~a" +crlf+ +crlf+ ))
    (if (reply-keep-alive-p reply)
        ;; TODO - reuse request/reply objects by reinitializing?
        ;;        (use shared-initialize with t for slots)
  