title: Adding null to a List<bool?> cast as an IList throwing an exception
body: <p>Using .NET 3.5 and C# 3.0,</p>
  
  <pre><code>IList list = new List&lt;bool?&gt;();
  list.Add(null);
  </code></pre>
  
  <p>This throws an ArgumentException, which just feels wrong.</p>
  
  <pre><code>List&lt;bool?&gt; list = new List&lt;bool?&gt;();
  list.Add(null);
  </code></pre>
  
  <p>Works perfectly.</p>
  
  <p>Is this a bug in Microsoft's code, then?</p>
  
  <p>An example of how to produce this kind of error in a real-life situation:</p>
  
  <pre><code>new JavaScriptSerializer().Deserialize&lt;List&lt;bool?&gt;&gt;("[true, false, null]");
  </code></pre>