title: ConcurrentDictionary Remove() is not accessible
body: <p>So I have this minimal example compiled with .NET 4.7 :</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          IDictionary&lt;int, string&gt; dic = new ConcurrentDictionary&lt;int, string&gt;();
          ConcurrentDictionary&lt;int, string&gt; sameDic = (ConcurrentDictionary&lt;int, string&gt;) dic;
  
          dic.Add(1, "Hold");
          dic.Add(2, "position");
  
          dic.Remove(1); // OK 
          sameDic.Remove(2); // Not even compiling !! 
      }
  }
  </code></pre>
  
  <ul>
  <li>Is it safe then to call <code>dic.Remove(1)</code> ? </li>
  <li>How can I reproduce the same behaviour knowing that the following code is not accepted by the compiler ?</li>
  </ul>
  
  <p>Code : </p>
  
  <pre><code>public interface IFoo
  {
      void B();
  }
  
  public class Bar : IFoo
  {
      private void B() // Not allowed 
      {
      }
  }
  </code></pre>