private void Write109_FilterContainer(string n, string ns, FilterContainer o, bool isNullable, bool needType)
 {
     if (o == null)
     {
         if (isNullable)
         {
             base.WriteNullTagLiteral(n, ns);
         }
     }
     else
     {
         if (!needType)
         {
             System.Type type = o.GetType();
             if (type != typeof(FilterContainer))
             {
                 if (type == typeof(PanelContentContainer))
                 {
                     this.Write172_PanelContentContainer(n, ns, (PanelContentContainer) o, isNullable, true);
                     return;
                 }
                 if (type == typeof(NamedFilter))
                 {
                     this.Write110_NamedFilter(n, ns, (NamedFilter) o, isNullable, true);
                     return;
                 }
                 if (type == typeof(VirtualHighligher))
                 {
                     this.Write114_VirtualHighligher(n, ns, (VirtualHighligher) o, isNullable, true);
                     return;
                 }
                 if (type != typeof(ListViewHighlighter))
                 {
                     throw base.CreateUnknownTypeException(o);
                 }
                 this.Write115_ListViewHighlighter(n, ns, (ListViewHighlighter) o, isNullable, true);
                 return;
             }
         }
         base.WriteStartElement(n, ns, o, false, null);
         if (needType)
         {
             base.WriteXsiType("FilterContainer", "");
         }
         if (o.SerializableFilter != null)
         {
             if (o.SerializableFilter is VirtualItemSizeFilter)
             {
                 this.Write98_VirtualItemSizeFilter("SizeFilter", "", (VirtualItemSizeFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemDateFilter)
             {
                 this.Write99_VirtualItemDateFilter("DateFilter", "", (VirtualItemDateFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemHexContentFilter)
             {
                 this.Write105_VirtualItemHexContentFilter("HexContentFilter", "", (VirtualItemHexContentFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemTimeFilter)
             {
                 this.Write91_VirtualItemTimeFilter("TimeFilter", "", (VirtualItemTimeFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemContentFilter)
             {
                 this.Write87_VirtualItemContentFilter("ContentFilter", "", (VirtualItemContentFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemAttributeFilter)
             {
                 this.Write94_VirtualItemAttributeFilter("AttributeFilter", "", (VirtualItemAttributeFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemNameFilter)
             {
                 this.Write103_VirtualItemNameFilter("NameFilter", "", (VirtualItemNameFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is AggregatedVirtualItemFilter)
             {
                 this.Write108_AggregatedVirtualItemFilter("AggregatedFilter", "", (AggregatedVirtualItemFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualPropertyFilter)
             {
                 this.Write84_VirtualPropertyFilter("PropertyFilter", "", (VirtualPropertyFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter is VirtualItemNameListFilter)
             {
                 this.Write107_VirtualItemNameListFilter("NameListFilter", "", (VirtualItemNameListFilter) o.SerializableFilter, false, false);
             }
             else if (o.SerializableFilter != null)
             {
                 throw base.CreateUnknownTypeException(o.SerializableFilter);
             }
         }
         base.WriteEndElement(o);
     }
 }