anchor.diff:      (setf (workspace-server-capabilities workspace)
             (gethash "capabilities" response))))
   
  -(defun method-initialized (workspace)
  +(defun initialized (workspace)
     (jsonrpc:notify (workspace-connection workspace) "initialized" ({})))
   
  -(defun method-shutdown (workspace)
  +(defun shutdown (workspace)
     (jsonrpc:call (workspace-connection workspace) "shutdown" ({})))
   
  -(defun method-exit (workspace)
  +(defun exit (workspace)
     (jsonrpc:notify (workspace-connection workspace) "exit" ({})))
   
   (define-response-method |window/showMessage| (|type| |message|)
  
positive.code: (defparameter *root-path* (probe-file "."))
  (defparameter *language-id* "go")
  
  (defvar *response-methods* '())
  
  (defmacro define-response-method (name (&rest vars) &body body)
    (alexandria:with-gensyms (params)
  
negative.code: (defun pathname-to-uri (pathname)
    (format nil "file://~A" pathname))
  
  (defun {} (&rest plist)
    (alexandria:plist-hash-table plist :test 'equal))
  
  (defun buffer-language-id (buffer)
    (declare (ignore buffer))
    *language-id*)
  
  (defun buffer-workspace (buffer)
    (gethash (buffer-language-id buffer) *workspaces*))
  
  (defun buffer-file-version (buffer)
    (gethash buffer (workspace-file-version-table (buffer-workspace buffer)) 0))
  
  (defun (setf buffer-file-version) (value buffer)
    (setf (gethash buffer (workspace-file-version-table (buffer-workspace buffer))) value))
  
  (defun workspace-client-capabilities ()
    ({} "applyEdit" 'yason:false
  