protected override void OnWriteStartObject ()
{
var state = object_states.Pop ();
if (object_states.Count > 0) {
var pstate = object_states.Peek ();
if (CurrentMemberState.Value != null)
throw new XamlDuplicateMemberException (String.Format ("Member '{0}' is already written to current type '{1}'", CurrentMember, pstate.Type));
}
object_states.Push (state);
if (!state.Type.IsContentValue (service_provider))
InitializeObjectIfRequired (true);
}