Currently, we implement the LSP initialize method to set up our server's internal state (workspace directory, configuration, etc.). However, since the server object must be created before initialize is called, all internal state needs to be wrapped in Mutex to allow mutation during initialization.
The proposed solution is to handle initialization outside the LSP trait implementation, then pass the initialized state when creating the server object. This would eliminate the need for Mutex wrappers around initialization data.