title: .net 5.0 signature change of System.Text.Json.JsonSerializer.Deserialize()
body: <p>I am attempting the step from .NET Core 3.1 to .NET 5.0 and get a bunch of nullability warnings at the uses of <code>Deserialize&lt;TValue&gt;(String, JsonSerializerOptions)</code>. A quick investigation shows that the signature has changed from</p>
  <p><code>public static TValue Deserialize&lt;TValue&gt; (string json, System.Text.Json.JsonSerializerOptions options = default);</code> (<a href="https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializer.deserialize?view=netcore-3.1#System_Text_Json_JsonSerializer_Deserialize__1_System_String_System_Text_Json_JsonSerializerOptions_" rel="nofollow noreferrer">doc</a>) in .NET Core 3.1 to</p>
  <p><code>public static TValue? Deserialize&lt;TValue&gt; (string json, System.Text.Json.JsonSerializerOptions? options = default);</code> (<a href="https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializer.deserialize?view=net-5.0#System_Text_Json_JsonSerializer_Deserialize__1_System_String_System_Text_Json_JsonSerializerOptions_" rel="nofollow noreferrer">doc</a>) in .NET 5.0.</p>
  <p>It looks as a reasonable change, but I haven't been able to provoke a null to actually be returned, since all bad input/bad use will throw an exception in my experiments, and the documentation does not describe why the call would return a null as far as I can tell.</p>
  <p>It seems a bit unnecessary to add null return checks to all our uses, if failed deserialization will throw rather than returning null.</p>
  <p>What am I missing?</p>