Always check for shouldStartCompletion
This is necessary as LSP isn't able to function properly without this as it doesn't get more data from the user who is typing. Consider a user who types:
"abc"
LSP will be sent just 'a', and it has to create completions with this information. "bc" isn't sent to the server and as a result LSP is not able to provide even the most obvious method that should be completed sometimes
There are other issues with the existing approach. LSP 3.16 has added a property 'textEdit', which tells the client exactly what portion of the text will be replaced when the completion is executed. This doesn't work at all if the server doesn't know how much the user has typed. For the server, the user only typed 'a', and thus executing the completion leads to unacceptable results.