protected override sealed void OnInit(EventArgs e)
#pragma warning restore 0809
        {
            if (!_isWxeInfoInitialized)
            {
                _wxeInfo.Initialize(Context);
                _isWxeInfoInitialized = true;
            }

            if (_replacer == null)
            {
                var replacer = new ControlReplacer(new InternalControlMemberCaller());
                replacer.ID = ID + "_Parent";

                _permanentUniqueID = UniqueID.Insert(UniqueID.Length - ID.Length, replacer.ID + IdSeparator);

                IUserControlExecutor userControlExecutor = GetUserControlExecutor();

                WxeUserControl             control;
                IStateModificationStrategy stateModificationStrategy;
                if (!userControlExecutor.IsNull && !userControlExecutor.IsReturningPostBack)
                {
                    Assertion.IsTrue(userControlExecutor.UserControlID == _permanentUniqueID);
                    var currentUserControlStep = (WxeUserControlStep)userControlExecutor.Function.ExecutingStep;
                    control = (WxeUserControl)Page.LoadControl(currentUserControlStep.UserControl);

                    if (!currentUserControlStep.IsPostBack)
                    {
                        stateModificationStrategy = new StateClearingStrategy();
                    }
                    else
                    {
                        stateModificationStrategy = new StateLoadingStrategy();
                    }
                }
                else
                {
                    if (userControlExecutor.IsReturningPostBack)
                    {
                        control = (WxeUserControl)Page.LoadControl(userControlExecutor.BackedUpUserControl);
                        stateModificationStrategy = new StateReplacingStrategy(userControlExecutor.BackedUpUserControlState);
                    }
                    else
                    {
                        control = this;
                        stateModificationStrategy = new StateLoadingStrategy();
                    }
                }

                control.ID = ID;
                control._permanentUniqueID = _permanentUniqueID;
                replacer.ReplaceAndWrap(this, control, stateModificationStrategy);
            }
            else
            {
                CompleteInitialization();
            }
        }
        public void LoadViewState()
        {
            var testPageHolder = new TestPageHolder(false, RequestMode.PostBack);
            IStateModificationStrategy stateModificationStrategy = new StateLoadingStrategy();
            var replacer = new ControlReplacer(MemberCallerMock);

            replacer.StateModificationStrategy = stateModificationStrategy;
            replacer.Controls.Add(testPageHolder.NamingContainer);

            MockRepository.ReplayAll();

            stateModificationStrategy.LoadViewState(replacer, MemberCallerMock);

            MockRepository.VerifyAll();
        }