<?xml version="1.0"?>
<doc>
    <assembly>
        <name>MonoMod.Backports</name>
    </assembly>
    <members>
        <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>
            <remarks>
                This definition is provided by the <i>IsExternalInit</i> NuGet package (https://www.nuget.org/packages/IsExternalInit).
                Please see https://github.com/manuelroemer/IsExternalInit for more information.
            </remarks>
        </member>
        <member name="T:System.Runtime.CompilerServices.ITuple">
            <summary>
            This interface is required for types that want to be indexed into by dynamic patterns.
            </summary>
        </member>
        <member name="P:System.Runtime.CompilerServices.ITuple.Length">
            <summary>
            The number of positions in this data structure.
            </summary>
        </member>
        <member name="P:System.Runtime.CompilerServices.ITuple.Item(System.Int32)">
            <summary>
            Get the element at position <param name="index"/>.
            </summary>
        </member>
        <member name="T:System.ArrayEx">
            <summary>
            Extensions to <see cref="T:System.Array"/> providing consistent access to APIs introduced after the type.
            </summary>
        </member>
        <member name="M:System.Collections.HashHelpers.GetFastModMultiplier(System.UInt32)">
            <summary>Returns approximate reciprocal of the divisor: ceil(2**64 / divisor).</summary>
            <remarks>This should only be used on 64-bit.</remarks>
        </member>
        <member name="M:System.Collections.HashHelpers.FastMod(System.UInt32,System.UInt32,System.UInt64)">
            <summary>Performs a mod operation using the multiplier pre-computed with <see cref="M:System.Collections.HashHelpers.GetFastModMultiplier(System.UInt32)"/>.</summary>
            <remarks>This should only be used on 64-bit.</remarks>
        </member>
        <member name="T:System.Gen2GcCallback">
            <summary>
            Schedules a callback roughly every gen 2 GC (you may see a Gen 0 an Gen 1 but only once)
            (We can fix this by capturing the Gen 2 count at startup and testing, but I mostly don't care)
            </summary>
        </member>
        <member name="M:System.Gen2GcCallback.Register(System.Func{System.Boolean})">
            <summary>
            Schedule 'callback' to be called in the next GC.  If the callback returns true it is
            rescheduled for the next Gen 2 GC.  Otherwise the callbacks stop.
            </summary>
        </member>
        <member name="M:System.Gen2GcCallback.Register(System.Func{System.Object,System.Boolean},System.Object)">
             <summary>
             Schedule 'callback' to be called in the next GC.  If the callback returns true it is
             rescheduled for the next Gen 2 GC.  Otherwise the callbacks stop.
            
             NOTE: This callback will be kept alive until either the callback function returns false,
             or the target object dies.
             </summary>
        </member>
        <member name="T:System.MathEx">
            <summary>
            Extensions to <see cref="T:System.StringComparer"/> providing consistent access to APIs introduced after the type.
            </summary>
        </member>
        <member name="M:System.MathEx.Clamp(System.Byte,System.Byte,System.Byte)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.Decimal,System.Decimal,System.Decimal)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.Double,System.Double,System.Double)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.Int16,System.Int16,System.Int16)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.Int32,System.Int32,System.Int32)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.Int64,System.Int64,System.Int64)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.IntPtr,System.IntPtr,System.IntPtr)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.SByte,System.SByte,System.SByte)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.Single,System.Single,System.Single)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.UInt16,System.UInt16,System.UInt16)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.UInt32,System.UInt32,System.UInt32)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.UInt64,System.UInt64,System.UInt64)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="M:System.MathEx.Clamp(System.UIntPtr,System.UIntPtr,System.UIntPtr)">
             <summary>Returns <paramref name="value" /> clamped to the inclusive range of <paramref name="min" /> and <paramref name="max" />.</summary>
             <param name="value">The value to be clamped.</param>
             <param name="min">The lower bound of the result.</param>
             <param name="max">The upper bound of the result.</param>
             <returns>
               <paramref name="value" /> if <paramref name="min" /> ≤ <paramref name="value" /> ≤ <paramref name="max" />.
            
               -or-
            
               <paramref name="min" /> if <paramref name="value" /> &lt; <paramref name="min" />.
            
               -or-
            
               <paramref name="max" /> if <paramref name="max" /> &lt; <paramref name="value" />.
             </returns>
        </member>
        <member name="T:System.Numerics.BitOperationsEx">
            <summary>
            Extensions to <see cref="T:System.StringComparer"/> providing consistent access to APIs introduced after the type.
            </summary>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.IsPow2(System.Int32)">
            <summary>
            Evaluate whether a given integral value is a power of 2.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.IsPow2(System.UInt32)">
            <summary>
            Evaluate whether a given integral value is a power of 2.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.IsPow2(System.Int64)">
            <summary>
            Evaluate whether a given integral value is a power of 2.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.IsPow2(System.UInt64)">
            <summary>
            Evaluate whether a given integral value is a power of 2.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.IsPow2(System.IntPtr)">
            <summary>
            Evaluate whether a given integral value is a power of 2.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.IsPow2(System.UIntPtr)">
            <summary>
            Evaluate whether a given integral value is a power of 2.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RoundUpToPowerOf2(System.UInt32)">
            <summary>Round the given integral value up to a power of 2.</summary>
            <param name="value">The value.</param>
            <returns>
            The smallest power of 2 which is greater than or equal to <paramref name="value"/>.
            If <paramref name="value"/> is 0 or the result overflows, returns 0.
            </returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RoundUpToPowerOf2(System.UInt64)">
            <summary>
            Round the given integral value up to a power of 2.
            </summary>
            <param name="value">The value.</param>
            <returns>
            The smallest power of 2 which is greater than or equal to <paramref name="value"/>.
            If <paramref name="value"/> is 0 or the result overflows, returns 0.
            </returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RoundUpToPowerOf2(System.UIntPtr)">
            <summary>
            Round the given integral value up to a power of 2.
            </summary>
            <param name="value">The value.</param>
            <returns>
            The smallest power of 2 which is greater than or equal to <paramref name="value"/>.
            If <paramref name="value"/> is 0 or the result overflows, returns 0.
            </returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.LeadingZeroCount(System.UInt32)">
            <summary>
            Count the number of leading zero bits in a mask.
            Similar in behavior to the x86 instruction LZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.LeadingZeroCount(System.UInt64)">
            <summary>
            Count the number of leading zero bits in a mask.
            Similar in behavior to the x86 instruction LZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.LeadingZeroCount(System.UIntPtr)">
            <summary>
            Count the number of leading zero bits in a mask.
            Similar in behavior to the x86 instruction LZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.Log2(System.UInt32)">
            <summary>
            Returns the integer (floor) log of the specified value, base 2.
            Note that by convention, input value 0 returns 0 since log(0) is undefined.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.Log2(System.UInt64)">
            <summary>
            Returns the integer (floor) log of the specified value, base 2.
            Note that by convention, input value 0 returns 0 since log(0) is undefined.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.Log2(System.UIntPtr)">
            <summary>
            Returns the integer (floor) log of the specified value, base 2.
            Note that by convention, input value 0 returns 0 since log(0) is undefined.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.PopCount(System.UInt32)">
            <summary>
            Returns the population count (number of bits set) of a mask.
            Similar in behavior to the x86 instruction POPCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.PopCount(System.UInt64)">
            <summary>
            Returns the population count (number of bits set) of a mask.
            Similar in behavior to the x86 instruction POPCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.PopCount(System.UIntPtr)">
            <summary>
            Returns the population count (number of bits set) of a mask.
            Similar in behavior to the x86 instruction POPCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.TrailingZeroCount(System.Int32)">
            <summary>
            Count the number of trailing zero bits in an integer value.
            Similar in behavior to the x86 instruction TZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.TrailingZeroCount(System.UInt32)">
            <summary>
            Count the number of trailing zero bits in an integer value.
            Similar in behavior to the x86 instruction TZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.TrailingZeroCount(System.Int64)">
            <summary>
            Count the number of trailing zero bits in a mask.
            Similar in behavior to the x86 instruction TZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.TrailingZeroCount(System.UInt64)">
            <summary>
            Count the number of trailing zero bits in a mask.
            Similar in behavior to the x86 instruction TZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.TrailingZeroCount(System.IntPtr)">
            <summary>
            Count the number of trailing zero bits in a mask.
            Similar in behavior to the x86 instruction TZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.TrailingZeroCount(System.UIntPtr)">
            <summary>
            Count the number of trailing zero bits in a mask.
            Similar in behavior to the x86 instruction TZCNT.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RotateLeft(System.UInt32,System.Int32)">
            <summary>
            Rotates the specified value left by the specified number of bits.
            Similar in behavior to the x86 instruction ROL.
            </summary>
            <param name="value">The value to rotate.</param>
            <param name="offset">The number of bits to rotate by.
            Any value outside the range [0..31] is treated as congruent mod 32.</param>
            <returns>The rotated value.</returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RotateLeft(System.UInt64,System.Int32)">
            <summary>
            Rotates the specified value left by the specified number of bits.
            Similar in behavior to the x86 instruction ROL.
            </summary>
            <param name="value">The value to rotate.</param>
            <param name="offset">The number of bits to rotate by.
            Any value outside the range [0..63] is treated as congruent mod 64.</param>
            <returns>The rotated value.</returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RotateLeft(System.UIntPtr,System.Int32)">
            <summary>
            Rotates the specified value left by the specified number of bits.
            Similar in behavior to the x86 instruction ROL.
            </summary>
            <param name="value">The value to rotate.</param>
            <param name="offset">The number of bits to rotate by.
            Any value outside the range [0..31] is treated as congruent mod 32 on a 32-bit process,
            and any value outside the range [0..63] is treated as congruent mod 64 on a 64-bit process.</param>
            <returns>The rotated value.</returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RotateRight(System.UInt32,System.Int32)">
            <summary>
            Rotates the specified value right by the specified number of bits.
            Similar in behavior to the x86 instruction ROR.
            </summary>
            <param name="value">The value to rotate.</param>
            <param name="offset">The number of bits to rotate by.
            Any value outside the range [0..31] is treated as congruent mod 32.</param>
            <returns>The rotated value.</returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RotateRight(System.UInt64,System.Int32)">
            <summary>
            Rotates the specified value right by the specified number of bits.
            Similar in behavior to the x86 instruction ROR.
            </summary>
            <param name="value">The value to rotate.</param>
            <param name="offset">The number of bits to rotate by.
            Any value outside the range [0..63] is treated as congruent mod 64.</param>
            <returns>The rotated value.</returns>
        </member>
        <member name="M:System.Numerics.BitOperationsEx.RotateRight(System.UIntPtr,System.Int32)">
            <summary>
            Rotates the specified value right by the specified number of bits.
            Similar in behavior to the x86 instruction ROR.
            </summary>
            <param name="value">The value to rotate.</param>
            <param name="offset">The number of bits to rotate by.
            Any value outside the range [0..31] is treated as congruent mod 32 on a 32-bit process,
            and any value outside the range [0..63] is treated as congruent mod 64 on a 64-bit process.</param>
            <returns>The rotated value.</returns>
        </member>
        <member name="T:System.StringComparerEx">
            <summary>
            Extensions to <see cref="T:System.StringComparer"/> providing consistent access to APIs introduced after the type.
            </summary>
        </member>
        <member name="T:System.Threading.MonitorEx">
            <summary>
            Extensions to <see cref="T:System.Threading.Monitor"/> providing consistent access to APIs introduced after the type.
            </summary>
        </member>
    </members>
</doc>
