public override void WriteStartObject(XamlType xamlType)
 {
     this.ThrowIfDisposed();
     if (xamlType == null)
     {
         throw new ArgumentNullException("xamlType");
     }
     this._deferringWriter.WriteStartObject(xamlType);
     if (!this._deferringWriter.Handled)
     {
         if (this._nextNodeMustBeEndMember)
         {
             string message = System.Xaml.SR.Get("ValueMustBeFollowedByEndMember");
             throw this.WithLineInfo(new XamlObjectWriterException(message));
         }
         if (xamlType.IsUnknown)
         {
             string str2 = System.Xaml.SR.Get("CantCreateUnknownType", new object[] { xamlType.GetQualifiedName() });
             throw this.WithLineInfo(new XamlObjectWriterException(str2));
         }
         if ((this._context.CurrentType != null) && (this._context.CurrentProperty == null))
         {
             string str3 = System.Xaml.SR.Get("NoPropertyInCurrentFrame_SO", new object[] { xamlType.ToString(), this._context.CurrentType.ToString() });
             throw this.WithLineInfo(new XamlObjectWriterException(str3));
         }
         this._lastInstance = null;
         if (this._context.CurrentType != null)
         {
             this._context.PushScope();
         }
         this._context.CurrentType = xamlType;
         if ((this._context.LiveDepth == 1) && (this._rootObjectInstance != null))
         {
             XamlType type = this.GetXamlType(this._rootObjectInstance.GetType());
             if (!type.CanAssignTo(this._context.CurrentType))
             {
                 throw new XamlParseException(System.Xaml.SR.Get("CantAssignRootInstance", new object[] { type.GetQualifiedName(), xamlType.GetQualifiedName() }));
             }
             this._context.CurrentInstance = this._rootObjectInstance;
             if (this._context.CurrentType.IsCollection || this._context.CurrentType.IsDictionary)
             {
                 this._context.CurrentCollection = this._rootObjectInstance;
             }
             this.Logic_BeginInit(this._context);
         }
     }
 }