anchor.diff:      // result: WorkspaceEdit describing the modification to the workspace.
       // error: code and message set in case an exception happens during the rename request.
   
  +// TODO 
  +
  +[<NoComparison>]
  +type Request =
  +    | Initialize of Initialize.Params
  +    | Shutdown
  +    | ShowMessage of ShowMessage.Params
  +    | Completion of TextDocumentPositionParams
  +    | CompletionItemResolve of CompletionItem
  +    | Hover of TextDocumentPositionParams
  +    | SignatureHelp of TextDocumentPositionParams
  +    | GotoDefinition of TextDocumentPositionParams
  +    | FindReferences of FindReferences.Params
  +    | DocumentHighlights of TextDocumentPositionParams
  +    | DocumentSymbols of DocumentSymbols.Params
  +    | WorkspaceSymbols of WorkspaceSymbols.Params
  +    | CodeAction of CodeAction.Params
  +    | CodeLens of CodeLensRequest.Params
  +    | CodeLensResolve of CodeLens
  +    | DocumentFormatting of DocumentFormatting.Params
  +    | DocumentRangeFormatting of DocumentRangeFormatting.Params
  +    | DocumentOnTypeFormatting of DocumentOnTypeFormatting.Params
  +    | Rename of Rename.Params
  +
  +[<NoComparison>]
  +type Response =
  +    | Initialize of Initialize.Result
  +    | ShowMessage of ShowMessage.MessageActionItem
  +    | Completion of Completion.CompletionList
  +    | CompletionItemResolve of CompletionItem
  +    | Hover of Hover.Hover
  +    | SignatureHelp of SignatureHelp.SignatureHelp
  +    | GotoDefinition of Location list
  +    | FindReferences of Location list
  +    | DocumentHighlights of DocumentHighlights.DocumentHighlight list
  +    | DocumentSymbols of SymbolInformation list
  +    | WorkspaceSymbols of SymbolInformation list
  +    | CodeAction of Command list
  +    | CodeLens of CodeLens list
  +    | CodeLensResolve of CodeLens
  +    | DocumentFormatting of TextEdit list
  +    | DocumentRangeFormatting of TextEdit list
  +    | DocumentOnTypeFormatting of TextEdit list
  +    | Rename of WorkspaceEdit
  +
  +[<NoComparison>]
  +type Notification =
  +    | Exit
  +    | ShowMessage of ShowMessageNotification.Params
  +    | LogMessage of LogMessageNotification.Params
  +    | Telemetry of obj
  +    | DidChangeConfiguration of DidChangeConfigurationNotification.Params
  +    | DidOpenTextDocument of DidOpenTextDocumentNotification.Params
  +    | DidChangeTextDocument of DidChangeTextDocumentNotification.Params
  +    | DidCloseTextDocument of DidCloseTextDocumentNotification.Params
  +    | DidSaveTextDocument of DidSaveTextDocumentNotification.Params
  +    | DidChangeWatchedFiles of DidChangeWatchedFilesNotification.Params
  +    | PublishDiagnostics of PublishDiagnosticsNotification.Params
  +
  +
  +
  +/// ************** Top level messages **************
  +
  +
  +/// A request message to describe a request between the client and the server. Every processed request must 
  +/// send a response back to the sender of the request.
  +[<NoComparison>]
  +type RequestMessage =
  +    { /// JSON-RPC version.
  +      Jsonrpc: string
  +      /// The request id.
  +      Id: int
  +      /// The method to be invoked.
  +      Method: string
  +      /// The method's params.
  +      Params: Request option }
  +
  +type ErrorCode =
  +    | ParseError = -32700
  +    | InvalidRequest = -32600
  +    | MethodNotFound = -32601
  +    | InvalidParams = -32602
  +    | InternalError = -32603
  +    | ServerErrorStart = -32099
  +    | ServerErrorEnd = -32000
  +
  +[<NoComparison>]
  +type ResponseError =
  +    { /// A number indicating the error type that occurred.
  +      Code: ErrorCode
  +      /// A string providing a short description of the error.
  +      Message: string
  +      /// A Primitive or Structured value that contains additional
  +      /// information about the error. Can be omitted.
  +      Data: obj }
  +
  +/// Response Message sent as a result of a request.
  +[<NoComparison>]
  +type ResponseMessage =
  +    { /// JSON-RPC version.
  +      Jsonrpc: string
  +      /// The request id.
  +      Id: int
  +      /// The result of a request. This can be omitted in the case of an error.
  +      Result: Response option
  +      /// The error object in case a request fails.
  +      Error: ResponseError option }
  +
  +/// A notification message. A processed notification message must not send a response back. They work like events.
  +[<NoComparison>]
  +type NotificationMessage =
  +     { /// JSON-RPC version.
  +       Jsonrpc: string
  +       /// The method to be invoked.
  +       Method: string
  +       /// The notification's params.
  +       Params: Notification option }
  
positive.code: /// it is expensive to compute. When the item is selected in the user interface then a 'completionItem/resolve' request 
  /// is sent with the selected completion item as a param. The returned completion item should have the documentation property 
  /// filled in.
  module CompletionRequest =
      let ``method`` = "textDocument/completion"
  
      // params: TextDocumentPositionParams
  
negative.code:           IsIncomplete: bool
            /// The completion items.
            Items: CompletionItem list }
  
      // error: code and message set in case an exception happens during the completion request.
  
  /// The request is sent from the client to the server to resolve additional information for a given completion item.
  module CompletionItemResolve =
      let ``method`` = "completionItem/resolve"
  
      // params: CompletionItem
  