Clangd currently throws away any protocol messages whenever an optional
field has an unexpected type. This patch changes the behaviour to treat such
fields as missing.
This enables clangd to be more tolerant against small violations to the LSP
spec.
I would call this tryMap for brevity