public FormClassProvider(string xaml, string cs)
        {
            _xaml = xaml;
            var ui = GetXamlUi();

            NamedElements = GetNamedElements(ui);

            cs = PrepareCs(cs);


            _assembly = Compiler.Wpf.Compiler.Compile(out var messages, cs);
            if (_assembly != null)
            {
                _type = _assembly.GetTypes()[0];
            }
            else
            {
                CsErrors = messages.Select(TranslateCsError);
            }
#if DEBUG
            var parser = new CompilerCodeParser(cs);
            parser.FormatCode();
            FinalCode = parser.Code;

            var dummy = Compiler.Wpf.Compiler.Compile(out var m2, FinalCode);
            DebugErrors = m2;
#endif
        }
        private string PrepareCs(string cs)
        {
            var parser    = new CompilerCodeParser(cs);
            var className = parser.NextClass();

            if (className == "")
            {
                return(cs);
            }

            BaseClass = parser.BaseClass();
            if (string.IsNullOrWhiteSpace(BaseClass))
            {
                BaseClass = "TestLegacyForm";
                parser.Insert($" : {BaseClass}");
            }

            parser.BeforeClassContent();

            parser.Insert(",IForm");

            parser.ClassContent();

//            parser.Insert($"public {className}() => InitialiseComponents();");

            parser.Insert(BuildConnectFunction());
            parser.Insert(BuildGetPacketValuesFunction("GetPackedValues", ElementLevel.Capture, ElementLevel.Mandatory, ElementLevel.Result));
            parser.Insert(BuildGetPacketValuesFunction("GetSpecPackedValues", ElementLevel.Specification));

            parser.Insert(InsertFunctions(cs));

            #if DEBUG
            //parser.FormatCode();
            #endif

            return(parser.Code);
        }