title: Why does this code give a "Possible null reference return" compiler warning?
body: <p>Consider the following code:</p>
  
  <pre><code>using System;
  
  #nullable enable
  
  namespace Demo
  {
      public sealed class TestClass
      {
          public string Test()
          {
              bool isNull = _test == null;
  
              if (isNull)
                  return "";
              else
                  return _test; // !!!
          }
  
          readonly string _test = "";
      }
  }
  </code></pre>
  
  <p>When I build this, the line marked with <code>!!!</code> gives a compiler warning: <code>warning CS8603: Possible null reference return.</code>. </p>
  
  <p>I find this a little confusing, given that <code>_test</code> is readonly and initialised to non-null.</p>
  
  <p>If I change the code to the following, the warning goes away:</p>
  
  <pre><code>        public string Test()
          {
              // bool isNull = _test == null;
  
              if (_test == null)
                  return "";
              else
                  return _test;
          }
  </code></pre>
  
  <p>Can anyone explain this behaviour?</p>