private static void BuildServerSidePage(Control nativeRoot, PageCompositionElement pp)
        {
            foreach (var kvp in pp.PlaceHolders)
            {
                var placeHolder = kvp.Value;

                Control contentPlaceHolder = nativeRoot.FindControl(placeHolder.Id);

                if (contentPlaceHolder == null)
                {
                    throw new Exception("Placeholder " + placeHolder.Id + " does not exist.");
                }

                foreach (var placedRendering in placeHolder.Renderings)
                {
                    if (placedRendering is WebFormsControlPageCompositionElement)
                    {
                        WebFormsControlPageCompositionElement webFormsCompositionElement = ((WebFormsControlPageCompositionElement)placedRendering);
                        AddRenderHtmlDirective(webFormsCompositionElement, contentPlaceHolder);

                        var control = webFormsCompositionElement.GetControl();
                        BuildServerSidePage(control, placedRendering);
                    }
                    else
                    {
                        var directive = AddDoNotRenderDirective(placedRendering, contentPlaceHolder);
                        BuildServerSidePage(directive, placedRendering);
                    }
                }
            }
        }
            public void Initialize()
            {
                var control = _pp.GetControl();

                RenderHtmlFor = control.GetType().Name;
                Controls.Add(control);

                foreach (var ph in _pp.PlaceHolders.Values)
                {
                    var contentPlaceHolder = control.FindControl(ph.Id);
                    if (contentPlaceHolder == null)
                    {
                        throw new Exception(
                                  $"Placeholder with id '{ph.Id}' cannot be found in the '{control.ID}' naming container.");
                    }

                    contentPlaceHolder.Controls.Add(new SubsitutionHtmlWriterDirective(ph));
                }
            }