private void Write102_NameFilter(string n, string ns, NameFilter 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(NameFilter))
             {
                 if (type == typeof(VirtualItemFullNameFilter))
                 {
                     this.Write112_VirtualItemFullNameFilter(n, ns, (VirtualItemFullNameFilter) o, isNullable, true);
                     return;
                 }
                 if (type != typeof(VirtualItemNameFilter))
                 {
                     throw base.CreateUnknownTypeException(o);
                 }
                 this.Write103_VirtualItemNameFilter(n, ns, (VirtualItemNameFilter) o, isNullable, true);
                 return;
             }
         }
         base.WriteStartElement(n, ns, o, false, null);
         if (needType)
         {
             base.WriteXsiType("NameFilter", "");
         }
         if (o.NameCondition != NamePatternCondition.Equal)
         {
             base.WriteElementString("NameCondition", "", this.Write100_NamePatternCondition(o.NameCondition));
         }
         base.WriteElementString("NameComparision", "", this.Write101_NamePatternComparision(o.NameComparision));
         base.WriteElementString("NamePattern", "", o.NamePattern);
         base.WriteEndElement(o);
     }
 }