//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Diagnostics.CodeAnalysis;


namespace Lab.Mvvm
{
    public partial class App : global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider
    {
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
        private global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMetaDataProvider __appProvider;

        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        private global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMetaDataProvider _AppProvider
        {
            get
            {
                if (__appProvider == null)
                {
                    __appProvider = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMetaDataProvider();
                }
                return __appProvider;
            }
        }

        /// <summary>
        /// GetXamlType(Type)
        /// </summary>
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public global::Microsoft.UI.Xaml.Markup.IXamlType GetXamlType(global::System.Type type)
        {
            return _AppProvider.GetXamlType(type);
        }

        /// <summary>
        /// GetXamlType(String)
        /// </summary>
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public global::Microsoft.UI.Xaml.Markup.IXamlType GetXamlType(string fullName)
        {
            return _AppProvider.GetXamlType(fullName);
        }

        /// <summary>
        /// GetXmlnsDefinitions()
        /// </summary>
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public global::Microsoft.UI.Xaml.Markup.XmlnsDefinition[] GetXmlnsDefinitions()
        {
            return _AppProvider.GetXmlnsDefinitions();
        }
    }
}

namespace Lab.Mvvm.Lab_Mvvm_XamlTypeInfo
{
    /// <summary>
    /// Main class for providing metadata for the app or library
    /// </summary>
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class XamlMetaDataProvider : global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider
    {
        private global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider _provider = null;

        private global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider Provider
        {
            get
            {
                if (_provider == null)
                {
                    _provider = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider();
                }
                return _provider;
            }
        }

        /// <summary>
        /// GetXamlType(Type)
        /// </summary>
        [global::Windows.Foundation.Metadata.DefaultOverload]
        public global::Microsoft.UI.Xaml.Markup.IXamlType GetXamlType(global::System.Type type)
        {
            return Provider.GetXamlTypeByType(type);
        }

        /// <summary>
        /// GetXamlType(String)
        /// </summary>
        public global::Microsoft.UI.Xaml.Markup.IXamlType GetXamlType(string fullName)
        {
            return Provider.GetXamlTypeByName(fullName);
        }

        /// <summary>
        /// GetXmlnsDefinitions()
        /// </summary>
        public global::Microsoft.UI.Xaml.Markup.XmlnsDefinition[] GetXmlnsDefinitions()
        {
            return new global::Microsoft.UI.Xaml.Markup.XmlnsDefinition[0];
        }
    }

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    internal partial class XamlTypeInfoProvider
    {
        public global::Microsoft.UI.Xaml.Markup.IXamlType GetXamlTypeByType(global::System.Type type)
        {
            global::Microsoft.UI.Xaml.Markup.IXamlType xamlType;
            lock (_xamlTypeCacheByType) 
            { 
                if (_xamlTypeCacheByType.TryGetValue(type, out xamlType))
                {
                    return xamlType;
                }
                int typeIndex = LookupTypeIndexByType(type);
                if(typeIndex != -1)
                {
                    xamlType = CreateXamlType(typeIndex);
                }
                var userXamlType = xamlType as global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType;
                if(xamlType == null || (userXamlType != null && userXamlType.IsReturnTypeStub && !userXamlType.IsLocalType))
                {
                    global::Microsoft.UI.Xaml.Markup.IXamlType libXamlType = CheckOtherMetadataProvidersForType(type);
                    if (libXamlType != null)
                    {
                        if(libXamlType.IsConstructible || xamlType == null)
                        {
                            xamlType = libXamlType;
                        }
                    }
                }
                if (xamlType != null)
                {
                    _xamlTypeCacheByName.Add(xamlType.FullName, xamlType);
                    _xamlTypeCacheByType.Add(xamlType.UnderlyingType, xamlType);
                }
            }
            return xamlType;
        }

        public global::Microsoft.UI.Xaml.Markup.IXamlType GetXamlTypeByName(string typeName)
        {
            if (string.IsNullOrEmpty(typeName))
            {
                return null;
            }
            global::Microsoft.UI.Xaml.Markup.IXamlType xamlType;
            lock (_xamlTypeCacheByType)
            {
                if (_xamlTypeCacheByName.TryGetValue(typeName, out xamlType))
                {
                    return xamlType;
                }
                int typeIndex = LookupTypeIndexByName(typeName);
                if(typeIndex != -1)
                {
                    xamlType = CreateXamlType(typeIndex);
                }
                var userXamlType = xamlType as global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType;
                if(xamlType == null || (userXamlType != null && userXamlType.IsReturnTypeStub && !userXamlType.IsLocalType))
                {
                    global::Microsoft.UI.Xaml.Markup.IXamlType libXamlType = CheckOtherMetadataProvidersForName(typeName);
                    if (libXamlType != null)
                    {
                        if(libXamlType.IsConstructible || xamlType == null)
                        {
                            xamlType = libXamlType;
                        }
                    }
                }
                if (xamlType != null)
                {
                    _xamlTypeCacheByName.Add(xamlType.FullName, xamlType);
                    _xamlTypeCacheByType.Add(xamlType.UnderlyingType, xamlType);
                }
            }
            return xamlType;
        }

        public global::Microsoft.UI.Xaml.Markup.IXamlMember GetMemberByLongName(string longMemberName)
        {
            if (string.IsNullOrEmpty(longMemberName))
            {
                return null;
            }
            global::Microsoft.UI.Xaml.Markup.IXamlMember xamlMember;
            lock (_xamlMembers)
            {
                if (_xamlMembers.TryGetValue(longMemberName, out xamlMember))
                {
                    return xamlMember;
                }
                xamlMember = CreateXamlMember(longMemberName);
                if (xamlMember != null)
                {
                    _xamlMembers.Add(longMemberName, xamlMember);
                }
            }
            return xamlMember;
        }

        global::System.Collections.Generic.Dictionary<string, global::Microsoft.UI.Xaml.Markup.IXamlType>
                _xamlTypeCacheByName = new global::System.Collections.Generic.Dictionary<string, global::Microsoft.UI.Xaml.Markup.IXamlType>();

        global::System.Collections.Generic.Dictionary<global::System.Type, global::Microsoft.UI.Xaml.Markup.IXamlType>
                _xamlTypeCacheByType = new global::System.Collections.Generic.Dictionary<global::System.Type, global::Microsoft.UI.Xaml.Markup.IXamlType>();

        global::System.Collections.Generic.Dictionary<string, global::Microsoft.UI.Xaml.Markup.IXamlMember>
                _xamlMembers = new global::System.Collections.Generic.Dictionary<string, global::Microsoft.UI.Xaml.Markup.IXamlMember>();

        string[] _typeNameTable = null;
        global::System.Type[] _typeTable = null;
        
        private void InitTypeTables()
        {
            _typeNameTable = new string[34];
            _typeNameTable[0] = "Microsoft.UI.Xaml.Controls.XamlControlsResources";
            _typeNameTable[1] = "Microsoft.UI.Xaml.ResourceDictionary";
            _typeNameTable[2] = "Object";
            _typeNameTable[3] = "Boolean";
            _typeNameTable[4] = "Microsoft.UI.Xaml.Controls.ItemsView";
            _typeNameTable[5] = "Microsoft.UI.Xaml.Controls.Control";
            _typeNameTable[6] = "Microsoft.UI.Xaml.Controls.Layout";
            _typeNameTable[7] = "Microsoft.UI.Xaml.DependencyObject";
            _typeNameTable[8] = "Microsoft.UI.Xaml.IElementFactory";
            _typeNameTable[9] = "Int32";
            _typeNameTable[10] = "Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider";
            _typeNameTable[11] = "Microsoft.UI.Xaml.Controls.ScrollView";
            _typeNameTable[12] = "Microsoft.UI.Xaml.UIElement";
            _typeNameTable[13] = "System.Collections.Generic.IReadOnlyList`1<Object>";
            _typeNameTable[14] = "Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode";
            _typeNameTable[15] = "System.Enum";
            _typeNameTable[16] = "System.ValueType";
            _typeNameTable[17] = "Microsoft.UI.Xaml.Controls.Primitives.IScrollController";
            _typeNameTable[18] = "Microsoft.UI.Xaml.Controls.LinedFlowLayout";
            _typeNameTable[19] = "Microsoft.UI.Xaml.Controls.VirtualizingLayout";
            _typeNameTable[20] = "Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch";
            _typeNameTable[21] = "Double";
            _typeNameTable[22] = "Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification";
            _typeNameTable[23] = "Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation";
            _typeNameTable[24] = "Microsoft.UI.Xaml.Controls.ItemContainer";
            _typeNameTable[25] = "Lab.Mvvm.BooksPage";
            _typeNameTable[26] = "Microsoft.UI.Xaml.Controls.Page";
            _typeNameTable[27] = "Microsoft.UI.Xaml.Controls.UserControl";
            _typeNameTable[28] = "Lab.Mvvm.ViewModels.BooksPageViewModel";
            _typeNameTable[29] = "CommunityToolkit.Mvvm.ComponentModel.ObservableObject";
            _typeNameTable[30] = "Lab.Mvvm.MainWindow";
            _typeNameTable[31] = "Microsoft.UI.Xaml.Window";
            _typeNameTable[32] = "Microsoft.UI.Xaml.Controls.TreeViewNode";
            _typeNameTable[33] = "System.Collections.Generic.IList`1<Microsoft.UI.Xaml.Controls.TreeViewNode>";

            _typeTable = new global::System.Type[34];
            _typeTable[0] = typeof(global::Microsoft.UI.Xaml.Controls.XamlControlsResources);
            _typeTable[1] = typeof(global::Microsoft.UI.Xaml.ResourceDictionary);
            _typeTable[2] = typeof(global::System.Object);
            _typeTable[3] = typeof(global::System.Boolean);
            _typeTable[4] = typeof(global::Microsoft.UI.Xaml.Controls.ItemsView);
            _typeTable[5] = typeof(global::Microsoft.UI.Xaml.Controls.Control);
            _typeTable[6] = typeof(global::Microsoft.UI.Xaml.Controls.Layout);
            _typeTable[7] = typeof(global::Microsoft.UI.Xaml.DependencyObject);
            _typeTable[8] = typeof(global::Microsoft.UI.Xaml.IElementFactory);
            _typeTable[9] = typeof(global::System.Int32);
            _typeTable[10] = typeof(global::Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider);
            _typeTable[11] = typeof(global::Microsoft.UI.Xaml.Controls.ScrollView);
            _typeTable[12] = typeof(global::Microsoft.UI.Xaml.UIElement);
            _typeTable[13] = typeof(global::System.Collections.Generic.IReadOnlyList<global::System.Object>);
            _typeTable[14] = typeof(global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode);
            _typeTable[15] = typeof(global::System.Enum);
            _typeTable[16] = typeof(global::System.ValueType);
            _typeTable[17] = typeof(global::Microsoft.UI.Xaml.Controls.Primitives.IScrollController);
            _typeTable[18] = typeof(global::Microsoft.UI.Xaml.Controls.LinedFlowLayout);
            _typeTable[19] = typeof(global::Microsoft.UI.Xaml.Controls.VirtualizingLayout);
            _typeTable[20] = typeof(global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch);
            _typeTable[21] = typeof(global::System.Double);
            _typeTable[22] = typeof(global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification);
            _typeTable[23] = typeof(global::Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation);
            _typeTable[24] = typeof(global::Microsoft.UI.Xaml.Controls.ItemContainer);
            _typeTable[25] = typeof(global::Lab.Mvvm.BooksPage);
            _typeTable[26] = typeof(global::Microsoft.UI.Xaml.Controls.Page);
            _typeTable[27] = typeof(global::Microsoft.UI.Xaml.Controls.UserControl);
            _typeTable[28] = typeof(global::Lab.Mvvm.ViewModels.BooksPageViewModel);
            _typeTable[29] = typeof(global::CommunityToolkit.Mvvm.ComponentModel.ObservableObject);
            _typeTable[30] = typeof(global::Lab.Mvvm.MainWindow);
            _typeTable[31] = typeof(global::Microsoft.UI.Xaml.Window);
            _typeTable[32] = typeof(global::Microsoft.UI.Xaml.Controls.TreeViewNode);
            _typeTable[33] = typeof(global::System.Collections.Generic.IList<global::Microsoft.UI.Xaml.Controls.TreeViewNode>);
        }

        private int LookupTypeIndexByName(string typeName)
        {
            if (_typeNameTable == null)
            {
                InitTypeTables();
            }
            for (int i=0; i<_typeNameTable.Length; i++)
            {
                if(0 == string.CompareOrdinal(_typeNameTable[i], typeName))
                {
                    return i;
                }
            }
            return -1;
        }

        private int LookupTypeIndexByType(global::System.Type type)
        {
            if (_typeTable == null)
            {
                InitTypeTables();
            }
            for(int i=0; i<_typeTable.Length; i++)
            {
                if(type == _typeTable[i])
                {
                    return i;
                }
            }
            return -1;
        }

        private object Activate_0_XamlControlsResources() { return new global::Microsoft.UI.Xaml.Controls.XamlControlsResources(); }
        private object Activate_4_ItemsView() { return new global::Microsoft.UI.Xaml.Controls.ItemsView(); }
        private object Activate_10_ItemCollectionTransitionProvider() { return new global::Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider(); }
        private object Activate_11_ScrollView() { return new global::Microsoft.UI.Xaml.Controls.ScrollView(); }
        private object Activate_18_LinedFlowLayout() { return new global::Microsoft.UI.Xaml.Controls.LinedFlowLayout(); }
        private object Activate_19_VirtualizingLayout() { return new global::Microsoft.UI.Xaml.Controls.VirtualizingLayout(); }
        private object Activate_24_ItemContainer() { return new global::Microsoft.UI.Xaml.Controls.ItemContainer(); }
        private object Activate_25_BooksPage() { return new global::Lab.Mvvm.BooksPage(); }
        private object Activate_28_BooksPageViewModel() { return new global::Lab.Mvvm.ViewModels.BooksPageViewModel(); }
        private object Activate_30_MainWindow() { return new global::Lab.Mvvm.MainWindow(); }
        private object Activate_32_TreeViewNode() { return new global::Microsoft.UI.Xaml.Controls.TreeViewNode(); }
        private void StaticInitializer_0_XamlControlsResources() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.XamlControlsResources).TypeHandle);
        private void StaticInitializer_4_ItemsView() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.ItemsView).TypeHandle);
        private void StaticInitializer_6_Layout() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.Layout).TypeHandle);
        private void StaticInitializer_10_ItemCollectionTransitionProvider() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider).TypeHandle);
        private void StaticInitializer_11_ScrollView() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.ScrollView).TypeHandle);
        private void StaticInitializer_13_IReadOnlyList() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::System.Collections.Generic.IReadOnlyList<global::System.Object>).TypeHandle);
        private void StaticInitializer_14_ItemsViewSelectionMode() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode).TypeHandle);
        private void StaticInitializer_15_Enum() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::System.Enum).TypeHandle);
        private void StaticInitializer_16_ValueType() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::System.ValueType).TypeHandle);
        private void StaticInitializer_17_IScrollController() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.Primitives.IScrollController).TypeHandle);
        private void StaticInitializer_18_LinedFlowLayout() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.LinedFlowLayout).TypeHandle);
        private void StaticInitializer_19_VirtualizingLayout() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.VirtualizingLayout).TypeHandle);
        private void StaticInitializer_20_LinedFlowLayoutItemsStretch() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch).TypeHandle);
        private void StaticInitializer_22_LinedFlowLayoutItemsJustification() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification).TypeHandle);
        private void StaticInitializer_23_IndexBasedLayoutOrientation() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation).TypeHandle);
        private void StaticInitializer_24_ItemContainer() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.ItemContainer).TypeHandle);
        private void StaticInitializer_25_BooksPage() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Lab.Mvvm.BooksPage).TypeHandle);
        private void StaticInitializer_28_BooksPageViewModel() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Lab.Mvvm.ViewModels.BooksPageViewModel).TypeHandle);
        private void StaticInitializer_29_ObservableObject() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::CommunityToolkit.Mvvm.ComponentModel.ObservableObject).TypeHandle);
        private void StaticInitializer_30_MainWindow() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Lab.Mvvm.MainWindow).TypeHandle);
        private void StaticInitializer_32_TreeViewNode() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::Microsoft.UI.Xaml.Controls.TreeViewNode).TypeHandle);
        private void StaticInitializer_33_IList() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::System.Collections.Generic.IList<global::Microsoft.UI.Xaml.Controls.TreeViewNode>).TypeHandle);
        private void MapAdd_0_XamlControlsResources(object instance, object key, object item)
        {
            var collection = (global::System.Collections.Generic.IDictionary<global::System.Object, global::System.Object>)instance;
            var newKey = (global::System.Object)key;
            var newItem = (global::System.Object)item;
            collection.Add(newKey, newItem);
        }
        private void VectorAdd_33_IList(object instance, object item)
        {
            var collection = (global::System.Collections.Generic.ICollection<global::Microsoft.UI.Xaml.Controls.TreeViewNode>)instance;
            var newItem = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)item;
            collection.Add(newItem);
        }

        private global::Microsoft.UI.Xaml.Markup.IXamlType CreateXamlType(int typeIndex)
        {
            global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType xamlType = null;
            global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType userType;
            string typeName = _typeNameTable[typeIndex];
            global::System.Type type = _typeTable[typeIndex];

            switch (typeIndex)
            {

            case 0:   //  Microsoft.UI.Xaml.Controls.XamlControlsResources
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.ResourceDictionary"));
                userType.Activator = Activate_0_XamlControlsResources;
                userType.StaticInitializer = StaticInitializer_0_XamlControlsResources;
                userType.DictionaryAdd = MapAdd_0_XamlControlsResources;
                userType.AddMemberName("UseCompactResources");
                xamlType = userType;
                break;

            case 1:   //  Microsoft.UI.Xaml.ResourceDictionary
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 2:   //  Object
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 3:   //  Boolean
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 4:   //  Microsoft.UI.Xaml.Controls.ItemsView
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Controls.Control"));
                userType.Activator = Activate_4_ItemsView;
                userType.StaticInitializer = StaticInitializer_4_ItemsView;
                userType.AddMemberName("ItemsSource");
                userType.AddMemberName("Layout");
                userType.AddMemberName("ItemTemplate");
                userType.AddMemberName("CurrentItemIndex");
                userType.AddMemberName("IsItemInvokedEnabled");
                userType.AddMemberName("ItemTransitionProvider");
                userType.AddMemberName("ScrollView");
                userType.AddMemberName("SelectedItem");
                userType.AddMemberName("SelectedItems");
                userType.AddMemberName("SelectionMode");
                userType.AddMemberName("VerticalScrollController");
                xamlType = userType;
                break;

            case 5:   //  Microsoft.UI.Xaml.Controls.Control
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 6:   //  Microsoft.UI.Xaml.Controls.Layout
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.DependencyObject"));
                userType.StaticInitializer = StaticInitializer_6_Layout;
                userType.AddMemberName("IndexBasedLayoutOrientation");
                xamlType = userType;
                break;

            case 7:   //  Microsoft.UI.Xaml.DependencyObject
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 8:   //  Microsoft.UI.Xaml.IElementFactory
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 9:   //  Int32
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 10:   //  Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Object"));
                userType.StaticInitializer = StaticInitializer_10_ItemCollectionTransitionProvider;
                userType.SetIsReturnTypeStub();
                xamlType = userType;
                break;

            case 11:   //  Microsoft.UI.Xaml.Controls.ScrollView
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Controls.Control"));
                userType.StaticInitializer = StaticInitializer_11_ScrollView;
                userType.SetContentPropertyName("Microsoft.UI.Xaml.Controls.ScrollView.Content");
                userType.AddMemberName("Content");
                userType.SetIsReturnTypeStub();
                xamlType = userType;
                break;

            case 12:   //  Microsoft.UI.Xaml.UIElement
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 13:   //  System.Collections.Generic.IReadOnlyList`1<Object>
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, null);
                userType.StaticInitializer = StaticInitializer_13_IReadOnlyList;
                userType.SetIsReturnTypeStub();
                xamlType = userType;
                break;

            case 14:   //  Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("System.Enum"));
                userType.StaticInitializer = StaticInitializer_14_ItemsViewSelectionMode;
                userType.AddEnumValue("None", global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode.None);
                userType.AddEnumValue("Single", global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode.Single);
                userType.AddEnumValue("Multiple", global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode.Multiple);
                userType.AddEnumValue("Extended", global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode.Extended);
                xamlType = userType;
                break;

            case 15:   //  System.Enum
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("System.ValueType"));
                userType.StaticInitializer = StaticInitializer_15_Enum;
                xamlType = userType;
                break;

            case 16:   //  System.ValueType
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Object"));
                userType.StaticInitializer = StaticInitializer_16_ValueType;
                xamlType = userType;
                break;

            case 17:   //  Microsoft.UI.Xaml.Controls.Primitives.IScrollController
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, null);
                userType.StaticInitializer = StaticInitializer_17_IScrollController;
                userType.SetIsReturnTypeStub();
                xamlType = userType;
                break;

            case 18:   //  Microsoft.UI.Xaml.Controls.LinedFlowLayout
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Controls.VirtualizingLayout"));
                userType.Activator = Activate_18_LinedFlowLayout;
                userType.StaticInitializer = StaticInitializer_18_LinedFlowLayout;
                userType.AddMemberName("ItemsStretch");
                userType.AddMemberName("LineHeight");
                userType.AddMemberName("LineSpacing");
                userType.AddMemberName("MinItemSpacing");
                userType.AddMemberName("ActualLineHeight");
                userType.AddMemberName("ItemsJustification");
                userType.AddMemberName("RequestedRangeLength");
                userType.AddMemberName("RequestedRangeStartIndex");
                xamlType = userType;
                break;

            case 19:   //  Microsoft.UI.Xaml.Controls.VirtualizingLayout
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Controls.Layout"));
                userType.Activator = Activate_19_VirtualizingLayout;
                userType.StaticInitializer = StaticInitializer_19_VirtualizingLayout;
                xamlType = userType;
                break;

            case 20:   //  Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("System.Enum"));
                userType.StaticInitializer = StaticInitializer_20_LinedFlowLayoutItemsStretch;
                userType.AddEnumValue("None", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch.None);
                userType.AddEnumValue("Fill", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch.Fill);
                xamlType = userType;
                break;

            case 21:   //  Double
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 22:   //  Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("System.Enum"));
                userType.StaticInitializer = StaticInitializer_22_LinedFlowLayoutItemsJustification;
                userType.AddEnumValue("Start", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification.Start);
                userType.AddEnumValue("Center", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification.Center);
                userType.AddEnumValue("End", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification.End);
                userType.AddEnumValue("SpaceAround", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification.SpaceAround);
                userType.AddEnumValue("SpaceBetween", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification.SpaceBetween);
                userType.AddEnumValue("SpaceEvenly", global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification.SpaceEvenly);
                xamlType = userType;
                break;

            case 23:   //  Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("System.Enum"));
                userType.StaticInitializer = StaticInitializer_23_IndexBasedLayoutOrientation;
                userType.AddEnumValue("None", global::Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation.None);
                userType.AddEnumValue("TopToBottom", global::Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation.TopToBottom);
                userType.AddEnumValue("LeftToRight", global::Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation.LeftToRight);
                xamlType = userType;
                break;

            case 24:   //  Microsoft.UI.Xaml.Controls.ItemContainer
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Controls.Control"));
                userType.Activator = Activate_24_ItemContainer;
                userType.StaticInitializer = StaticInitializer_24_ItemContainer;
                userType.SetContentPropertyName("Microsoft.UI.Xaml.Controls.ItemContainer.Child");
                userType.AddMemberName("Child");
                userType.AddMemberName("IsSelected");
                xamlType = userType;
                break;

            case 25:   //  Lab.Mvvm.BooksPage
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Controls.Page"));
                userType.Activator = Activate_25_BooksPage;
                userType.StaticInitializer = StaticInitializer_25_BooksPage;
                userType.AddMemberName("ViewModel");
                userType.SetIsLocalType();
                xamlType = userType;
                break;

            case 26:   //  Microsoft.UI.Xaml.Controls.Page
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 27:   //  Microsoft.UI.Xaml.Controls.UserControl
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 28:   //  Lab.Mvvm.ViewModels.BooksPageViewModel
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("CommunityToolkit.Mvvm.ComponentModel.ObservableObject"));
                userType.StaticInitializer = StaticInitializer_28_BooksPageViewModel;
                userType.SetIsReturnTypeStub();
                userType.SetIsLocalType();
                xamlType = userType;
                break;

            case 29:   //  CommunityToolkit.Mvvm.ComponentModel.ObservableObject
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Object"));
                userType.StaticInitializer = StaticInitializer_29_ObservableObject;
                xamlType = userType;
                break;

            case 30:   //  Lab.Mvvm.MainWindow
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.Window"));
                userType.Activator = Activate_30_MainWindow;
                userType.StaticInitializer = StaticInitializer_30_MainWindow;
                userType.SetIsLocalType();
                xamlType = userType;
                break;

            case 31:   //  Microsoft.UI.Xaml.Window
                xamlType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType(typeName, type);
                break;

            case 32:   //  Microsoft.UI.Xaml.Controls.TreeViewNode
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, GetXamlTypeByName("Microsoft.UI.Xaml.DependencyObject"));
                userType.Activator = Activate_32_TreeViewNode;
                userType.StaticInitializer = StaticInitializer_32_TreeViewNode;
                userType.AddMemberName("Children");
                userType.AddMemberName("Content");
                userType.AddMemberName("Depth");
                userType.AddMemberName("HasChildren");
                userType.AddMemberName("HasUnrealizedChildren");
                userType.AddMemberName("IsExpanded");
                userType.AddMemberName("Parent");
                userType.SetIsBindable();
                xamlType = userType;
                break;

            case 33:   //  System.Collections.Generic.IList`1<Microsoft.UI.Xaml.Controls.TreeViewNode>
                userType = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType(this, typeName, type, null);
                userType.StaticInitializer = StaticInitializer_33_IList;
                userType.CollectionAdd = VectorAdd_33_IList;
                userType.SetIsReturnTypeStub();
                xamlType = userType;
                break;
            }
            return xamlType;
        }

        private global::System.Collections.Generic.List<global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider> _otherProviders;
        private global::System.Collections.Generic.List<global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider> OtherProviders
        {
            get
            {
                if(_otherProviders == null)
                {
                    var otherProviders = new global::System.Collections.Generic.List<global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider>();
                    global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider provider;
                    provider = new global::Microsoft.UI.Xaml.XamlTypeInfo.XamlControlsXamlMetaDataProvider() as global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider;
                    otherProviders.Add(provider); 
                    _otherProviders = otherProviders;
                }
                return _otherProviders;
            }
        }

        private global::Microsoft.UI.Xaml.Markup.IXamlType CheckOtherMetadataProvidersForName(string typeName)
        {
            global::Microsoft.UI.Xaml.Markup.IXamlType xamlType = null;
            global::Microsoft.UI.Xaml.Markup.IXamlType foundXamlType = null;
            foreach(global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider xmp in OtherProviders)
            {
                xamlType = xmp.GetXamlType(typeName);
                if(xamlType != null)
                {
                    if(xamlType.IsConstructible)    // not Constructible means it might be a Return Type Stub
                    {
                        return xamlType;
                    }
                    foundXamlType = xamlType;
                }
            }
            return foundXamlType;
        }

        private global::Microsoft.UI.Xaml.Markup.IXamlType CheckOtherMetadataProvidersForType(global::System.Type type)
        {
            global::Microsoft.UI.Xaml.Markup.IXamlType xamlType = null;
            global::Microsoft.UI.Xaml.Markup.IXamlType foundXamlType = null;
            foreach(global::Microsoft.UI.Xaml.Markup.IXamlMetadataProvider xmp in OtherProviders)
            {
                xamlType = xmp.GetXamlType(type);
                if(xamlType != null)
                {
                    if(xamlType.IsConstructible)    // not Constructible means it might be a Return Type Stub
                    {
                        return xamlType;
                    }
                    foundXamlType = xamlType;
                }
            }
            return foundXamlType;
        }

        private object get_0_XamlControlsResources_UseCompactResources(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.XamlControlsResources)instance;
            return that.UseCompactResources;
        }
        private void set_0_XamlControlsResources_UseCompactResources(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.XamlControlsResources)instance;
            that.UseCompactResources = (global::System.Boolean)Value;
        }
        private object get_1_ItemsView_ItemsSource(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.ItemsSource;
        }
        private void set_1_ItemsView_ItemsSource(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.ItemsSource = (global::System.Object)Value;
        }
        private object get_2_ItemsView_Layout(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.Layout;
        }
        private void set_2_ItemsView_Layout(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.Layout = (global::Microsoft.UI.Xaml.Controls.Layout)Value;
        }
        private object get_3_ItemsView_ItemTemplate(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.ItemTemplate;
        }
        private void set_3_ItemsView_ItemTemplate(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.ItemTemplate = (global::Microsoft.UI.Xaml.IElementFactory)Value;
        }
        private object get_4_ItemsView_CurrentItemIndex(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.CurrentItemIndex;
        }
        private object get_5_ItemsView_IsItemInvokedEnabled(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.IsItemInvokedEnabled;
        }
        private void set_5_ItemsView_IsItemInvokedEnabled(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.IsItemInvokedEnabled = (global::System.Boolean)Value;
        }
        private object get_6_ItemsView_ItemTransitionProvider(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.ItemTransitionProvider;
        }
        private void set_6_ItemsView_ItemTransitionProvider(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.ItemTransitionProvider = (global::Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider)Value;
        }
        private object get_7_ItemsView_ScrollView(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.ScrollView;
        }
        private object get_8_ScrollView_Content(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ScrollView)instance;
            return that.Content;
        }
        private void set_8_ScrollView_Content(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ScrollView)instance;
            that.Content = (global::Microsoft.UI.Xaml.UIElement)Value;
        }
        private object get_9_ItemsView_SelectedItem(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.SelectedItem;
        }
        private object get_10_ItemsView_SelectedItems(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.SelectedItems;
        }
        private object get_11_ItemsView_SelectionMode(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.SelectionMode;
        }
        private void set_11_ItemsView_SelectionMode(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.SelectionMode = (global::Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode)Value;
        }
        private object get_12_ItemsView_VerticalScrollController(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            return that.VerticalScrollController;
        }
        private void set_12_ItemsView_VerticalScrollController(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemsView)instance;
            that.VerticalScrollController = (global::Microsoft.UI.Xaml.Controls.Primitives.IScrollController)Value;
        }
        private object get_13_LinedFlowLayout_ItemsStretch(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.ItemsStretch;
        }
        private void set_13_LinedFlowLayout_ItemsStretch(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            that.ItemsStretch = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch)Value;
        }
        private object get_14_LinedFlowLayout_LineHeight(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.LineHeight;
        }
        private void set_14_LinedFlowLayout_LineHeight(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            that.LineHeight = (global::System.Double)Value;
        }
        private object get_15_LinedFlowLayout_LineSpacing(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.LineSpacing;
        }
        private void set_15_LinedFlowLayout_LineSpacing(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            that.LineSpacing = (global::System.Double)Value;
        }
        private object get_16_LinedFlowLayout_MinItemSpacing(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.MinItemSpacing;
        }
        private void set_16_LinedFlowLayout_MinItemSpacing(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            that.MinItemSpacing = (global::System.Double)Value;
        }
        private object get_17_LinedFlowLayout_ActualLineHeight(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.ActualLineHeight;
        }
        private object get_18_LinedFlowLayout_ItemsJustification(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.ItemsJustification;
        }
        private void set_18_LinedFlowLayout_ItemsJustification(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            that.ItemsJustification = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification)Value;
        }
        private object get_19_LinedFlowLayout_RequestedRangeLength(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.RequestedRangeLength;
        }
        private object get_20_LinedFlowLayout_RequestedRangeStartIndex(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.LinedFlowLayout)instance;
            return that.RequestedRangeStartIndex;
        }
        private object get_21_Layout_IndexBasedLayoutOrientation(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.Layout)instance;
            return that.IndexBasedLayoutOrientation;
        }
        private object get_22_ItemContainer_Child(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemContainer)instance;
            return that.Child;
        }
        private void set_22_ItemContainer_Child(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemContainer)instance;
            that.Child = (global::Microsoft.UI.Xaml.UIElement)Value;
        }
        private object get_23_ItemContainer_IsSelected(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemContainer)instance;
            return that.IsSelected;
        }
        private void set_23_ItemContainer_IsSelected(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.ItemContainer)instance;
            that.IsSelected = (global::System.Boolean)Value;
        }
        private object get_24_BooksPage_ViewModel(object instance)
        {
            var that = (global::Lab.Mvvm.BooksPage)instance;
            return that.ViewModel;
        }
        private object get_25_TreeViewNode_Children(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.Children;
        }
        private object get_26_TreeViewNode_Content(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.Content;
        }
        private void set_26_TreeViewNode_Content(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            that.Content = (global::System.Object)Value;
        }
        private object get_27_TreeViewNode_Depth(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.Depth;
        }
        private object get_28_TreeViewNode_HasChildren(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.HasChildren;
        }
        private object get_29_TreeViewNode_HasUnrealizedChildren(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.HasUnrealizedChildren;
        }
        private void set_29_TreeViewNode_HasUnrealizedChildren(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            that.HasUnrealizedChildren = (global::System.Boolean)Value;
        }
        private object get_30_TreeViewNode_IsExpanded(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.IsExpanded;
        }
        private void set_30_TreeViewNode_IsExpanded(object instance, object Value)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            that.IsExpanded = (global::System.Boolean)Value;
        }
        private object get_31_TreeViewNode_Parent(object instance)
        {
            var that = (global::Microsoft.UI.Xaml.Controls.TreeViewNode)instance;
            return that.Parent;
        }

        private global::Microsoft.UI.Xaml.Markup.IXamlMember CreateXamlMember(string longMemberName)
        {
            global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember xamlMember = null;
            global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType userType;

            switch (longMemberName)
            {
            case "Microsoft.UI.Xaml.Controls.XamlControlsResources.UseCompactResources":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.XamlControlsResources");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "UseCompactResources", "Boolean");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_0_XamlControlsResources_UseCompactResources;
                xamlMember.Setter = set_0_XamlControlsResources_UseCompactResources;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.ItemsSource":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ItemsSource", "Object");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_1_ItemsView_ItemsSource;
                xamlMember.Setter = set_1_ItemsView_ItemsSource;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.Layout":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Layout", "Microsoft.UI.Xaml.Controls.Layout");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_2_ItemsView_Layout;
                xamlMember.Setter = set_2_ItemsView_Layout;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.ItemTemplate":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ItemTemplate", "Microsoft.UI.Xaml.IElementFactory");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_3_ItemsView_ItemTemplate;
                xamlMember.Setter = set_3_ItemsView_ItemTemplate;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.CurrentItemIndex":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "CurrentItemIndex", "Int32");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_4_ItemsView_CurrentItemIndex;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.IsItemInvokedEnabled":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "IsItemInvokedEnabled", "Boolean");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_5_ItemsView_IsItemInvokedEnabled;
                xamlMember.Setter = set_5_ItemsView_IsItemInvokedEnabled;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.ItemTransitionProvider":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ItemTransitionProvider", "Microsoft.UI.Xaml.Controls.ItemCollectionTransitionProvider");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_6_ItemsView_ItemTransitionProvider;
                xamlMember.Setter = set_6_ItemsView_ItemTransitionProvider;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.ScrollView":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ScrollView", "Microsoft.UI.Xaml.Controls.ScrollView");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_7_ItemsView_ScrollView;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.ScrollView.Content":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ScrollView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Content", "Microsoft.UI.Xaml.UIElement");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_8_ScrollView_Content;
                xamlMember.Setter = set_8_ScrollView_Content;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.SelectedItem":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "SelectedItem", "Object");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_9_ItemsView_SelectedItem;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.SelectedItems":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "SelectedItems", "System.Collections.Generic.IReadOnlyList`1<Object>");
                xamlMember.Getter = get_10_ItemsView_SelectedItems;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.SelectionMode":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "SelectionMode", "Microsoft.UI.Xaml.Controls.ItemsViewSelectionMode");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_11_ItemsView_SelectionMode;
                xamlMember.Setter = set_11_ItemsView_SelectionMode;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemsView.VerticalScrollController":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemsView");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "VerticalScrollController", "Microsoft.UI.Xaml.Controls.Primitives.IScrollController");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_12_ItemsView_VerticalScrollController;
                xamlMember.Setter = set_12_ItemsView_VerticalScrollController;
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.ItemsStretch":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ItemsStretch", "Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsStretch");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_13_LinedFlowLayout_ItemsStretch;
                xamlMember.Setter = set_13_LinedFlowLayout_ItemsStretch;
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.LineHeight":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "LineHeight", "Double");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_14_LinedFlowLayout_LineHeight;
                xamlMember.Setter = set_14_LinedFlowLayout_LineHeight;
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.LineSpacing":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "LineSpacing", "Double");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_15_LinedFlowLayout_LineSpacing;
                xamlMember.Setter = set_15_LinedFlowLayout_LineSpacing;
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.MinItemSpacing":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "MinItemSpacing", "Double");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_16_LinedFlowLayout_MinItemSpacing;
                xamlMember.Setter = set_16_LinedFlowLayout_MinItemSpacing;
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.ActualLineHeight":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ActualLineHeight", "Double");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_17_LinedFlowLayout_ActualLineHeight;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.ItemsJustification":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ItemsJustification", "Microsoft.UI.Xaml.Controls.LinedFlowLayoutItemsJustification");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_18_LinedFlowLayout_ItemsJustification;
                xamlMember.Setter = set_18_LinedFlowLayout_ItemsJustification;
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.RequestedRangeLength":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "RequestedRangeLength", "Int32");
                xamlMember.Getter = get_19_LinedFlowLayout_RequestedRangeLength;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.LinedFlowLayout.RequestedRangeStartIndex":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.LinedFlowLayout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "RequestedRangeStartIndex", "Int32");
                xamlMember.Getter = get_20_LinedFlowLayout_RequestedRangeStartIndex;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.Layout.IndexBasedLayoutOrientation":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.Layout");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "IndexBasedLayoutOrientation", "Microsoft.UI.Xaml.Controls.IndexBasedLayoutOrientation");
                xamlMember.Getter = get_21_Layout_IndexBasedLayoutOrientation;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.ItemContainer.Child":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemContainer");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Child", "Microsoft.UI.Xaml.UIElement");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_22_ItemContainer_Child;
                xamlMember.Setter = set_22_ItemContainer_Child;
                break;
            case "Microsoft.UI.Xaml.Controls.ItemContainer.IsSelected":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.ItemContainer");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "IsSelected", "Boolean");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_23_ItemContainer_IsSelected;
                xamlMember.Setter = set_23_ItemContainer_IsSelected;
                break;
            case "Lab.Mvvm.BooksPage.ViewModel":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Lab.Mvvm.BooksPage");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "ViewModel", "Lab.Mvvm.ViewModels.BooksPageViewModel");
                xamlMember.Getter = get_24_BooksPage_ViewModel;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.Children":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Children", "System.Collections.Generic.IList`1<Microsoft.UI.Xaml.Controls.TreeViewNode>");
                xamlMember.Getter = get_25_TreeViewNode_Children;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.Content":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Content", "Object");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_26_TreeViewNode_Content;
                xamlMember.Setter = set_26_TreeViewNode_Content;
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.Depth":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Depth", "Int32");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_27_TreeViewNode_Depth;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.HasChildren":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "HasChildren", "Boolean");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_28_TreeViewNode_HasChildren;
                xamlMember.SetIsReadOnly();
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.HasUnrealizedChildren":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "HasUnrealizedChildren", "Boolean");
                xamlMember.Getter = get_29_TreeViewNode_HasUnrealizedChildren;
                xamlMember.Setter = set_29_TreeViewNode_HasUnrealizedChildren;
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.IsExpanded":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "IsExpanded", "Boolean");
                xamlMember.SetIsDependencyProperty();
                xamlMember.Getter = get_30_TreeViewNode_IsExpanded;
                xamlMember.Setter = set_30_TreeViewNode_IsExpanded;
                break;
            case "Microsoft.UI.Xaml.Controls.TreeViewNode.Parent":
                userType = (global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlUserType)GetXamlTypeByName("Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember = new global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlMember(this, "Parent", "Microsoft.UI.Xaml.Controls.TreeViewNode");
                xamlMember.Getter = get_31_TreeViewNode_Parent;
                xamlMember.SetIsReadOnly();
                break;
            }
            return xamlMember;
        }
    }

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    internal partial class XamlSystemBaseType : global::Microsoft.UI.Xaml.Markup.IXamlType
    {
        string _fullName;
        global::System.Type _underlyingType;

        public XamlSystemBaseType(string fullName, 
            global::System.Type underlyingType)
        {
            _fullName = fullName;
            _underlyingType = underlyingType;
        }

        public string FullName { get { return _fullName; } }

        public global::System.Type UnderlyingType
        {
            get
            {
                return _underlyingType;
            }
        }

        virtual public global::Microsoft.UI.Xaml.Markup.IXamlType BaseType { get { throw new global::System.NotImplementedException(); } }
        virtual public global::Microsoft.UI.Xaml.Markup.IXamlMember ContentProperty { get { throw new global::System.NotImplementedException(); } }
        virtual public global::Microsoft.UI.Xaml.Markup.IXamlMember GetMember(string name) { throw new global::System.NotImplementedException(); }
        virtual public bool IsArray { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsCollection { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsConstructible { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsDictionary { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsMarkupExtension { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsBindable { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsReturnTypeStub { get { throw new global::System.NotImplementedException(); } }
        virtual public bool IsLocalType { get { throw new global::System.NotImplementedException(); } }
        virtual public global::Microsoft.UI.Xaml.Markup.IXamlType ItemType { get { throw new global::System.NotImplementedException(); } }
        virtual public global::Microsoft.UI.Xaml.Markup.IXamlType KeyType { get { throw new global::System.NotImplementedException(); } }
        virtual public global::Microsoft.UI.Xaml.Markup.IXamlType BoxedType { get { throw new global::System.NotImplementedException(); } }
        virtual public object ActivateInstance() { throw new global::System.NotImplementedException(); }
        virtual public void AddToMap(object instance, object key, object item)  { throw new global::System.NotImplementedException(); }
        virtual public void AddToVector(object instance, object item)  { throw new global::System.NotImplementedException(); }
        virtual public void RunInitializer()   { throw new global::System.NotImplementedException(); }
        virtual public object CreateFromString(string input)   { throw new global::System.NotImplementedException(); }
    }
    
    internal delegate object Activator();
    internal delegate void StaticInitializer();
    internal delegate void AddToCollection(object instance, object item);
    internal delegate void AddToDictionary(object instance, object key, object item);
    internal delegate object CreateFromStringMethod(string args);
    internal delegate object BoxInstanceMethod(object instance);

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    internal partial class XamlUserType : global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlSystemBaseType
        , global::Microsoft.UI.Xaml.Markup.IXamlType
    {
        global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider _provider;
        global::Microsoft.UI.Xaml.Markup.IXamlType _baseType;
        global::Microsoft.UI.Xaml.Markup.IXamlType _boxedType;
        bool _isArray;
        bool _isMarkupExtension;
        bool _isBindable;
        bool _isReturnTypeStub;
        bool _isLocalType;

        string _contentPropertyName;
        string _itemTypeName;
        string _keyTypeName;
        global::System.Collections.Generic.Dictionary<string, string> _memberNames;
        global::System.Collections.Generic.Dictionary<string, object> _enumValues;

        public XamlUserType(global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider provider, string fullName, 
            global::System.Type fullType, global::Microsoft.UI.Xaml.Markup.IXamlType baseType)
            :base(fullName, fullType)
        {
            _provider = provider;
            _baseType = baseType;
        }

        // --- Interface methods ----

        override public global::Microsoft.UI.Xaml.Markup.IXamlType BaseType { get { return _baseType; } }
        override public bool IsArray { get { return _isArray; } }
        override public bool IsCollection { get { return (CollectionAdd != null); } }
        override public bool IsConstructible { get { return (Activator != null); } }
        override public bool IsDictionary { get { return (DictionaryAdd != null); } }
        override public bool IsMarkupExtension { get { return _isMarkupExtension; } }
        override public bool IsBindable { get { return _isBindable; } }
        override public bool IsReturnTypeStub { get { return _isReturnTypeStub; } }
        override public bool IsLocalType { get { return _isLocalType; } }
        override public global::Microsoft.UI.Xaml.Markup.IXamlType BoxedType { get { return _boxedType; } }

        override public global::Microsoft.UI.Xaml.Markup.IXamlMember ContentProperty
        {
            get { return _provider.GetMemberByLongName(_contentPropertyName); }
        }

        override public global::Microsoft.UI.Xaml.Markup.IXamlType ItemType
        {
            get { return _provider.GetXamlTypeByName(_itemTypeName); }
        }

        override public global::Microsoft.UI.Xaml.Markup.IXamlType KeyType
        {
            get { return _provider.GetXamlTypeByName(_keyTypeName); }
        }

        override public global::Microsoft.UI.Xaml.Markup.IXamlMember GetMember(string name)
        {
            if (_memberNames == null)
            {
                return null;
            }
            string longName;
            if (_memberNames.TryGetValue(name, out longName))
            {
                return _provider.GetMemberByLongName(longName);
            }
            return null;
        }

        override public object ActivateInstance()
        {
            return Activator(); 
        }

        override public void AddToMap(object instance, object key, object item) 
        {
            DictionaryAdd(instance, key, item);
        }

        override public void AddToVector(object instance, object item)
        {
            CollectionAdd(instance, item);
        }

        override public void RunInitializer() 
        {
            StaticInitializer();
        }

        override public object CreateFromString(string input)
        {
            if (BoxedType != null)
            {
                return BoxInstance(BoxedType.CreateFromString(input));
            }

            if (CreateFromStringMethod != null)
            {
                return this.CreateFromStringMethod(input);
            }
            else if (_enumValues != null)
            {
                long value = 0;

                string[] valueParts = input.Split(',');

                foreach (string valuePart in valueParts) 
                {
                    object partValue;
                    long enumFieldValue = 0;
                    try
                    {
                        if (_enumValues.TryGetValue(valuePart.Trim(), out partValue))
                        {
                            enumFieldValue = global::System.Convert.ToInt64(partValue);
                        }
                        else
                        {
                            try
                            {
                                enumFieldValue = global::System.Convert.ToInt64(valuePart.Trim());
                            }
                            catch( global::System.FormatException )
                            {
                                foreach( string key in _enumValues.Keys )
                                {
                                    if( string.Compare(valuePart.Trim(), key, global::System.StringComparison.OrdinalIgnoreCase) == 0 )
                                    {
                                        if( _enumValues.TryGetValue(key.Trim(), out partValue) )
                                        {
                                            enumFieldValue = global::System.Convert.ToInt64(partValue);
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                        value |= enumFieldValue; 
                    }
                    catch( global::System.FormatException )
                    {
                        throw new global::System.ArgumentException(input, FullName);
                    }
                }

                return global::System.Convert.ChangeType(value, global::System.Enum.GetUnderlyingType(this.UnderlyingType));
            }
            throw new global::System.ArgumentException(input, FullName);
        }

        // --- End of Interface methods

        public Activator Activator { get; set; }
        public StaticInitializer StaticInitializer { get; set; }
        public AddToCollection CollectionAdd { get; set; }
        public AddToDictionary DictionaryAdd { get; set; }
        public CreateFromStringMethod CreateFromStringMethod {get; set; }
        public BoxInstanceMethod BoxInstance {get; set; }

        public void SetContentPropertyName(string contentPropertyName)
        {
            _contentPropertyName = contentPropertyName;
        }

        public void SetIsArray()
        {
            _isArray = true; 
        }

        public void SetIsMarkupExtension()
        {
            _isMarkupExtension = true;
        }

        public void SetIsBindable()
        {
            _isBindable = true;
        }

        public void SetIsReturnTypeStub()
        {
            _isReturnTypeStub = true;
        }

        public void SetIsLocalType()
        {
            _isLocalType = true;
        }

        public void SetItemTypeName(string itemTypeName)
        {
            _itemTypeName = itemTypeName;
        }

        public void SetKeyTypeName(string keyTypeName)
        {
            _keyTypeName = keyTypeName;
        }

        public void SetBoxedType(global::Microsoft.UI.Xaml.Markup.IXamlType boxedType)
        {
            _boxedType = boxedType;
        }

        public object BoxType<T>(object instance) where T: struct
        {
            T unwrapped = (T)instance;
            return new global::System.Nullable<T>(unwrapped);
        }

        public void AddMemberName(string shortName)
        {
            if(_memberNames == null)
            {
                _memberNames =  new global::System.Collections.Generic.Dictionary<string,string>();
            }
            _memberNames.Add(shortName, FullName + "." + shortName);
        }

        public void AddEnumValue(string name, object value)
        {
            if (_enumValues == null)
            {
                _enumValues = new global::System.Collections.Generic.Dictionary<string, object>();
            }
            _enumValues.Add(name, value);
        }
    }

    internal delegate object Getter(object instance);
    internal delegate void Setter(object instance, object value);

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," 3.0.0.2512")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    internal partial class XamlMember : global::Microsoft.UI.Xaml.Markup.IXamlMember
    {
        global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider _provider;
        string _name;
        bool _isAttachable;
        bool _isDependencyProperty;
        bool _isReadOnly;

        string _typeName;
        string _targetTypeName;

        public XamlMember(global::Lab.Mvvm.Lab_Mvvm_XamlTypeInfo.XamlTypeInfoProvider provider, string name, string typeName)
        {
            _name = name;
            _typeName = typeName;
            _provider = provider;
        }

        public string Name { get { return _name; } }

        public global::Microsoft.UI.Xaml.Markup.IXamlType Type
        {
            get { return _provider.GetXamlTypeByName(_typeName); }
        }

        public void SetTargetTypeName(string targetTypeName)
        {
            _targetTypeName = targetTypeName;
        }
        public global::Microsoft.UI.Xaml.Markup.IXamlType TargetType
        {
            get { return _provider.GetXamlTypeByName(_targetTypeName); }
        }

        public void SetIsAttachable() { _isAttachable = true; }
        public bool IsAttachable { get { return _isAttachable; } }

        public void SetIsDependencyProperty() { _isDependencyProperty = true; }
        public bool IsDependencyProperty { get { return _isDependencyProperty; } }

        public void SetIsReadOnly() { _isReadOnly = true; }
        public bool IsReadOnly { get { return _isReadOnly; } }

        public Getter Getter { get; set; }
        public object GetValue(object instance)
        {
            if (Getter != null)
                return Getter(instance);
            else
                throw new global::System.InvalidOperationException("GetValue");
        }

        public Setter Setter { get; set; }
        public void SetValue(object instance, object value)
        {
            if (Setter != null)
                Setter(instance, value);
            else
                throw new global::System.InvalidOperationException("SetValue");
        }
    }
}

