title: Nullable reference type and implementing interfaces
body: <p>When using &quot;Implement interface&quot; quick action for <a href="https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifypropertychanged" rel="nofollow noreferrer">INotifyPropertyChanged</a> interface I am getting</p>
  <pre><code>class Test : INotifyPropertyChanged
  {
      public event PropertyChangedEventHandler? PropertyChanged;
  }
  </code></pre>
  <p>The nullable reference type is expected, this force me to use <code>?.Invoke()</code> rather than getting <code>NullReferenceException</code>.</p>
  <p>However for <a href="https://docs.microsoft.com/en-us/dotnet/api/system.windows.data.ivalueconverter" rel="nofollow noreferrer">IValueConverter</a> it's:</p>
  <pre><code>class Converter : IValueConverter
  {
      public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
      {
          throw new NotImplementedException();
      }
  
      public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
      {
          throw new NotImplementedException();
      }
  }
  </code></pre>
  <p>I expect instead to see <code>object?</code> everywhere for method arguments and return types. Why is it not?</p>
  <p>Should I manually do this change?</p>
  <hr />
  <p>Another thing I noticed:</p>
  <pre><code>interface IA
  {
      object? Test(object? arg);
  }
  
  class A : IA
  {
      public object? Test(object? arg)
      {
          throw new NotImplementedException();
      }
  }
  
  interface IB
  {
      object Test(object arg);
  }
  
  class B : IB
  {
      public object Test(object arg)
      {
          throw new NotImplementedException();
      }
  }
  </code></pre>
  <p>Means the &quot;Implement interface&quot; quick action simply follows the method signatures from interface definition. Does this means that the signature of all standard library interfaces needs to be updated?</p>
  <p>I am using VS2022 preview 4 and .Net 6.0 btw.</p>