<?xml version="1.0"?>
<doc>
    <assembly>
        <name>BitMono.Core</name>
    </assembly>
    <members>
        <member name="T:BitMono.Core.Analyzing.Baml.BamlBinaryReader">
            <summary>
            <see cref="T:System.IO.BinaryReader"/> for BAML streams. <see cref="M:System.IO.BinaryReader.ReadString"/> already gives
            the 7-bit-length-prefixed UTF-8 strings BAML uses; this only adds the 7-bit-encoded int used as a
            record size prefix (reimplemented here because <c>Read7BitEncodedInt</c> is not public on every
            target framework).
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.Baml.BamlBinaryWriter">
            <summary>
            <see cref="T:System.IO.BinaryWriter"/> counterpart of <see cref="T:BitMono.Core.Analyzing.Baml.BamlBinaryReader"/>, used when writing BAML
            back out. <see cref="M:System.IO.BinaryWriter.Write(System.String)"/> already emits the 7-bit-length-prefixed UTF-8
            strings BAML uses; this adds the 7-bit-encoded int (record size prefix).
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.Baml.BamlRecordType">
            <summary>WPF BAML record type identifiers (the first byte of each record).</summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.Baml.WpfBamlContext">
            <summary>
            Per-module view of the assembly's compiled WPF XAML (BAML in <c>&lt;assembly&gt;.g.resources</c>).
            <para>
            It tells the renamer which types/members XAML references (so they aren't broken), and, when
            rewriting is enabled, renames the XAML-referenced type names and updates the BAML to match.
            Members of XAML types are always kept (binding paths and the like live in BAML as plain strings),
            and a type is only renamed when its name appears nowhere as a string value (which would be an
            <c>{x:Type}</c>/<c>TargetType</c> reference we don't rewrite).
            </para>
            </summary>
        </member>
        <member name="P:BitMono.Core.Analyzing.Baml.WpfBamlContext.XamlTypes">
            <summary>All in-module types referenced by XAML. Their members are always kept.</summary>
        </member>
        <member name="P:BitMono.Core.Analyzing.Baml.WpfBamlContext.RenamableTypes">
            <summary>Subset of <see cref="P:BitMono.Core.Analyzing.Baml.WpfBamlContext.XamlTypes"/> whose name can be safely renamed (BAML updated).</summary>
        </member>
        <member name="M:BitMono.Core.Analyzing.Baml.WpfBamlContext.ApplyRewrite(AsmResolver.DotNet.ModuleDefinition,BitMono.Core.Renaming.Renamer)">
            <summary>
            Renames the renamable XAML type names (keeping their namespace) and rewrites the BAML so it
            still points at them. Members are untouched. No-op when rewriting is disabled/unsafe.
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.Baml.WpfBamlContextAccessor">
            <summary>
            Builds and caches the <see cref="T:BitMono.Core.Analyzing.Baml.WpfBamlContext"/> for the module being obfuscated, so the
            critical analyzer (which decides what to keep) and the renamer (which performs the BAML rewrite)
            share one parse.
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.BamlCriticalAnalyzer">
            <summary>
            Treats every member whose declaring type is referenced by the assembly's compiled WPF XAML
            (BAML) as critical, so the renamer leaves it (and its members) alone. Renaming or
            namespace-stripping a XAML-referenced type makes the app crash at XAML load with
            <c>XamlParseException</c>. See https://github.com/sunnamed434/BitMono/issues/212.
            </summary>
        </member>
        <member name="M:BitMono.Core.Analyzing.CriticalBaseTypesCriticalAnalyzer.YieldAncestors(AsmResolver.DotNet.TypeDefinition)">
            <summary>
            Yields the full class names of all ancestors across the inheritence chain of <paramref name="current"/>, including itself.
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.ReflectionCriticalAnalyzer">
            <summary>
            Finds members that user code looks up by name through <see cref="N:System.Reflection"/> so the
            renamer (and IL rewriters) leave them alone - renaming a reflected member turns a lookup into a
            runtime <c>null</c>. Built on Washi's Echo data-flow graph (see <see cref="T:BitMono.Core.Analyzing.ReflectionDataFlow"/>):
            the whole module is analyzed once, up front, and every query is then a pure identity lookup.
            Intra-method only, like ConfuserEx. See ConfuserEx#39 for the original design discussion.
            </summary>
        </member>
        <member name="M:BitMono.Core.Analyzing.ReflectionCriticalAnalyzer.IsMethodBodyCritical(AsmResolver.DotNet.MethodDefinition)">
            <summary>
            Whether <paramref name="method"/>'s raw IL is read back via reflection and therefore must not
            be mutated by IL-rewriting protections. Renaming is still allowed (refetch-by-name works).
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.ReflectionDataFlow">
            <summary>
            Helpers over Washi's Echo symbolic data-flow graph for recovering the constant arguments
            (member-name strings, <c>typeof</c> tokens) that feed a reflection call. Echo already computes
            the stack and variable dependencies of every instruction, so instead of simulating the stack by
            hand we just follow its edges back to the producing instructions - seeing through local copies
            (<c>ldloc</c>/<c>stloc</c>) and <c>dup</c>. Intra-method only, like ConfuserEx.
            </summary>
        </member>
        <member name="M:BitMono.Core.Analyzing.ReflectionDataFlow.OperandNodes(Echo.DataFlow.DataFlowNode{AsmResolver.PE.DotNet.Cil.CilInstruction})">
            <summary>
            The producer instructions feeding every stack operand of <paramref name="node"/>, flattened.
            Order-independent on purpose: a reflection call's name string and type token are recovered by
            scanning the whole operand set, so we never depend on Echo's stack-slot ordering.
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.SerializationCriticalAnalyzer">
            <summary>
            Treats members that take part in serialization as critical, so the renamer leaves their names
            alone. A serializer maps document/wire elements by member name, so renaming a
            <c>[DataMember]</c>/<c>[XmlElement]</c>/<c>[JsonProperty]</c> member - or a public field of a type
            handed to <c>XmlSerializer</c> - silently changes the serialized format and breaks interop with
            anything reading that data. Detects the well-known serialization attributes by name
            (System.Runtime.Serialization, System.Xml.Serialization, Newtonsoft.Json, System.Text.Json) plus
            the implicit <c>XmlSerializer</c>/<c>DataContractSerializer</c> rule. Conservative: a member is
            kept even when an attribute sets an explicit name that would technically make renaming safe.
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.UnitySerializationCriticalAnalyzer">
            <summary>
            Treats Unity-serialized fields as critical, so the renamer leaves their names alone. Unity stores
            scene/prefab values keyed by field name, so renaming a serialized field on a MonoBehaviour or
            ScriptableObject silently unbinds it - the saved value resets to default when the asset loads.
            Covers what the static <c>[SerializeField]</c> config rule cannot: PUBLIC instance fields, which
            Unity serializes by default with no attribute, while still honoring <c>[SerializeField]</c> on
            private fields. Static, const, readonly and <c>[NonSerialized]</c> fields are never serialized,
            so they stay renamable.
            </summary>
        </member>
        <member name="T:BitMono.Core.Analyzing.UnityStringInvokeCriticalAnalyzer">
            <summary>
            Treats methods that Unity invokes by string name as critical, so the renamer leaves their names
            alone. <c>Invoke</c>/<c>InvokeRepeating</c>/<c>CancelInvoke</c>/<c>StartCoroutine</c>/
            <c>StopCoroutine</c> and the <c>SendMessage</c>/<c>SendMessageUpwards</c>/<c>BroadcastMessage</c>
            family take the target method NAME as a string, so renaming that method turns the call into a
            silent no-op. The module is scanned once: every string literal flowing into one of those calls
            (recovered through Echo's data-flow graph via <see cref="T:BitMono.Core.Analyzing.ReflectionDataFlow"/>, so locals and dups
            are seen through) freezes every method of that name. Module-wide by name on purpose - SendMessage
            can hit any component, and over-freezing a same-named method is safe.
            </summary>
        </member>
        <member name="T:BitMono.Core.Attributes.ConfigureForNativeCodeAttribute">
            <summary>
            This is necessary to make native code work inside the assembly.
            See more here: https://docs.washi.dev/asmresolver/guides/dotnet/unmanaged-method-bodies.html
            However, sometimes it causes issues with the assembly like <see cref="T:System.BadImageFormatException"/>,
            that's why you need to manually mark your <see cref="T:BitMono.Core.Protection"/> with <see cref="T:BitMono.Core.Attributes.ConfigureForNativeCodeAttribute"/>.
            </summary>
        </member>
        <member name="T:BitMono.Core.Attributes.DoNotResolveAttribute">
            <summary>
            Represents a sort logic which doesn't include specified <see cref="T:BitMono.Core.Attributes.MemberInclusionFlags"/> in <see cref="T:BitMono.Core.Protection"/> <see cref="P:BitMono.API.Protections.ProtectionParameters.Members"/>.
            </summary>
        </member>
        <member name="T:BitMono.Core.Attributes.IL2CPPIncompatibleAttribute">
            <summary>
            Marks a protection that cannot run on Unity IL2CPP builds. When BitMono runs in IL2CPP mode
            (CLI <c>--il2cpp</c> or obfuscation.json <c>"IL2CPP"</c>, set automatically by the Unity
            integration when the scripting backend is IL2CPP) these protections are skipped.
            <remarks>
            On IL2CPP the managed assembly is consumed by <c>il2cpp.exe</c> and converted to C++; native
            method bodies, <c>calli</c>, PE packers and similar tricks either break that conversion or only
            affect the managed PE that IL2CPP discards. Pure managed/metadata protections (renaming, string
            encryption, ...) carry through into <c>global-metadata.dat</c> and are kept. See #250.
            </remarks>
            </summary>
        </member>
        <member name="P:BitMono.Core.Attributes.IL2CPPIncompatibleAttribute.Reason">
            <summary>
            Short, user-facing explanation of why the protection does not work on IL2CPP builds.
            </summary>
        </member>
        <member name="T:BitMono.Core.Attributes.MemberInclusionFlags">
            <summary>
            Flags that specify which types of members should be excluded from resolution (obfuscation).
            Used with the <see cref="T:BitMono.Core.Attributes.DoNotResolveAttribute"/> to control which members are protected from obfuscation.
            </summary>
        </member>
        <member name="F:BitMono.Core.Attributes.MemberInclusionFlags.SpecialRuntime">
            <summary>
            Exclude special runtime members from obfuscation (e.g., special methods, properties, or fields used by the runtime).
            </summary>
        </member>
        <member name="F:BitMono.Core.Attributes.MemberInclusionFlags.Model">
            <summary>
            Exclude model members from obfuscation (e.g., data models, DTOs, or entities that should preserve their structure).
            </summary>
        </member>
        <member name="F:BitMono.Core.Attributes.MemberInclusionFlags.Reflection">
            <summary>
            Exclude members that are used in reflection from obfuscation (e.g., methods, fields, properties accessed via reflection).
            </summary>
        </member>
        <member name="F:BitMono.Core.Attributes.MemberInclusionFlags.Baml">
            <summary>
            Exclude members referenced by compiled WPF XAML (BAML) from obfuscation, so renaming or
            namespace-stripping doesn't leave the BAML pointing at names that no longer exist.
            </summary>
        </member>
        <member name="F:BitMono.Core.Attributes.MemberInclusionFlags.MethodBody">
            <summary>
            Exclude a method from IL-mutating protections when its raw IL is read back at runtime via
            reflection (<c>MethodBody.GetILAsByteArray</c>/<c>MethodBase.GetMethodBody</c>). Renaming is
            unaffected - this guards against control-flow and other body rewriters changing bytes the
            program inspects. See ConfuserEx#39.
            </summary>
        </member>
        <member name="T:BitMono.Core.Attributes.RuntimeMonikerAttribute">
            <summary>
            Represents a mechanism that specifies the runtime moniker of the protection.
            <remarks>i.e. if you see this attribute on protection, then only specified attributes are the supported runtime monikers for the protection.
            If you don't see any of the attributes, then it works everywhere, also, users will get a message via <see cref="M:BitMono.Core.Attributes.RuntimeMonikerAttribute.GetMessage"/></remarks>
            </summary>
        </member>
        <member name="P:BitMono.Core.Attributes.RuntimeMonikerAttribute.Name">
            <summary>
            Gets the name of the runtime moniker.
            </summary>
        </member>
        <member name="T:BitMono.Core.Attributes.RuntimeMonikerMonoAttribute">
            <summary>
            Represents a mechanism that specifies the runtime moniker of the protection as a <b>Mono</b>.
            <remarks>i.e if you see this attribute on protection then only specified attributes are the supported runtime monikers for the protection.
            If you don't see any of the attributes then it works everywhere, also, users will get a message via <see cref="M:BitMono.Core.Attributes.RuntimeMonikerAttribute.GetMessage"/></remarks>
            </summary>
        </member>
        <member name="M:BitMono.Core.Extensions.ProtectionExtensions.IsIL2CPPIncompatible(System.Type)">
            <summary>
            A protection is IL2CPP-incompatible when it is explicitly marked with
            <see cref="T:BitMono.Core.Attributes.IL2CPPIncompatibleAttribute"/>, or when it emits native code
            (<see cref="T:BitMono.Core.Attributes.ConfigureForNativeCodeAttribute"/>) - native method bodies can never be converted
            to C++ by il2cpp.exe. See #250.
            </summary>
        </member>
        <member name="M:BitMono.Core.Extensions.ProtectionExtensions.GetIL2CPPIncompatibleReason(BitMono.API.Protections.IProtection)">
            <summary>
            The user-facing reason a protection is skipped on IL2CPP builds.
            </summary>
        </member>
        <member name="M:BitMono.Core.Injection.MscorlibInjector.InjectGlobalContainerType(AsmResolver.DotNet.ModuleDefinition,System.String)">
            <summary>
            Creates and registers a top-level type to host nested compiler-generated helper types.
            Nested types must not live inside &lt;Module&gt; - that crashes .NET 9+ with
            BadImageFormatException (dotnet/runtime#111164) - so this mirrors the compiler's
            &lt;PrivateImplementationDetails&gt; instead.
            </summary>
        </member>
        <member name="T:BitMono.Core.Renaming.MethodSlotGrouper">
            <summary>
            Groups every method in a module by the vtable slot it occupies: an interface method, its
            implementations (implicit and explicit) and any override chain all land in one slot and must
            share a name. A slot that reaches a method, type or interface outside the module - or one that
            cannot be resolved - is flagged <see cref="P:BitMono.Core.Renaming.MethodSlot.TiedToExternal"/> so the renamer leaves it
            alone. This lets the renamer safely rename virtual/interface methods whose whole slot is in
            scope instead of skipping every virtual. Generic interfaces (IComparable&lt;T&gt; etc.) are
            handled, not skipped, via AsmResolver's <see cref="T:AsmResolver.DotNet.Signatures.SignatureComparer"/> + generic instantiation.
            </summary>
        </member>
        <member name="P:BitMono.Core.Renaming.MethodSlot.TiedToExternal">
            <summary>
            True when the slot reaches a method, type or interface outside the module (or one that could
            not be resolved). Renaming any member would break that external contract, so the whole slot
            must keep its original name.
            </summary>
        </member>
        <member name="M:BitMono.Core.Renaming.Renamer.CanRename(AsmResolver.DotNet.MethodDefinition)">
            <summary>
            Whether <paramref name="method"/> may be safely renamed according to the same
            safety gate that <see cref="M:BitMono.Core.Renaming.Renamer.Rename(AsmResolver.DotNet.IMetadataMember)"/> applies (critical-name and
            declaring-type checks). Lets callers that need a single shared name across several
            related members decide atomically before renaming any of them.
            </summary>
        </member>
        <member name="T:Microsoft.CodeAnalysis.EmbeddedAttribute">
            <summary>
            A special attribute recognized by Roslyn, that marks a type as "embedded", meaning it won't ever be visible from other assemblies.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute">
            <summary>
            Specifies the priority of a member in overload resolution. When unspecified, the default priority is 0.
            </summary>
        </member>
        <member name="M:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"/> class.
            </summary>
            <param name="priority">The priority of the attributed member. Higher numbers are prioritized, lower numbers are deprioritized. 0 is the default if no attribute is present.</param>
        </member>
        <member name="P:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute.Priority">
            <summary>
            The priority of the member.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.ExtensionMarkerAttribute">
            <summary>
            This attribute is used to mark extension members and associate them with a specific marker type (which provides detailed information about an extension block and its receiver parameter).
            This attribute should not be used by developers in source code.
            </summary>
        </member>
        <member name="M:System.Runtime.CompilerServices.ExtensionMarkerAttribute.#ctor(System.String)">
            <summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.ExtensionMarkerAttribute"/> class.</summary>
            <param name="name">The name of the marker type this extension member is associated with.</param>
        </member>
        <member name="P:System.Runtime.CompilerServices.ExtensionMarkerAttribute.Name">
            <summary>The name of the marker type this extension member is associated with.</summary>
        </member>
        <member name="M:System.Runtime.CompilerServices.CollectionBuilderAttribute.#ctor(System.Type,System.String)">
            <summary>
            Initialize the attribute to refer to the <paramref name="methodName"/> method on the <paramref name="builderType"/> type.
            </summary>
            <param name="builderType">The type of the builder to use to construct the collection.</param>
            <param name="methodName">The name of the method on the builder to use to construct the collection.</param>
            <remarks>
            <paramref name="methodName"/> must refer to a static method that accepts a single parameter of
            type <see cref="T:System.ReadOnlySpan`1"/> and returns an instance of the collection being built containing
            a copy of the data from that span.  In future releases of .NET, additional patterns may be supported.
            </remarks>
        </member>
        <member name="P:System.Runtime.CompilerServices.CollectionBuilderAttribute.BuilderType">
            <summary>
            Gets the type of the builder to use to construct the collection.
            </summary>
        </member>
        <member name="P:System.Runtime.CompilerServices.CollectionBuilderAttribute.MethodName">
            <summary>
            Gets the name of the method on the builder to use to construct the collection.
            </summary>
            <remarks>
            This should match the metadata name of the target method.
            For example, this might be ".ctor" if targeting the type's constructor.
            </remarks>
        </member>
        <member name="T:System.Runtime.CompilerServices.RequiredMemberAttribute">
            <summary>
            Specifies that a type has required members or that a member is required.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute">
            <summary>
            Indicates that compiler support for a particular feature is required for the location where this attribute is applied.
            </summary>
        </member>
        <member name="M:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.#ctor(System.String)">
            <summary>
            Creates a new instance of the <see cref="T:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute"/> type.
            </summary>
            <param name="featureName">The name of the feature to indicate.</param>
        </member>
        <member name="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName">
            <summary>
            The name of the compiler feature.
            </summary>
        </member>
        <member name="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.IsOptional">
            <summary>
            If true, the compiler can choose to allow access to the location where this attribute is applied if it does not understand <see cref="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName"/>.
            </summary>
        </member>
        <member name="F:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.RefStructs">
            <summary>
            The <see cref="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName"/> used for the ref structs C# feature.
            </summary>
        </member>
        <member name="F:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.RequiredMembers">
            <summary>
            The <see cref="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName"/> used for the required members C# feature.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute">
            <summary>
            When applied to an attribute class, instructs the compiler to flow applications of that attribute,
            from source code down to compiler-generated symbols. This can help IL-based analysis tools.
            </summary>
            <remarks>
            One example where this attribute applies is in C# primary constructor parameters. If an attribute
            marked with <see cref="T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute"/> gets applied to a primary constructor
            parameter, the attribute will also be applied to any compiler-generated fields storing that parameter.
            </remarks>
        </member>
        <member name="M:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute"/> class.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.RequiresLocationAttribute">
            <summary>
            Reserved for use by a compiler for tracking metadata.
            This attribute should not be used by developers in source code.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.SkipLocalsInitAttribute">
            <summary>
            Used to indicate to the compiler that the <c>.locals init</c> flag should not be set in method headers.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.ParamCollectionAttribute">
            <summary>
            Indicates that a method will allow a variable number of arguments in its invocation.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute">
            <summary>
            Indicates the type of the async method builder that should be used by a language compiler to
            build the attributed async method or to build the attributed type when used as the return type
            of an async method.
            </summary>
        </member>
        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.#ctor(System.Type)">
            <summary>Initializes the <see cref="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute"/>.</summary>
            <param name="builderType">The <see cref="T:System.Type"/> of the associated builder.</param>
        </member>
        <member name="P:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.BuilderType">
            <summary>Gets the <see cref="T:System.Type"/> of the associated builder.</summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.IsExternalInit">
            <summary>
            Reserved to be used by the compiler for tracking metadata.
            This class should not be used by developers in source code.
            </summary>
        </member>
        <member name="M:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute"/> class.
            </summary>
        </member>
        <member name="M:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute"/> class with the specified message.
            </summary>
            <param name="message">An optional message associated with this attribute instance.</param>
        </member>
        <member name="P:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.Message">
            <summary>
            Returns the optional message associated with this attribute instance.
            </summary>
        </member>
        <member name="P:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.Url">
            <summary>
            Returns the optional URL associated with this attribute instance.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute">
            <summary>
            Indicates that the specified method parameter expects a constant.
            </summary>
            <remarks>
            This can be used to inform tooling that a constant should be used as an argument for the annotated parameter.
            </remarks>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.Min">
            <summary>
            Indicates the minimum bound of the expected constant, inclusive.
            </summary>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.Max">
            <summary>
            Indicates the maximum bound of the expected constant, inclusive.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
            <summary>
            Specifies that the method or property will ensure that the listed field and property members have not-null values.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
            <summary>
            Initializes the attribute with a field or property member.
            </summary>
            <param name="member">The field or property member that is promised to be not-null.</param>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
            <summary>
            Initializes the attribute with the list of field and property members.
            </summary>
            <param name="members">The list of field and property members that are promised to be not-null.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
            <summary>
            Gets field or property member names.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
            <summary>
            Specifies that null is allowed as an input even if the corresponding type disallows it.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
            <summary>
            Specifies that the output will be non-null if the named parameter is non-null.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
            <summary>
            Initializes the attribute with the associated parameter name.
            </summary>
            <param name="parameterName">The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
            <summary>
            Gets the associated parameter name.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute">
            <summary>
            Specifies the syntax used in a string.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String)">
            <summary>
            Initializes the <see cref="T:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute"/> with the identifier of the syntax used.
            </summary>
            <param name="syntax">The syntax identifier.</param>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String,System.Object[])">
            <summary>Initializes the <see cref="T:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute"/> with the identifier of the syntax used.</summary>
            <param name="syntax">The syntax identifier.</param>
            <param name="arguments">Optional arguments associated with the specific syntax employed.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Syntax">
            <summary>Gets the identifier of the syntax used.</summary>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Arguments">
            <summary>Optional arguments associated with the specific syntax employed.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.CompositeFormat">
            <summary>The syntax identifier for strings containing composite formats for string formatting.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.DateOnlyFormat">
            <summary>The syntax identifier for strings containing date format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.DateTimeFormat">
            <summary>The syntax identifier for strings containing date and time format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.EnumFormat">
            <summary>The syntax identifier for strings containing <see cref="T:System.Enum"/> format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.GuidFormat">
            <summary>The syntax identifier for strings containing <see cref="T:System.Guid"/> format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Json">
            <summary>The syntax identifier for strings containing JavaScript Object Notation (JSON).</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.NumericFormat">
            <summary>The syntax identifier for strings containing numeric format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Regex">
            <summary>The syntax identifier for strings containing regular expressions.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.TimeOnlyFormat">
            <summary>The syntax identifier for strings containing time format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.TimeSpanFormat">
            <summary>The syntax identifier for strings containing <see cref="T:System.TimeSpan"/> format specifiers.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Uri">
            <summary>The syntax identifier for strings containing URIs.</summary>
        </member>
        <member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Xml">
            <summary>The syntax identifier for strings containing XML.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute">
            <summary>
            Specifies that this constructor sets all required members for the current type,
            and callers do not need to set any required members themselves.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
            <summary>
            Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
            <summary>
            Initializes the attribute with the specified return value condition.
            </summary>
            <param name="returnValue">The return value condition. If the method returns this value, the associated parameter will not be null.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
            <summary>Gets the return value condition.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
            <summary>
            Specifies that an output will not be null even if the corresponding type allows it.
            Specifies that an input argument was not null when the call returns.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
            <summary>
            Specifies that the method will not return if the associated Boolean parameter is passed the specified value.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
            <summary>
            Initializes the attribute with the specified parameter value.
            </summary>
            <param name="parameterValue">
            The condition parameter value. Code after the method will be considered unreachable
            by diagnostics if the argument to the associated parameter matches this value.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
            <summary>
            Gets the condition parameter value.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
            <summary>
            Specifies that an output may be null even if the corresponding type disallows it.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
            <summary>
            Applied to a method that will never return under any circumstance.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
            <summary>
            Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
            <summary>
            Initializes the attribute with the specified return value condition.
            </summary>
            <param name="returnValue">The return value condition. If the method returns this value, the associated parameter may be null.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
            <summary>
            Gets the return value condition.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute">
            <summary>
            Indicates that an API is experimental and it may change in the future.
            </summary>
            <remarks>
            This attribute allows call sites to be flagged with a diagnostic that indicates that an experimental
            feature is used. Authors can use this attribute to ship preview features in their assemblies.
            </remarks>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute"/> class,
            specifying the ID that the compiler will use when reporting a use of the API the attribute applies to.
            </summary>
            <param name="diagnosticId">The ID that the compiler will use when reporting a use of the API the attribute applies to.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.DiagnosticId">
            <summary>
            Gets the ID that the compiler will use when reporting a use of the API the attribute applies to.
            </summary>
            <value>The unique diagnostic ID.</value>
            <remarks>
            The diagnostic ID is shown in build output for warnings and errors.
            <para>This property represents the unique ID that can be used to suppress the warnings or errors, if needed.</para>
            </remarks>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.UrlFormat">
            <summary>
            Gets or sets the URL for corresponding documentation.
            The API accepts a format string instead of an actual URL, creating a generic URL that includes the diagnostic ID.
            </summary>
            <value>The format string that represents a URL to corresponding documentation.</value>
            <remarks>An example format string is <c>https://contoso.com/obsoletion-warnings/{0}</c>.</remarks>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
            <summary>
            Specifies that the method or property will ensure that the listed field and property
            members have not-null values when returning with the specified return value condition.
            </summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
            <summary>
            Initializes the attribute with the specified return value condition and a field or property member.
            </summary>
            <param name="returnValue">The return value condition. If the method returns this value, the associated parameter will not be null.</param>
            <param name="member">The field or property member that is promised to be not-null.</param>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
            <summary>
            Initializes the attribute with the specified return value condition and list of field and property members.
            </summary>
            <param name="returnValue">The return value condition. If the method returns this value, the associated parameter will not be null.</param>
            <param name="members">The list of field and property members that are promised to be not-null.</param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
            <summary>
            Gets the return value condition.
            </summary>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
            <summary>
            Gets field or property member names.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
            <summary>
            Specifies that null is disallowed as an input even if the corresponding type allows it.
            </summary>
        </member>
        <member name="T:System.Index">
            <summary>Represent a type can be used to index a collection either from the start or the end.</summary>
            <remarks>
            Index is used by the C# compiler to support the new index syntax
            <code>
            int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ;
            int lastElement = someArray[^1]; // lastElement = 5
            </code>
            </remarks>
        </member>
        <member name="M:System.Index.#ctor(System.Int32,System.Boolean)">
            <summary>Construct an Index using a value and indicating if the index is from the start or from the end.</summary>
            <param name="value">The index value. it has to be zero or positive number.</param>
            <param name="fromEnd">Indicating if the index is from the start or from the end.</param>
            <remarks>
            If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element.
            </remarks>
        </member>
        <member name="P:System.Index.Start">
            <summary>Create an Index pointing at first element.</summary>
        </member>
        <member name="P:System.Index.End">
            <summary>Create an Index pointing at beyond last element.</summary>
        </member>
        <member name="M:System.Index.FromStart(System.Int32)">
            <summary>Create an Index from the start at the position indicated by the value.</summary>
            <param name="value">The index value from the start.</param>
        </member>
        <member name="M:System.Index.FromEnd(System.Int32)">
            <summary>Create an Index from the end at the position indicated by the value.</summary>
            <param name="value">The index value from the end.</param>
        </member>
        <member name="P:System.Index.Value">
            <summary>Returns the index value.</summary>
        </member>
        <member name="P:System.Index.IsFromEnd">
            <summary>Indicates whether the index is from the start or the end.</summary>
        </member>
        <member name="M:System.Index.GetOffset(System.Int32)">
            <summary>Calculate the offset from the start using the giving collection length.</summary>
            <param name="length">The length of the collection that the Index will be used with. length has to be a positive value</param>
            <remarks>
            For performance reason, we don't validate the input length parameter and the returned offset value against negative values.
            we don't validate either the returned offset is greater than the input length.
            It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and
            then used to index a collection will get out of range exception which will be same affect as the validation.
            </remarks>
        </member>
        <member name="M:System.Index.Equals(System.Object)">
            <summary>Indicates whether the current Index object is equal to another object of the same type.</summary>
            <param name="value">An object to compare with this object</param>
        </member>
        <member name="M:System.Index.Equals(System.Index)">
            <summary>Indicates whether the current Index object is equal to another Index object.</summary>
            <param name="other">An object to compare with this object</param>
        </member>
        <member name="M:System.Index.GetHashCode">
            <summary>Returns the hash code for this instance.</summary>
        </member>
        <member name="M:System.Index.op_Implicit(System.Int32)~System.Index">
            <summary>Converts integer number to an Index.</summary>
        </member>
        <member name="M:System.Index.ToString">
            <summary>Converts the value of the current Index object to its equivalent string representation.</summary>
        </member>
        <member name="T:System.Range">
            <summary>Represent a range has start and end indexes.</summary>
            <remarks>
            Range is used by the C# compiler to support the range syntax.
            <code>
            int[] someArray = new int[5] { 1, 2, 3, 4, 5 };
            int[] subArray1 = someArray[0..2]; // { 1, 2 }
            int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 }
            </code>
            </remarks>
        </member>
        <member name="P:System.Range.Start">
            <summary>Represent the inclusive start index of the Range.</summary>
        </member>
        <member name="P:System.Range.End">
            <summary>Represent the exclusive end index of the Range.</summary>
        </member>
        <member name="M:System.Range.#ctor(System.Index,System.Index)">
            <summary>Construct a Range object using the start and end indexes.</summary>
            <param name="start">Represent the inclusive start index of the range.</param>
            <param name="end">Represent the exclusive end index of the range.</param>
        </member>
        <member name="M:System.Range.Equals(System.Object)">
            <summary>Indicates whether the current Range object is equal to another object of the same type.</summary>
            <param name="value">An object to compare with this object</param>
        </member>
        <member name="M:System.Range.Equals(System.Range)">
            <summary>Indicates whether the current Range object is equal to another Range object.</summary>
            <param name="other">An object to compare with this object</param>
        </member>
        <member name="M:System.Range.GetHashCode">
            <summary>Returns the hash code for this instance.</summary>
        </member>
        <member name="M:System.Range.ToString">
            <summary>Converts the value of the current Range object to its equivalent string representation.</summary>
        </member>
        <member name="M:System.Range.StartAt(System.Index)">
            <summary>Create a Range object starting from start index to the end of the collection.</summary>
        </member>
        <member name="M:System.Range.EndAt(System.Index)">
            <summary>Create a Range object starting from first element in the collection to the end Index.</summary>
        </member>
        <member name="P:System.Range.All">
            <summary>Create a Range object starting from first element to the end.</summary>
        </member>
        <member name="M:System.Range.GetOffsetAndLength(System.Int32)">
            <summary>Calculate the start offset and length of range object using a collection length.</summary>
            <param name="length">The length of the collection that the range will be used with. length has to be a positive value.</param>
            <remarks>
            For performance reason, we don't validate the input length parameter against negative values.
            It is expected Range will be used with collections which always have non negative length/count.
            We validate the range is inside the length scope though.
            </remarks>
        </member>
    </members>
</doc>
