title: MongoDB: Typed expressions for nested arrays aren't working when using custom mapping
body: <p>I have following models:</p>
  <pre><code>public class Entity
  {
      public ObjectId Id;
      
      private List&lt;Item&gt; _itemList;
      public virtual IReadOnlyList&lt;Item&gt; ItemList =&gt; _itemList.ToImmutableList();
  }
  
  public class Item
  {
      public string ItemId;
      
      private List&lt;string&gt; _subItemList;
      public virtual IReadOnlyList&lt;string&gt; SubItemList =&gt; _subItemList.ToImmutableList();
  }
  </code></pre>
  <p>In order to get the private members mapped, I setup following mapping:</p>
  <pre><code>public virtual BsonMemberMap MapList&lt;TMember&gt;(Expression&lt;Func&lt;TEntity, TMember&gt;&gt; memberListLambda)
      where TMember : IEnumerable
  {
      var memberExpression = memberListLambda.Body as MemberExpression;
      var fieldName = $&quot;_{memberExpression.Member.Name.ToCamelCase()}&quot;;
      return MapField(fieldName).SetIgnoreIfNull(true);
  }
  </code></pre>
  <p>This mapping actually works well for basic Entity read/write operations but not for the <code>AddToSet</code> below:</p>
  <pre><code>var filter = Builders&lt;Entity&gt;.Filter;
  var update = Builders&lt;Entity&gt;.Update;
  Collection.UpdateManyAsync(
       filter.Eq(e =&gt; e.Id, id) &amp; filter.ElemMatch(e =&gt; e.ItemList, Builders&lt;Item&gt;.Filter.Eq(i =&gt; i.ItemId, itemId)),
       update.AddToSet(e =&gt; e.ItemList[-1].SubItemList, subItemValue));
  </code></pre>
  <p>Error:</p>
  <blockquote>
  <p>Unable to determine the serialization information for e =&gt; e.ItemList</p>
  </blockquote>
  <p>I am wondering if there is any elegant way to make it work?</p>
  <p>Of course if I replace <code>e.ItemList</code> with <code>e._itemList</code> and make <code>_itemList</code> public and same for <code>_subItemList</code>, it works but would break the encapsulation.</p>