<?xml version="1.0"?>
<doc>
    <assembly>
        <name>BeatyBit.Binstate</name>
    </assembly>
    <members>
        <member name="T:JetBrains.Annotations.UsedImplicitlyAttribute">
             <summary>
             Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library),
             so this symbol will be ignored by usage-checking inspections. <br/>
             You can use <see cref="T:JetBrains.Annotations.ImplicitUseKindFlags"/> and <see cref="T:JetBrains.Annotations.ImplicitUseTargetFlags"/>
             to configure how this attribute is applied.
             </summary>
             <example><code>
             [UsedImplicitly]
             public class TypeConverter {}
            
             public class SummaryData
             {
             [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)]
             public SummaryData() {}
             }
            
             [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)]
             public interface IService {}
             </code></example>
        </member>
        <member name="T:JetBrains.Annotations.MeansImplicitUseAttribute">
            <summary>
            Can be applied to attributes, type parameters, and parameters of a type assignable from <see cref="T:System.Type"/> .
            When applied to an attribute, the decorated attribute behaves the same as <see cref="T:JetBrains.Annotations.UsedImplicitlyAttribute"/>.
            When applied to a type parameter or to a parameter of type <see cref="T:System.Type"/>,
            indicates that the corresponding type is used implicitly.
            </summary>
        </member>
        <member name="T:JetBrains.Annotations.ImplicitUseKindFlags">
            <summary>
            Specifies the details of implicitly used symbol when it is marked
            with <see cref="T:JetBrains.Annotations.MeansImplicitUseAttribute"/> or <see cref="T:JetBrains.Annotations.UsedImplicitlyAttribute"/>.
            </summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseKindFlags.Access">
            <summary>Only entity marked with attribute considered used.</summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseKindFlags.Assign">
            <summary>Indicates implicit assignment to a member.</summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature">
            <summary>
            Indicates implicit instantiation of a type with fixed constructor signature.
            That means any unused constructor parameters won't be reported as such.
            </summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature">
            <summary>Indicates implicit instantiation of a type.</summary>
        </member>
        <member name="T:JetBrains.Annotations.ImplicitUseTargetFlags">
            <summary>
            Specifies what is considered to be used implicitly when marked
            with <see cref="T:JetBrains.Annotations.MeansImplicitUseAttribute"/> or <see cref="T:JetBrains.Annotations.UsedImplicitlyAttribute"/>.
            </summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseTargetFlags.Members">
            <summary>Members of the type marked with the attribute are considered used.</summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseTargetFlags.WithInheritors">
            <summary> Inherited entities are considered used. </summary>
        </member>
        <member name="F:JetBrains.Annotations.ImplicitUseTargetFlags.WithMembers">
            <summary>Entity marked with the attribute and all its members considered used.</summary>
        </member>
        <member name="T:JetBrains.Annotations.PublicAPIAttribute">
            <summary>
            This attribute is intended to mark publicly available API,
            which should not be removed and so is treated as used.
            </summary>
        </member>
        <member name="T:JetBrains.Annotations.InstantHandleAttribute">
            <summary>
            Tells the code analysis engine if the parameter is completely handled when the invoked method is on stack.
            If the parameter is a delegate, indicates that delegate is executed while the method is executed.
            If the parameter is an enumerable, indicates that it is enumerated while the method is executed.
            </summary>
        </member>
        <member name="T:JetBrains.Annotations.StringFormatMethodAttribute">
             <summary>
             Indicates that the marked method builds string by the format pattern and (optional) arguments.
             The parameter, which contains the format string, should be given in the constructor. The format string
             should be in <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/>-like form.
             </summary>
             <example><code>
             [StringFormatMethod("message")]
             void ShowError(string message, params object[] args) { /* do something */ }
            
             void Foo() {
             ShowError("Failed: {0}"); // Warning: Non-existing argument in format string
             }
             </code></example>
        </member>
        <member name="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)">
            <param name="formatParameterName">
            Specifies which parameter of an annotated method should be treated as the format string
            </param>
        </member>
        <member name="T:JetBrains.Annotations.StructuredMessageTemplateAttribute">
             <summary>
             Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments
             in the order in which they appear
             </summary>
             <example><code>
             void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ }
            
             void Foo() {
             LogInfo("User created: {username}"); // Warning: Non-existing argument in format string
             }
             </code></example>
        </member>
        <member name="T:BeatyBit.Binstate.ArgumentTransferMode">
            <summary>
            Possible modes of transferring arguments during state transition from the currently active states to the newly activated.
            When transition is performed the state machine looks up for a required argument in the following order:
             * Not fallback argument passed to the <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> (or overload) method
             * Active state and all its parents
             * Fallback argument passed to the <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> (or overload) method
            </summary>
        </member>
        <member name="F:BeatyBit.Binstate.ArgumentTransferMode.Invalid">
            <summary> default value is invalid </summary>
        </member>
        <member name="F:BeatyBit.Binstate.ArgumentTransferMode.Strict">
            <summary>
            All actions performed on 'enter', 'exit', and/or 'transition' of a state involved in child/parent relation should have parameter of the same type
            in the declared method used as the action. Also, it's possible that some states require an argument but some not.
            </summary>
        </member>
        <member name="F:BeatyBit.Binstate.ArgumentTransferMode.Free">
             <summary>
              Each state can have its own argument type.
            
              If an argument type of the currently active state is <see cref="T:BeatyBit.Binstate.ITuple`2" /> all newly activated actions
              require arguments of type <see cref="T:BeatyBit.Binstate.ITuple`2" />, TX, and TY will receive corresponding argument.
            
              If a newly activated state requires an argument of type <see cref="T:BeatyBit.Binstate.ITuple`2" /> it is mixed from the arguments,
              see <see cref="T:BeatyBit.Binstate.ArgumentTransferMode"/> for details.
             </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2">
            <summary>
            This class is used to configure and build a state machine.
            </summary>
            <typeparam name="TState">Objects of this type are used as dictionary keys, it's your responsibility to provide valid type and objects.</typeparam>
            <typeparam name="TEvent">Objects of this type are used as dictionary keys, it's your responsibility to provide valid type and objects.</typeparam>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf">
            <summary>
            This class provides syntax-sugar to configure the state machine.
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction">
            <summary>
            This interface allows you to specify an action that will be called upon entering the state currently being configured.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter(System.Action)">
            <summary>
            Specifies a synchronous (blocking) action to be executed upon entering the state.
            </summary>
            <param name="enterAction">The synchronous action to execute.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="enterAction"/> is an 'async void' method.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter(System.Action{BeatyBit.Binstate.IStateController{`1}})">
            <summary>
            Specifies a synchronous (blocking) action with access to the state controller, to be executed upon entering the state.
            This overload provides the ability to perform auto transitions or waiting till the state be exited through <see cref="T:BeatyBit.Binstate.IStateController`1"/>.
            </summary>
            <param name="enterAction">The synchronous action with access to the state controller.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="enterAction"/> is an 'async void' method.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter(System.Func{System.Threading.Tasks.Task})">
            <summary>
            Specifies an asynchronous (non-blocking) action to be executed upon entering the state.
            </summary>
            <param name="enterAction">The asynchronous action returning a <see cref="T:System.Threading.Tasks.Task"/>.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <remarks>Do not use 'async void' methods; they must return a <see cref="T:System.Threading.Tasks.Task"/>.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter(System.Func{BeatyBit.Binstate.IStateController{`1},System.Threading.Tasks.Task})">
            <summary>
            Specifies an asynchronous (non-blocking) action with access to the state controller, to be executed upon entering the state.
            This overload provides the ability to perform auto transitions or waiting till the state be exited through <see cref="T:BeatyBit.Binstate.IStateController`1"/>.
            </summary>
            <param name="enterAction">The asynchronous action with access to the state controller, returning a <see cref="T:System.Threading.Tasks.Task"/>.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <remarks>Do not use 'async void' methods; they must return a <see cref="T:System.Threading.Tasks.Task"/>.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Action{``0})">
            <summary>
            Specifies a synchronous (blocking) action with an argument, to be executed upon entering the state.
            </summary>
            <typeparam name="TArgument">The type of the argument.</typeparam>
            <param name="enterAction">The synchronous action with an argument.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="enterAction"/> is an 'async void' method.</exception>
            <remarks>Refer to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> for argument usage details.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Action{BeatyBit.Binstate.IStateController{`1},``0})">
            <summary>
            Specifies a synchronous (blocking) action with an argument and access to the state controller, to be executed upon entering the state.
            This overload provides the ability to perform auto transitions or waiting till the state be exited through <see cref="T:BeatyBit.Binstate.IStateController`1"/>.
            </summary>
            <typeparam name="TArgument">The type of the argument.</typeparam>
            <param name="enterAction">The synchronous action with an argument and access to the state controller.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="enterAction"/> is an 'async void' method.</exception>
            <remarks>Refer to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> for argument usage details.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Func{``0,System.Threading.Tasks.Task})">
            <summary>
            Specifies an asynchronous (non-blocking) action with an argument, to be executed upon entering the state.
            </summary>
            <typeparam name="TArgument">The type of the argument.</typeparam>
            <param name="enterAction">The asynchronous action with an argument, returning a <see cref="T:System.Threading.Tasks.Task"/>.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <remarks>Do not use 'async void' methods; they must return a <see cref="T:System.Threading.Tasks.Task"/>. Refer to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> for argument usage details.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Func{BeatyBit.Binstate.IStateController{`1},``0,System.Threading.Tasks.Task})">
            <summary>
            Specifies an asynchronous (non-blocking) action with an argument and access to the state controller, to be executed upon entering the state.
            This overload provides the ability to perform auto transitions or waiting till the state be exited through <see cref="T:BeatyBit.Binstate.IStateController`1"/>.
            </summary>
            <typeparam name="TArgument">The type of the argument.</typeparam>
            <param name="enterAction">The asynchronous action with an argument and access to the state controller, returning a <see cref="T:System.Threading.Tasks.Task"/>.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1"/> instance for configuring the exit action.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="enterAction"/> is null.</exception>
            <remarks>Do not use 'async void' methods; they must return a <see cref="T:System.Threading.Tasks.Task"/>. Refer to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> for argument usage details.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``2(System.Action{``0,``1})">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Action{``0})"/>
            <remarks>Read about arguments in <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> method documentation.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``2(System.Action{BeatyBit.Binstate.IStateController{`1},``0,``1})">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Action{BeatyBit.Binstate.IStateController{`1},``0})"/>
            <remarks>Read about arguments in <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> method documentation.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``2(System.Func{``0,``1,System.Threading.Tasks.Task})">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Func{``0,System.Threading.Tasks.Task})"/>
            <remarks>Read about arguments in <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> method documentation.</remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``2(System.Func{BeatyBit.Binstate.IStateController{`1},``0,``1,System.Threading.Tasks.Task})">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Func{BeatyBit.Binstate.IStateController{`1},``0,System.Threading.Tasks.Task})"/>
            <remarks>Read about arguments in <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> method documentation.</remarks>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction">
            <summary>
            This interface allows you to specify an action that will be called upon exiting the state currently being configured.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction.OnExit(System.Action)">
            <summary>
            Specifies an action to be executed upon exiting the state.
            </summary>
            <param name="exitAction">The action to execute.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitionsEx"/> instance for configuring possible transitions.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="exitAction"/> is null.</exception>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx">
            <inheritdoc cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction"/>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx.OnExit``1(System.Action{``0})">
            <summary>
            Specifies an action with an argument to be executed upon exiting the state.
            </summary>
            <typeparam name="TArgument">The type of the argument.</typeparam>
            <param name="exitAction">The action to execute.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitionsEx"/> instance for configuring possible transitions.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="exitAction"/> is null.</exception>
            <remarks>Refer to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)"/> for argument usage details.</remarks>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1">
            <inheritdoc cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction"/>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1.OnExit(System.Action)">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx.OnExit``1(System.Action{``0})"/>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitAction`1.OnExit(System.Action{`2})">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IExitActionEx.OnExit``1(System.Action{``0})"/>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions">
            <summary>
            This interface is used to configure which transitions allowed from the currently configured state.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,`0,System.Action)">
            <summary>
            Defines a transition from the currently configured state to the state specified by <paramref name="stateId"/> when the <paramref name="event"/> is raised.
            Optionally, specify an action to be executed upon the transition before 'exit' action.
            </summary>
            <param name="event">The event that triggers the transition.</param>
            <param name="stateId">The ID of the state to transition to.</param>
            <param name="action">An optional action to be executed upon the transition.</param>
            <returns>The <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions"/> instance for chaining configuration.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="event"/> or <paramref name="stateId"/> is null.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,BeatyBit.Binstate.GetState{`0})">
            <summary>
            Defines a dynamic transition from the currently configured state to the state returned by <paramref name="getState"/> when the <paramref name="event"/> is raised.
            If <paramref name="getState"/> returns null, the transition is cancelled.
            </summary>
            <remarks>
            Use this overload if you use a ValueType (e.g. enum) as a <typeparamref name="TState" /> and the default value of the value type as a valid State id.
            Otherwise, consider using <see cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,System.Func{`0})" /> method as more simple.
            </remarks>
            <param name="event">The event that triggers the transition.</param>
            <param name="getState">A delegate that returns the ID of the state to transition to, or null to cancel the transition.</param>
            <returns>The <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions"/> instance for chaining configuration.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="event"/> or <paramref name="getState"/> is null.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,System.Func{`0})">
            <summary>
            Defines a dynamic transition from the currently configured state to the state returned by <paramref name="getState"/> when the <paramref name="event"/> is raised.
            If <paramref name="getState"/> returns null, the transition is cancelled.
            </summary>
            <remarks>
            Use this overload if you use a reference type (class) as a <typeparamref name="TState" /> or the default value of the value type doesn't represent
            a valid State id. If you use a value type (e.g. enum) as a <typeparamref name="TState" /> and the default value of the value type is a valid State id
            you must use <see cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,BeatyBit.Binstate.GetState{`0})" /> method.
            </remarks>
            <param name="event">The event that triggers the transition.</param>
            <param name="getState">A delegate that returns the ID of the state to transition to, or null to cancel the transition.</param>
            <returns>The <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions"/> instance for chaining configuration.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="event"/> or <paramref name="getState"/> is null.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AllowReentrancy(`1)">
            <summary>
            Defines a re-entrant transition from the current state to itself when the <paramref name="event"/> is raised.
            In such transition, no actions are executed.
            Use <see cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,`0,System.Action)"/> and specify "its own" State ID as a target state to create
            reentrancy transition which calls 'enter', 'exit', and 'transition' actions if any.
            </summary>
            <param name="event">The event that triggers the re-entrant transition.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="event"/> is null.</exception>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitionsEx">
             <summary>
            
             </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitionsEx.AddTransition``1(`1,`0,System.Action{``0})">
            <summary>
            Defines a transition from the currently configured state to the state specified by <paramref name="stateId"/> when the <paramref name="event"/> is raised.
            Specifies an action with an argument of type <typeparamref name="TArgument"/> to be executed upon the transition before the 'exit' action.
            </summary>
            <typeparam name="TArgument">The type of the argument passed to the action.</typeparam>
            <param name="event">The event that triggers the transition.</param>
            <param name="stateId">The ID of the state to transition to.</param>
            <param name="action">The action to be executed upon the transition, accepting an argument of type <typeparamref name="TArgument"/>.</param>
            <returns>The <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions`1"/> instance for chaining configuration.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="event"/>, <paramref name="stateId"/>, or <paramref name="action"/> is null.</exception>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions`1">
            <summary>
            This interface is used to configure which transitions allowed from the currently configured state.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions`1.AddTransition(`1,`0,System.Action{`2})">
            <inheritdoc cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitionsEx.AddTransition``1(`1,`0,System.Action{``0})"/>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IState">
            <summary>
            This interface allows you to define composite states, allowing a state to be designated as a substate of another.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IState.AsSubstateOf(`0)">
            <summary>
            Designates the currently configured state as a substate of the specified parent state.
            </summary>
            <param name="parentStateId">The ID of the parent state.</param>
            <returns>An <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction"/> instance for further configuration.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="parentStateId"/> is null.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.TransitionsEx.AddTransition(`1,System.Func{`0})">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)">
            <summary>
            Creates a builder of a state machine, use it to define state and configure transitions.
            </summary>
            <param name="onException">
            All exception thrown from 'enter', 'exit', and 'transition' actions passed to the state machine are caught in order not break the state of the state machine.
            Use this action to be notified about these exceptions.
            </param>
            <param name="options"> Configuration options for the state machine builder. </param>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.DefineState(`0)">
            <summary>
            Defines the new state in the state machine, if it is already defined throws an exception.
            </summary>
            <param name="stateId"> ID of the state; is used to reference it from other elements of the state machine. </param>
            <remarks> Use returned syntax-sugar object to configure the new state. </remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.GetOrDefineState(`0)">
            <summary>
            Defines the new state in the state machine, if it is already defined, returns the configurator.
            </summary>
            <param name="stateId"> ID of the state; is used to reference it from other elements of the state machine. </param>
            <remarks> Use returned syntax-sugar object to configure the new state. </remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.Build(`0)">
            <summary>
            Validates consistency and builds the state machine using provided configuration.
            </summary>
            <param name="initialStateId"> The initial state of the state machine. </param>
            <exception cref="T:System.InvalidOperationException"> Throws if there are any inconsistencies in the provided configuration. </exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.Build``1(`0,``0)">
            <summary>
            Validates consistency and builds the state machine using provided configuration.
            </summary>
            <param name="initialStateId"> The initial state of the state machine. </param>
            <param name="initialStateArgument"> If initial state requires argument use this overload to pass it </param>
            <exception cref="T:System.InvalidOperationException"> Throws if there are any inconsistencies in the provided configuration. </exception>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.Restore(System.String,BeatyBit.Binstate.ICustomSerializer)">
            <summary>
            Restores a state machine instance from serialized data.
            </summary>
            <param name="serializedData">A JSON string representing the previously saved state machine's state.
            See <see cref="M:BeatyBit.Binstate.IStateMachine`1.Serialize(BeatyBit.Binstate.ICustomSerializer)"/>.</param>
            <param name="customSerializer">An optional serializer used for state argument restoration. If not primitive or string type is used
            as <typeparamref name="TState"/> or an argument passed to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise(`0)"/> custom serializer should be provided.</param>
            <returns>A restored instance of the state machine configured with the states and active state from the provided serialized data.</returns>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.CreateStates">
            <summary>
            Creates and initializes the states of the state machine using the configuration data provided in the builder.
            This method also validates the state transitions and ensures that the argument transfer rules are consistent.
            </summary>
            <returns>
            Returns a dictionary containing the states of the state machine, where the key is the state ID and the value is the corresponding state object.
            </returns>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.ValidateTransitions(System.Collections.Generic.IReadOnlyDictionary{`0,BeatyBit.Binstate.IState{`0,`1}})">
            <summary>
            Validates that transitions don't reference not-defined states.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder`2.CreatePersistenceSignature">
            <summary>
            Create a unique signature for this instance based on _options and _stateConfigurators.
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.StateData">
            <summary>
            The <see cref="T:BeatyBit.Binstate.Builder`2"/> accumulates all data about a state machine's state in this class during configuration
            and then uses it to create an implementation of <see cref="T:BeatyBit.Binstate.IState`2"/> for use in <see cref="T:BeatyBit.Binstate.StateMachine`2"/>.
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Builder`2.IStateFactory">
            <summary>
            There are two types of the state in the system with and w/o Argument. To make a code type safe and avoid
            boxing of value type arguments, the <see cref="T:BeatyBit.Binstate.State`3" /> class has TArgument generic argument.
            What type will be used depends on the state 'enter', 'exit', and 'transition' actions configuration and becomes known during calling
            <see cref="M:BeatyBit.Binstate.Builder`2.Build``1(`0,``0)"/> method.
            If no arguments required the type <see cref="T:BeatyBit.Bits.Unit"/> is used as a TArgument, and it is treated by the implementation as "no argument required".
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Builder">
            <summary>
            Just the base type for the <see cref="T:BeatyBit.Binstate.Builder`2"/> to simplify the syntax of instantiating <see cref="T:BeatyBit.Binstate.Builder.Options"/>
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Builder.Options">
            <summary>
            Configuration options for the state machine builder.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Builder.Options.#ctor">
            <inheritdoc cref="T:BeatyBit.Binstate.Builder.Options"/>
        </member>
        <member name="P:BeatyBit.Binstate.Builder.Options.AllowDefaultValueAsStateId">
            <summary>
            Specifies whether the 'default' value can be used as a valid State ID when the type represented by TState
            is a <see cref="T:System.ValueType"/>, such as <see cref="T:System.Enum"/>.
            This is necessary if, for some reason, you have to use a type as TState that you did not create and cannot modify.
            In all other cases, it is recommended to disallow the use of the default value as a valid value to prevent errors.
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.Builder.Options.ArgumentTransferMode">
            <summary>
            The mode of transferring arguments to the newly activated states.
            See <see cref="T:BeatyBit.Binstate.ArgumentTransferMode"/> for details.
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.Builder.Options.EnableStateMachinePersistence">
            <summary>
            Specifies whether the state machine supports persistence. When enabled, the state machine can be persisted and restored.
            To serialize the state machine in the current state call <see cref="M:BeatyBit.Binstate.IStateMachine`1.Serialize(BeatyBit.Binstate.ICustomSerializer)"/>.
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.GetState`1">
            <summary>
            A delegate to be used with <see cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.ITransitions.AddTransition(`1,BeatyBit.Binstate.GetState{`0})" />.
            This delegate allows using the 'default' value of <see cref="T:System.ValueType"/> in case it's used as <typeparamref name="TState"/> as a valid state.
            </summary>
            <param name="state"> The state to which transition should be performed. </param>
            <returns> Returns false if no transition should be performed. </returns>
        </member>
        <member name="T:BeatyBit.Binstate.IStateController`1">
            <summary>
            This interface is used in 'enter' actions to control execution and to perform 'auto transitions'
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.IStateController`1.InMyState">
            <summary>
            Gets a value indicating whether the state machine is currently in the state for which the executing 'enter' action is defined.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.IStateController`1.RaiseAsync(`0)">
            <summary>
            Asynchronously raises an event to trigger a state transition.
            </summary>
            <param name="event">The event to raise.</param>
            <returns>Synchronously returns <c>true</c> if a transition is performed; otherwise, <c>false</c> if no transition was found.</returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException">
            Thrown if the 'enter' action of the target state requires an argument.
            User-defined exceptions from 'enter', 'exit', and 'dynamic transition' actions are caught and reported using the delegate
            passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)"/>.
            </exception>
        </member>
        <member name="M:BeatyBit.Binstate.IStateController`1.RaiseAsync``1(`0,``0,System.Boolean)">
            <summary>
            Asynchronously raises an event with an argument to trigger a state transition.
            </summary>
            <typeparam name="T">The type of the argument.</typeparam>
            <param name="event">The event to raise.</param>
            <param name="argument">The argument to pass with the event.</param>
            <param name="argumentIsFallback">Indicates whether this argument is used only as a fallback; if a state-specific argument is available,
            it will be used instead.</param>
            <returns>Synchronously returns <c>true</c> if a transition is performed; otherwise, <c>false</c> if no transition was found.</returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException">
            Thrown if the 'enter' action of the target state requires an argument.
            User-defined exceptions from 'enter', 'exit', and 'dynamic transition' actions are caught and reported using
            the delegate passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)"/>.
            </exception>
            <remarks>
            The argument is required if the 'enter' action of the target state or 'exit' action of the current state is configured to accept it.
            See <see cref="M:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction.OnEnter``1(System.Action{BeatyBit.Binstate.IStateController{`1},``0})"/>.
            </remarks>
        </member>
        <member name="T:BeatyBit.Binstate.IStateMachine`1">
            <summary>
            Defines the interface for a state machine, providing methods to raise events and manage state transitions.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.IStateMachine`1.Raise(`0)">
            <summary>
            Raises an event synchronously, blocking until all related actions are completed.
            </summary>
            <remarks>
            Waits for the completion of 'exit' and 'enter' actions (if defined) of the current state.
            If the 'enter' action of the target state is synchronous, it blocks until the action completes.
            If the 'enter' action of the target state is asynchronous, it returns immediately after the state change.
            </remarks>
            <param name="event">The event to raise.</param>
            <returns><c>true</c> if the state was changed; otherwise, <c>false</c>.</returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException">
            Thrown if the 'enter' action of the target state requires an argument.
            User-defined exceptions from 'enter', 'exit', and 'dynamic transition' actions are caught and reported using the
            delegate passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)"/>.
            </exception>
        </member>
        <member name="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)">
            <summary>
            Raises an event with an argument synchronously, blocking until all related actions are completed.
            </summary>
            <typeparam name="T">The type of the argument.</typeparam>
            <remarks>
            Waits for the completion of 'exit' and 'enter' actions (if defined) of the current state.
            If the 'enter' action of the target state is synchronous, it blocks until the action completes.
            If the 'enter' action of the target state is asynchronous, it returns immediately after the state change.
            </remarks>
            <param name="event">The event to raise.</param>
            <param name="argument">The argument to pass with the event.</param>
            <param name="argumentIsFallback">Indicates whether this argument is used only as a fallback; if a state-specific argument is available, it will be used instead.</param>
            <returns><c>true</c> if the state was changed; otherwise, <c>false</c>.</returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException">
            Thrown if the 'enter' action of the target state does not require an argument or requires an argument of an incompatible type.
            User-defined exceptions from 'enter', 'exit', and 'dynamic transition' actions are caught and reported using the delegate passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)"/>.
            </exception>
        </member>
        <member name="M:BeatyBit.Binstate.IStateMachine`1.RaiseAsync(`0)">
            <summary>
            Raises an event asynchronously, allowing control of completion through the returned <see cref="T:System.Threading.Tasks.Task"/>.
            </summary>
            <remarks>
            Waits for the completion of 'exit' and 'enter' actions (if defined) of the current state.
            If the 'enter' action of the target state is synchronous, the <see cref="T:System.Threading.Tasks.Task"/> completes when the action completes.
            If the 'enter' action of the target state is asynchronous, the <see cref="T:System.Threading.Tasks.Task"/> completes immediately after the state change.
            </remarks>
            <param name="event">The event to raise.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that completes with <c>true</c> if a transition was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException">
            Thrown if the 'enter' action of the target state requires an argument.
            User-defined exceptions from 'enter', 'exit', and 'dynamic transition' actions are caught and reported using the delegate passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)"/>.
            </exception>
        </member>
        <member name="M:BeatyBit.Binstate.IStateMachine`1.RaiseAsync``1(`0,``0,System.Boolean)">
            <summary>
            Raises an event with an argument asynchronously, allowing control of completion through the returned <see cref="T:System.Threading.Tasks.Task"/>.
            </summary>
            <typeparam name="T">The type of the argument.</typeparam>
            <remarks>
            Waits for the completion of 'exit' and 'enter' actions (if defined) of the current state.
            If the 'enter' action of the target state is synchronous, the <see cref="T:System.Threading.Tasks.Task"/> completes when the action completes.
            If the 'enter' action of the target state is asynchronous, the <see cref="T:System.Threading.Tasks.Task"/> completes immediately after the state change.
            </remarks>
            <param name="event">The event to raise.</param>
            <param name="argument">The argument to pass with the event.</param>
            <param name="argumentIsFallback">Indicates whether this argument is used only as a fallback; if a state-specific argument is available, it will be used instead.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that completes with <c>true</c> if a transition was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException">
            Thrown if the 'enter' action of the target state does not require an argument or requires an argument of an incompatible type.
            User-defined exceptions from 'enter', 'exit', and 'dynamic transition' actions are caught and reported using the delegate passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)"/>.
            </exception>
        </member>
        <member name="M:BeatyBit.Binstate.IStateMachine`1.Serialize(BeatyBit.Binstate.ICustomSerializer)">
            <summary>
            Serializes the StateMachine in its current state to string representation.
            It can be restored using <see cref="M:BeatyBit.Binstate.Builder`2.Restore(System.String,BeatyBit.Binstate.ICustomSerializer)"/> method.
            </summary>
            <param name="customSerializer">If not primitive or string type is used as TState in <see cref="T:BeatyBit.Binstate.Builder`2"/> or
            an argument passed to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise(`0)"/> custom serializer should be provided.</param>
        </member>
        <member name="T:BeatyBit.Binstate.ITuple`2">
             <summary>
             This data structure is used if a state needs to accept two arguments at once,
             usually one is passed to <see cref="M:BeatyBit.Binstate.IStateMachine`1.Raise``1(`0,``0,System.Boolean)" /> method and the second one is obtained from the previously active
             states during transition automatically. But they could be both from the active states.
            
             Interface is used to make argument types invariant to pass arguments of compatible types.
             </summary>
        </member>
        <member name="P:BeatyBit.Binstate.ITuple`2.ItemX">
            <summary />
        </member>
        <member name="P:BeatyBit.Binstate.ITuple`2.ItemY">
            <summary />
        </member>
        <member name="T:BeatyBit.Binstate.Tuple`2">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.Tuple`2.#ctor(`0,`1)">
            <summary />
        </member>
        <member name="P:BeatyBit.Binstate.Tuple`2.ItemX">
            <inheritdoc />
        </member>
        <member name="P:BeatyBit.Binstate.Tuple`2.ItemY">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.Tuple`2.Equals(System.Object)">
            <remarks> Equals doesn't check the exact type of the other object, only if it can be cast to <see cref="T:BeatyBit.Binstate.ITuple`2" /> </remarks>
        </member>
        <member name="M:BeatyBit.Binstate.Tuple`2.GetHashCode">
            <summary />
        </member>
        <member name="M:BeatyBit.Binstate.Tuple`2.ToString">
            <inheritdoc />
        </member>
        <member name="T:BeatyBit.Binstate.ICustomSerializer">
            <summary>
            Defines serialization and deserialization methods for custom data handling.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.ICustomSerializer.Serialize``1(``0)">
            <summary>
            Serializes the specified value into its string representation.
            </summary>
            <typeparam name="T">The type of the value to be serialized.</typeparam>
            <param name="value">The value to serialize.</param>
        </member>
        <member name="M:BeatyBit.Binstate.ICustomSerializer.Deserialize(BeatyBit.Binstate.Persistence.Item)">
            <summary>
            Deserializes the specified string into an object instance.
            </summary>
            <returns>An object instance created from the serialized string.</returns>
        </member>
        <member name="T:BeatyBit.Binstate.Persistence">
            <summary>
            Provides functionality for persisting and restoring the state of a state machine.
            Contains nested classes for handling state data and serialization.
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.Persistence.EnumCustomSerializer">
            <summary>
            Provides serialization and deserialization methods specifically for <see cref="T:System.Enum"/> types.
            This class is designed to handle the persistence of enum instances by converting them
            into a serializable <see cref="T:BeatyBit.Binstate.Persistence.Item"/> format and vice versa.
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.Persistence.EnumCustomSerializer.Instance">
            <summary>
            Gets the singleton instance of the <see cref="T:BeatyBit.Binstate.Persistence.EnumCustomSerializer"/> class.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Persistence.EnumCustomSerializer.Serialize``1(``0)">
            <summary>
            Serializes an enumeration value into a <see cref="T:BeatyBit.Binstate.Persistence.Item"/> representation.
            </summary>
            <typeparam name="T">
            The type of the enum to serialize.
            Must be an enum type; otherwise, an exception is thrown.
            </typeparam>
            <param name="value">The enumeration value to serialize.</param>
            <returns>A serialized <see cref="T:BeatyBit.Binstate.Persistence.Item"/> that represents the enum value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="value"/> is null.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when <typeparamref name="T"/> is not an enum type.</exception>
        </member>
        <member name="M:BeatyBit.Binstate.Persistence.EnumCustomSerializer.Deserialize(BeatyBit.Binstate.Persistence.Item)">
            <summary>
            Deserializes a <see cref="T:BeatyBit.Binstate.Persistence.Item"/> back into the corresponding enumeration value.
            </summary>
            <param name="item">The <see cref="T:BeatyBit.Binstate.Persistence.Item"/> to deserialize.</param>
            <returns>The deserialized enumeration value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="item"/> is null.</exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown when the <paramref name="item"/> does not represent an enum type.
            </exception>
        </member>
        <member name="T:BeatyBit.Binstate.Persistence.Item">
            <summary>
            Represents a serializable item with type information and value.
            Used to persist state machine state or arguments.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Persistence.Item.#ctor(System.String,System.String)">
            <inheritdoc cref="T:BeatyBit.Binstate.Persistence.Item"/>
        </member>
        <member name="P:BeatyBit.Binstate.Persistence.Item.TypeInfo">
            <summary>
            String description of the <see cref="P:BeatyBit.Binstate.Persistence.Item.Value"/> type.
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.Persistence.Item.Value">
            <summary>
            Serialized value.
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.StateMachineException">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachineException.#ctor(System.String)">
            <inheritdoc />
        </member>
        <member name="T:BeatyBit.Binstate.TransitionException">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.TransitionException.#ctor(System.String)">
            <inheritdoc />
        </member>
        <member name="T:BeatyBit.Binstate.Argument">
            <summary>
            This class contains tools and logic for setting arguments to their consumers.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.Argument.SetArgumentByReflectionUnsafe(BeatyBit.Binstate.IState,System.Type,System.Object)">
            <summary>
            Validation of the argument and target type should be performed on the caller side
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.IState.IsActive">
            <summary>
            This property is set from protected by lock part of the code so it's no need synchronization
            see <see cref="M:BeatyBit.Binstate.StateMachine`2.CreateActivateStateNotGuardedAction(BeatyBit.Binstate.IState{`0,`1},System.Action{BeatyBit.Binstate.IState})" /> implementation for details.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.IState.ExitSafe(System.Action{System.Exception})">
            <summary>
            <see cref="M:BeatyBit.Binstate.State`3.ExitSafe(System.Action{System.Exception})" /> can be called earlier then <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction" /> of the activated state,
            see <see cref="M:BeatyBit.Binstate.StateMachine`2.PerformTransition(BeatyBit.Binstate.StateMachine{`0,`1}.TransitionData)" /> implementation for details.
            In this case it should wait till <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.IEnterAction" /> be called and exited, before call exit action
            </summary>
        </member>
        <member name="F:BeatyBit.Binstate.State`3._enterActionFinished">
            <summary>
            This event is used to wait while state's 'enter' action is finished before call 'exit' action and change the active state of the state machine.
            See usages for details.
            </summary>
        </member>
        <member name="F:BeatyBit.Binstate.State`3._enterActionStarted">
            <summary>
            This event is used to avoid race condition when <see cref="M:BeatyBit.Binstate.State`3.ExitSafe(System.Action{System.Exception})" /> method is called before <see cref="M:BeatyBit.Binstate.State`3.EnterSafe(BeatyBit.Binstate.IStateController{`1},System.Action{System.Exception})" /> method.
            See usages for details.
            </summary>
        </member>
        <member name="F:BeatyBit.Binstate.State`3._task">
            <summary>
            This task is used to wait while state's 'enter' action is finished before call 'exit' action and change the active state of the state machine in
            case of async OnEnter action.
            See usages for details.
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.State`3.ExitSafe(System.Action{System.Exception})">
            <summary>
            <see cref="M:BeatyBit.Binstate.State`3.ExitSafe(System.Action{System.Exception})" /> can be called earlier then <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.EnterAction" /> of the activated state,
            see <see cref="M:BeatyBit.Binstate.StateMachine`2.PerformTransition(BeatyBit.Binstate.StateMachine{`0,`1}.TransitionData)" /> implementation for details.
            In this case it should wait till <see cref="T:BeatyBit.Binstate.Builder`2.ConfiguratorOf.EnterAction" /> will be called and exited, before call exit action
            </summary>
        </member>
        <member name="T:BeatyBit.Binstate.StateMachine`2">
            <summary>
            The state machine implementation. Use <see cref="T:BeatyBit.Binstate.Builder`2" /> to configure and build a state machine.
            </summary>
        </member>
        <member name="P:BeatyBit.Binstate.StateMachine`2.Controller.InMyState">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.Controller.RaiseAsync(`1)">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.Controller.RaiseAsync``1(`1,``0,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="F:BeatyBit.Binstate.StateMachine`2._states">
            <summary>
            The map of all defined states
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.Raise(`1)">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.Raise``1(`1,``0,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.RaiseAsync(`1)">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.RaiseAsync``1(`1,``0,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.EnterInitialState``1(``0)">
            <summary>
            This is implemented as a separate method rather than constructor logic to be able specifying generic argument <typeparamref name="T"/>.
            While the <see cref="F:BeatyBit.Binstate.StateMachine`2._activeState"/> is set in constructor to use not nullable type for it.
            </summary>
            <param name="initialStateArgument">Argument for the initial state</param>
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.Serialize(BeatyBit.Binstate.ICustomSerializer)">
            <inheritdoc />
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.PrepareTransition``1(`1,``0,System.Boolean)">
            <summary>
            Performing transition is split into two parts, the first one is "readonly", preparing and checking all the data, can throw an exception.
            </summary>
            <returns>
            Returns null if:
            no transition found by specified <paramref name="event" /> from the current state
            dynamic transition returns 'null'
            </returns>
            <exception cref="T:BeatyBit.Binstate.TransitionException"> Throws if passed argument doesn't match the 'enter' action of the target state. </exception>
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.PerformTransition(BeatyBit.Binstate.StateMachine{`0,`1}.TransitionData)">
            <summary>
            Performs changes in the state machine state. Doesn't throw any exceptions, exceptions from the user code, 'enter' and 'exit' actions are translated
            into the delegate passed to <see cref="M:BeatyBit.Binstate.Builder`2.#ctor(System.Action{System.Exception},BeatyBit.Binstate.Builder.Options)" />
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.CreateActivateStateNotGuardedAction(BeatyBit.Binstate.IState{`0,`1},System.Action{BeatyBit.Binstate.IState})">
            <summary>
            Doesn't acquire lock itself, caller should care about safe context
            </summary>
            <returns> Returns an action which should be called to call 'enter' action of the state </returns>
        </member>
        <member name="T:BeatyBit.Binstate.StateMachine`2.VirtualRootState">
            <summary>
            See usage for details
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.VirtualRootState.#ctor(`0)">
            <summary>
            See usage for details
            </summary>
        </member>
        <member name="M:BeatyBit.Binstate.StateMachine`2.VirtualRootState.FindTransitionTransitive(`1,BeatyBit.Binstate.Transition{`0,`1}@)">
            <summary>
            Returns transition to the <see cref="!:targetStateId"/> no matter what <paramref name="event"/> is passed
            </summary>
        </member>
        <member name="F:BeatyBit.Binstate.Transition`2.IsStatic">
            <summary>
            Means a transition targets the predefined state in opposite to the calculated dynamical runtime
            </summary>
        </member>
    </members>
</doc>
