anchor.diff:  (defun (setf buffer-file-version) (value buffer)
     (setf (gethash buffer (workspace-file-version-table (buffer-workspace buffer))) value))
   
  +(defun buffer-text (buffer)
  +  (lem:points-to-string (lem:buffer-start buffer)
  +                        (lem:buffer-end buffer)))
  +
   (defun buffer-uri (buffer)
     (pathname-to-uri (lem:buffer-filename buffer)))
   
  
positive.code:                   ({} "textDocument" (versioned-text-document-identifier buffer)
                        "contentChanges" changes)))
  
  (defun text-document-will-save (buffer &optional (reason |TextDocumentSaveReason.Manual|))
    (jsonrpc:notify (workspace-connection (buffer-workspace buffer))
                    "textDocument/willSave"
                    ({} "textDocument"
                        "reason" reason)))
  
  (defun text-document-will-save-wait-until (buffer &optional (reason |TextDocumentSaveReason.Manual|))
    (jsonrpc:notify (workspace-connection (buffer-workspace buffer))
                    "textDocument/willSaveWaitUntil"
                    ({} "textDocument"
                        "reason" reason)))
  
  (defun text-document-content-change-event (point string-or-number)
    (let ((start-position (lsp-position point)))
      (etypecase string-or-number
  
negative.code:                            "end" end-position)
                 "rangeLength" (lem:count-characters end point)
                 "text" "")))))))
  
  (defun text-document-will-save (buffer &optional (reason |TextDocumentSaveReason.Manual|))
    (jsonrpc:notify (workspace-connection (buffer-workspace buffer))
                    "textDocument/willSave"
                    ({} "textDocument"
                        "reason" reason)))
  
  (defun text-document-will-save-wait-until (buffer &optional (reason |TextDocumentSaveReason.Manual|))
    (let ((workspace (buffer-workspace buffer)))
      (jsonrpc:notify (workspace-connection workspace)
                      "textDocument/willSaveWaitUntil"
                      ({} "textDocument"
                          "reason" reason))))
  
  (defun text-document-did-save (buffer)
    (jsonrpc:notify (workspace-connection (buffer-workspace buffer))
                    "textDocument/didSave"
                    ({} "textDocument" (text-document-identifier buffer)
                        #|"text" (buffer-text buffer)|#)))
  
  (defun text-document-did-close (buffer))
  
  (defun hover-contents-to-string (contents)
    (typecase contents
  