anchor.diff:  (defun {} (&rest plist)
     (alexandria:plist-hash-table plist :test 'equal))
   
  +(defun merge-table (parent child)
  +  (maphash (lambda (key value)
  +             (setf (gethash key child) value))
  +           parent)
  +  child)
  +
   (defun buffer-language-id (buffer)
     (declare (ignore buffer))
     *language-id*)
  
positive.code:   (setf (gethash buffer (workspace-file-version-table (buffer-workspace buffer))) value))
  
  (defun buffer-uri (buffer)
    (pathname-to-uri (buffer-filename buffer)))
  
  (defun lsp-position (point)
    ({} "line" (1- (lem:line-number-at-point point))
        "character" (lem:point-charpos point)))
  
  (defun lsp-range (start end)
    ({} "start" (lsp-position start)
        "end" (lsp-position end)))
  
  (defun lsp-location (start end)
    (when (lem:point< end start)
      (rotatef start end))
    (let ((buffer (point-buffer start)))
      ({} "uri" (buffer-uri buffer)
          "range" (lsp-range start end))))
  
  (defun workspace-client-capabilities ()
    ({} "applyEdit" 'yason:false
  
negative.code: (define-response-method |window/logMessage| (|type| |message|)
    (format *log-stream* "~A: ~A" |type| |message|))
  
  (defun text-document-did-open (buffer)
    (jsonrpc:notify (workspace-connection (buffer-workspace buffer))
                    "textDocument/didOpen"
                    ({} "textDocument" (text-document-item buffer))))
  
  (defun text-document-did-change (workspace buffer changes)
    (jsonrpc:notify (workspace-connection workspace)
  