<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Shuriken.Wpf</name>
    </assembly>
    <members>
        <member name="T:Shuriken.Diagnostics.EventListener">
            <summary>
            Allows capturing of the library events.
            </summary>
        </member>
        <member name="E:Shuriken.Diagnostics.EventListener.OperationalEvent">
            <summary>
            Occurs when operational events are raised.
            </summary>
        </member>
        <member name="E:Shuriken.Diagnostics.EventListener.AnalyticEvent">
            <summary>
            Occurs when analytic events are raised.
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventListener.ToDebugMessage(System.Diagnostics.Tracing.EventWrittenEventArgs)">
            <summary>
            Create the event message suitable for the debugging.
            </summary>
            <param name="eventArgs">The <see cref="T:System.Diagnostics.Tracing.EventWrittenEventArgs" /> object containing the event data.</param>
            <returns>The event message.</returns>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.MonitorStart">
            <summary>
            Monitor has been started.
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.MonitorStop">
            <summary>
            Monitor has been stopped.
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.MonitorSuspend">
            <summary>
            Monitor has been suspended.
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.MonitorResume">
            <summary>
            Monitor has been resumed.
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.StoppingDueToFailedUpdate(System.String)">
            <summary>
            Stopping the monitoring because of an exception while updating the values: {0}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.StoppingDueToFailedChangeNotifications(System.String)">
            <summary>
            Stopping the monitoring because of an exception while sending the change notifications: {0}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.FailedAttachingSystemEvent(System.String,System.String)">
            <summary>
            Failed attaching the system event '{0}': {1}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.MissingMonitoringScope(System.String,System.String)">
            <summary>
            The {0} event handler is assigned, but the {1} is not available.
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableInitiallyToReadProperty(System.String,System.String,System.String)">
            <summary>
            Cannot initially get the value of the '{1}' property of the '{0}' object: {2}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableSubsequentlyToReadProperty(System.String,System.String,System.String)">
            <summary>
            Cannot get the value of the '{1}' property of the '{0}' object: {2}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableInitiallyToInvokeCommandMethod(System.String,System.String,System.String,System.String)">
            <summary>
            Cannot initially invoke the '{2}' method of the '{1}' property of the '{0}' object: {3}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableSubsequentlyToInvokeCommandMethod(System.String,System.String,System.String,System.String)">
            <summary>
            Cannot invoke the '{2}' method of the '{1}' property of the '{0}' object: {3}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableToAnalyzeProperty(System.String,System.String,System.String)">
            <summary>
            Cannot analyze the value of the '{1}' property of the '{0}' object: {2}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableToRaisePropertyChangeNotification(System.String,System.String,System.String)">
            <summary>
            Cannot raise the change notification for the '{1}' property of the '{0}' object: {2}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.UnableToRaiseCommandPropertyChangeNotification(System.String,System.String,System.String)">
            <summary>
            Cannot raise the change notification for the '{1}' command property of the '{0}' object: {2}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.CommandFailed(System.String)">
            <summary>
            Command execution failed: {0}
            </summary>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.PerformanceMonitoredProperties(System.Int32)">
            <remarks>Number of monitored properties. Lower value is better. A high value can indicate an unnecessary observation or memory leaks (e.g. due to missing UI virtualization).</remarks>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.PerformanceCycleTime(System.Int64)">
            <remarks>Complete cycle time [ms]. Lower value is better. For smooth performance it should not exceed 15ms.</remarks>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.PerformanceLists(System.Int32,System.Int32,System.Int32,System.Int32)">
            <param name="capacityThreadAffine">Total number of slots (thread-affine).</param>
            <param name="countThreadAffine">Number of used slots (thread-affine).</param>
            <param name="capacityThreadSafe">Total number of slots (thread-safe).</param>
            <param name="countThreadSafe">Number of used slots (thread-safe).</param>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.PerformanceListsWithChangedProperties(System.Int32,System.Int32,System.Int32,System.Int32)">
            <param name="capacityThreadAffine">Total number of slots (thread-affine with changed properties).</param>
            <param name="countThreadAffine">Number of used slots (thread-affine with changed properties).</param>
            <param name="capacityThreadSafe">Total number of slots (thread-safe with changed properties).</param>
            <param name="countThreadSafe">Number of used slots (thread-safe with changed properties).</param>
        </member>
        <member name="M:Shuriken.Diagnostics.EventSource.PerformanceListsWithItemsToBeRemoved(System.Int32,System.Int32,System.Int32,System.Int32)">
            <param name="capacityThreadAffine">Total number of slots (thread-affine with items to be removed).</param>
            <param name="countThreadAffine">Number of used slots (thread-affine with items to be removed).</param>
            <param name="capacityThreadSafe">Total number of slots (thread-safe with items to be removed).</param>
            <param name="countThreadSafe">Number of used slots (thread-safe with items to be removed).</param>
        </member>
        <member name="T:Shuriken.Monitoring.WpfNotificationContext">
            <summary>
            Provides an <see cref="T:Shuriken.Monitoring.INotificationContext"/> for WPF applications.
            </summary>
        </member>
        <member name="M:Shuriken.Monitoring.WpfNotificationContext.#ctor(System.Windows.Threading.Dispatcher)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Monitoring.WpfNotificationContext"/> class.
            </summary>
            <param name="dispatcher">The WPF application dispatcher.</param>
            <exception cref="T:System.ArgumentNullException"><see cref="F:Shuriken.Monitoring.WpfNotificationContext.dispatcher"/> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Monitoring.WpfNotificationContext.Invoke(System.Action)">
            <inheritdoc />
        </member>
        <member name="M:Shuriken.Monitoring.WpfNotificationContext.InvokeAsync(System.Action)">
            <inheritdoc />
        </member>
        <member name="T:Shuriken.Monitoring.ApplicationMonitorScope">
            <summary>
            Performs monitoring (automatic tracking) of the <see cref="T:Shuriken.ObservableObject"/> instances.
            </summary>
            <remarks>
            If the scope is closed deterministically (e.g. by exiting the <c>using</c> block) any exception caused the scope to close is re-thrown.
            </remarks>
        </member>
        <member name="F:Shuriken.Monitoring.ApplicationMonitorScope.countEventForSuspensions">
            <remarks>
            <list type="table">
                <listheader>
                    <term>State</term>
                    <description>Condition</description>
                </listheader>
                <item>
                    <term>Running</term>
                    <description>
                        <c>countEventForSuspensions</c>.<see cref="P:System.Threading.CountdownEvent.CurrentCount"/> == 0.
                    </description>
                </item>
                <item>
                    <term>Suspended</term>
                    <description>
                        <c>countEventForSuspensions</c>.<see cref="P:System.Threading.CountdownEvent.CurrentCount"/> &gt; 0.
                    </description>
                </item>
            </list>
            The field also serves as a sync root for the <see cref="F:Shuriken.Monitoring.ApplicationMonitorScope.sessionSuspension"/> field.
            </remarks>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.#ctor(Shuriken.Monitoring.INotificationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Monitoring.ApplicationMonitorScope"/> class.
            </summary>
            <param name="notificationContext">The notification context.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="notificationContext"/> is <c>null</c>.</exception>
            <exception cref="T:System.InvalidOperationException">The monitor scope is already available.</exception>
            <remarks>
            The <paramref name="notificationContext"/> is used for:
            <list type="bullet">
                <item>getting values of non-thread-safe objects.</item>
                <item>sending notifications for changed properties.</item>
            </list>
            </remarks>
        </member>
        <member name="P:Shuriken.Monitoring.ApplicationMonitorScope.NotificationContext">
            <summary>
            Gets the notification context.
            </summary>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.Suspend">
            <summary>
            Suspends the monitoring.
            </summary>
            <returns>
            An <see cref="T:System.IDisposable"/> object used to resume the monitoring by invoking the <see cref="M:System.IDisposable.Dispose"/> method.
            </returns>
            <exception cref="T:System.InvalidOperationException">Maximum suspension depth has been exceeded.</exception>
            <remarks>
            Do not invoke the method from the property annotated with the <see cref="T:Shuriken.ObservableAttribute"/>.
            </remarks>
        </member>
        <member name="P:Shuriken.Monitoring.ApplicationMonitorScope.Current">
            <summary>
            Gets the current <see cref="T:Shuriken.Monitoring.ApplicationMonitorScope"/>.
            </summary>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.Finalize">
            <summary>
            Finalizes an instance of the <see cref="T:Shuriken.Monitoring.ApplicationMonitorScope"/> class.
            </summary>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.Lists.UpdateValues(Shuriken.Monitoring.INotificationContext,Shuriken.Monitoring.ApplicationMonitorScope.Lists)">
            <exception cref="T:System.InvalidOperationException">
                The <see cref="M:Shuriken.Monitoring.INotificationContext.InvokeAsync(System.Action)"/> method of the <see cref="T:Shuriken.Monitoring.INotificationContext"/> object returns <c>null</c>.
            </exception>
        </member>
        <member name="F:Shuriken.Monitoring.ApplicationMonitorScope.observableObjectTable">
            <remarks>
            Serves also as the sync root for <see cref="F:Shuriken.Monitoring.ApplicationMonitorScope.observableObjectInfos"/>.
            </remarks>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.RunMonitor">
            <exception cref="T:System.InvalidOperationException">
                The <see cref="M:Shuriken.Monitoring.INotificationContext.InvokeAsync(System.Action)"/> method of the <see cref="T:Shuriken.Monitoring.INotificationContext"/> object returns <c>null</c>.
            </exception>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.SystemEventsOnSessionSwitch(System.Object,Microsoft.Win32.SessionSwitchEventArgs)">
            <exception cref="T:System.InvalidOperationException">Maximum suspension depth has been exceeded.</exception>
        </member>
        <member name="F:Shuriken.Monitoring.ApplicationMonitorScope.CountEvent.manualResetEvent">
            <remarks>
            The field is also used as sync root for <c>lock</c> statements.
            </remarks>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.CountEvent.Increment">
            <exception cref="T:System.InvalidOperationException">Maximum suspension depth has been exceeded.</exception>
        </member>
        <member name="M:Shuriken.Monitoring.ApplicationMonitorScope.Suspension.#ctor(Shuriken.Monitoring.ApplicationMonitorScope.CountEvent)">
            <exception cref="T:System.InvalidOperationException">Maximum suspension depth has been exceeded.</exception>
        </member>
        <member name="T:Shuriken.Monitoring.INotificationContext">
            <summary>
            Defines methods to invoke actions in a specific context. The <see cref="T:Shuriken.Monitoring.ApplicationMonitorScope"/> uses the context to retrieve the current
            values and send notifications.
            </summary>
        </member>
        <member name="M:Shuriken.Monitoring.INotificationContext.Invoke(System.Action)">
            <summary>
            Executes the specified action synchronously.
            </summary>
            <param name="action">The action.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="action"/> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Monitoring.INotificationContext.InvokeAsync(System.Action)">
            <summary>
            Executes the specified action asynchronously.
            </summary>
            <param name="action">The action.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/>, which is returned immediately after the method is called, that can be used to wait for the completion.
            </returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="action"/> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Monitoring.ObservableObjectInfo.CreatePropertyGetMethod(System.Reflection.PropertyInfo)">
            <remarks>
            For the <c>SampleProperty</c> property of a <c>SampleObject</c> the following dynamic method is generated:
            <code>
                static object DynamicMethod(ObservableObject arg)
                {
                    return ((SampleObject)arg).SampleProperty;
                }
            </code>
            </remarks>
        </member>
        <member name="M:Shuriken.Monitoring.ObservableObjectInfo.CreateParameterlessCommandPropertyGetMethod(System.Reflection.PropertyInfo)">
            <remarks>
            For the <c>SampleProperty</c> property of a <c>SampleObject</c> the following dynamic method is generated:
            <code>
                static ParameterlessCommand DynamicMethod(ObservableObject arg)
                {
                    return ((SampleObject)arg).SampleProperty;
                }
            </code>
            </remarks>
        </member>
        <member name="M:Shuriken.Monitoring.ObservableObjectInfo.CreateParameterizedCommandPropertyGetMethod(System.Reflection.PropertyInfo)">
            <remarks>
            For the <c>SampleProperty</c> property of a <c>SampleObject</c> the following dynamic method is generated:
            <code>
                static CommandBase DynamicMethod(ObservableObject arg)
                {
                    return ((SampleObject)arg).SampleProperty;
                }
            </code>
            </remarks>
        </member>
        <member name="M:Shuriken.Monitoring.ObservableObjectInfo.UpdateValues">
            <returns>
            <c>true</c> if the monitoring of the observable object should continue; <c>false</c> if the monitoring of the observable object should be
            stopped because the object has been GCed.
            </returns>
        </member>
        <member name="M:Shuriken.Monitoring.ObservableObjectInfo.AnalyzeValues">
            <returns>The number of properties.</returns>
        </member>
        <member name="M:Shuriken.Monitoring.ObservableObjectInfo.SendNotifications">
            <returns>
            <c>true</c> if the monitoring of the observable object should continue; <c>false</c> if the monitoring of the observable object should be
            stopped because the object has been GCed.
            </returns>
        </member>
        <member name="T:Shuriken.ObservableAttribute">
            <summary>
            Annotates the property as observable.
            </summary>
            <remarks>
            To be monitored the property must belong to a class that is a subclass of the <see cref="T:Shuriken.ObservableObject"/> class.<para />
            For thread-safety reasons the equality analysis uses the <see cref="M:System.Object.ReferenceEquals(System.Object,System.Object)"/> method to compare reference type objects and
            the <see cref="M:System.Object.Equals(System.Object,System.Object)"/> method for value type objects. Mutable value type should be avoided, because analyzing value
            changes is not guaranteed to be thread-safe.
            </remarks>
        </member>
        <member name="T:Shuriken.ObservableObject">
            <summary>
            Represents a base class for observable objects.
            </summary>
            <remarks>
            In order to provide public observable properties (e.g. for binding) use the following guidelines to define properties:
            <list type="table">
                <listheader>
                    <term>Case</term>
                    <description>Guideline</description>
                </listheader>
                <item>
                    <term>Regular properties</term>
                    <description>
                        ALWAYS annotate the property with the <see cref="T:Shuriken.ObservableAttribute"/>. The property values are tracked automatically.
                    </description>
                </item>
                <item>
                    <term>Immutable properties</term>
                    <description>
                        NEVER annotate the property with the <see cref="T:Shuriken.ObservableAttribute"/>. It's not needed to track the property values as they
                        never change.
                    </description>
                </item>
                <item>
                    <term>Indexers</term>
                    <description>
                        NEVER annotate the property with the <see cref="T:Shuriken.ObservableAttribute"/>. An indexer cannot be tracked automatically. Use the
                        <see cref="M:Shuriken.ObservableObject.NotifyIndexerChange"/> method to send notifications.
                    </description>
                </item>
                <item>
                    <term><see cref="T:Shuriken.Command"/> properties (declared property type)</term>
                    <description>
                        CONSIDER annotating the property with the <see cref="T:Shuriken.ObservableAttribute"/>. Even if the property is immutable (never changes)
                        the <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/> can change. However, if the <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/>
                        never changes (e.g. only <c>false</c> while the command is being executed) the property should not be annotated with the
                        <see cref="T:Shuriken.ObservableAttribute"/>.
                    </description>
                </item>
                <item>
                    <term><see cref="T:Shuriken.AsyncCommand"/> properties (declared property type)</term>
                    <description>
                        ALWAYS annotate the property with the <see cref="T:Shuriken.ObservableAttribute"/>. Even if the property is immutable (never changes) the
                        <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/> can change. The <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/> always returns
                        <c>false</c> while the command is being executed.
                    </description>
                </item>
                <item>
                    <term><see cref="T:Shuriken.Command`1"/> properties (declared property type)</term>
                    <description>
                        CONSIDER not annotating the property with the <see cref="T:Shuriken.ObservableAttribute"/>. Changes of
                        <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/> cannot be tracked automatically. Use the
                        <see cref="M:Shuriken.CommandBase.NotifyCanExecuteChanged"/> method to send notifications. Only if the property is not immutable it should be
                        annotated with the <see cref="T:Shuriken.ObservableAttribute"/>.
                    </description>
                </item>
                <item>
                    <term><see cref="T:Shuriken.AsyncCommand`1"/> properties (declared property type)</term>
                    <description>
                        ALWAYS annotate the property with the <see cref="T:Shuriken.ObservableAttribute"/>. Even if the property is immutable (never changes) and the
                        <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/> cannot be tracked automatically the method will always return <c>false</c>
                        while the command is being executed.
                    </description>
                </item>
                <item>
                    <term><see cref="T:System.Windows.Input.ICommand"/> properties (declared property type)</term>
                    <description>
                        CONSIDER not annotating the property with the <see cref="T:Shuriken.ObservableAttribute"/>. Changes of
                        <see cref="M:System.Windows.Input.ICommand.CanExecute(System.Object)"/> cannot be tracked automatically. Only if the property is not immutable it should be annotated
                        with the <see cref="T:Shuriken.ObservableAttribute"/>.
                    </description>
                </item>
            </list>
            </remarks>
        </member>
        <member name="M:Shuriken.ObservableObject.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.ObservableObject" /> class.
            </summary>
            <param name="isThreadSafe">if set to <c>true</c> the object is considered thread-safe.</param>
        </member>
        <member name="P:Shuriken.ObservableObject.IsThreadSafe">
            <summary>
            Gets a value indicating whether this instance is thread-safe.
            </summary>
        </member>
        <member name="M:Shuriken.ObservableObject.NotifyPropertyChange(System.String)">
            <summary>
            Notifies the property change.
            </summary>
            <param name="propertyName">Name of the property.</param>
        </member>
        <member name="M:Shuriken.ObservableObject.NotifyIndexerChange">
            <summary>
            Notifies the indexer change.
            </summary>
        </member>
        <member name="E:Shuriken.ObservableObject.PropertyChanged">
            <inheritdoc />
        </member>
        <member name="T:Shuriken.AsyncCommand">
            <summary>
            Represents an asynchronous parameterless command. The <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/> method always returns <c>false</c> while
            the command is being executed.
            </summary>
            <remarks>
            Although the class is a thread-safe <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/>, the <see cref="T:Shuriken.ParameterlessCommand"/> method is called in
            the same context as the parent <see cref="T:Shuriken.ObservableAttribute"/> (if the corresponding command property is annotated with the
            <see cref="T:Shuriken.ObservableObject"/>), i.e. only if the parent <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/> is thread-safe the
            <see cref="T:Shuriken.ParameterlessCommand"/> method will be invoked in a background thread.<para />
            ALWAYS annotate <see cref="T:Shuriken.ObservableAttribute"/> properties with the <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/>. Even if the property is
            immutable (never changes) the <see cref="T:Shuriken.ParameterlessCommand"/> can change. The <see cref="T:Shuriken.ParameterlessCommand"/> always returns
            <c>false</c> while the command is being executed.
            </remarks>
        </member>
        <member name="M:Shuriken.AsyncCommand.#ctor(System.Func{System.Threading.Tasks.Task},System.Func{System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.AsyncCommand" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.AsyncCommand.#ctor(System.Func{System.Threading.CancellationToken,System.Threading.Tasks.Task},System.Func{System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.AsyncCommand" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.AsyncCommand.#ctor(System.Func{Shuriken.CommandExecutionController,System.Threading.CancellationToken,System.Threading.Tasks.Task},System.Func{System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.AsyncCommand" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="P:Shuriken.AsyncCommand.RunningExecution">
            <inheritdoc />
        </member>
        <member name="P:Shuriken.AsyncCommand.CompletedExecution">
            <inheritdoc />
        </member>
        <member name="M:Shuriken.AsyncCommand.Execute">
            <summary>
            Executes this command.
            </summary>
        </member>
        <member name="M:Shuriken.AsyncCommand.StartExecute">
            <summary>
            Starts the execution.
            </summary>
        </member>
        <member name="T:Shuriken.AsyncCommand`1">
            <summary>
            Represents an asynchronous parameterized command. The <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/> method always returns <c>false</c>
            while the command is being executed.
            </summary>
            <typeparam name="T">The command parameter type.</typeparam>
            <remarks>
            Although the class is a thread-safe <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/>, the <see cref="T:Shuriken.ParameterizedCommand`1"/> method is
            called in the same context as the parent <see cref="T:Shuriken.ObservableAttribute"/> (if the corresponding command property is annotated with the
            <see cref="T:Shuriken.ObservableObject"/>), i.e. only if the parent <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/> is thread-safe the
            <see cref="T:Shuriken.ParameterizedCommand`1"/> method will be invoked in a background thread.<para />
            ALWAYS annotate <see cref="T:Shuriken.ObservableAttribute"/> properties with the <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/>. Even if the property
            is immutable (never changes) and the <see cref="T:Shuriken.ParameterizedCommand`1"/> cannot be tracked automatically the method will always return
            <c>false</c> while the command is being executed. The <see cref="T:Shuriken.ParameterlessCommand"/> always returns <c>false</c> while the
            command is being executed.
            </remarks>
        </member>
        <member name="M:Shuriken.AsyncCommand`1.#ctor(System.Func{`0,System.Threading.Tasks.Task},System.Func{`0,System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.AsyncCommand`1" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.AsyncCommand`1.#ctor(System.Func{`0,System.Threading.CancellationToken,System.Threading.Tasks.Task},System.Func{`0,System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.AsyncCommand`1" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.AsyncCommand`1.#ctor(System.Func{`0,Shuriken.CommandExecutionController,System.Threading.CancellationToken,System.Threading.Tasks.Task},System.Func{`0,System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.AsyncCommand`1" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="P:Shuriken.AsyncCommand`1.RunningExecution">
            <inheritdoc />
        </member>
        <member name="P:Shuriken.AsyncCommand`1.CompletedExecution">
            <inheritdoc />
        </member>
        <member name="M:Shuriken.AsyncCommand`1.Execute(`0)">
            <summary>
            Executes this command.
            </summary>
            <param name="arg">The argument.</param>
        </member>
        <member name="M:Shuriken.AsyncCommand`1.StartExecute(`0)">
            <summary>
            Starts the execution.
            </summary>
            <param name="arg">The argument.</param>
        </member>
        <member name="T:Shuriken.Command">
            <summary>
            Represents a parameterless command. The <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/> method always returns <c>false</c> while the command is
            being executed.
            </summary>
            <remarks>
            CONSIDER annotating <see cref="T:Shuriken.Command"/> properties with the <see cref="M:Shuriken.ParameterlessCommand.CanExecute"/>. Even if the property is immutable
            (never changes) the <see cref="T:Shuriken.ParameterlessCommand"/> can change. However, if the <see cref="T:Shuriken.ParameterlessCommand"/> never changes (e.g. only
            <c>false</c> while the command is being executed) the property should not be annotated with the <see cref="T:Shuriken.ObservableAttribute"/>.
            </remarks>
        </member>
        <member name="M:Shuriken.Command.#ctor(System.Action,System.Func{System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Command" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Command.#ctor(System.Action{System.Threading.CancellationToken},System.Func{System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Command" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Command.#ctor(System.Action{Shuriken.CommandExecutionController,System.Threading.CancellationToken},System.Func{System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Command" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="P:Shuriken.Command.RunningExecution">
            <inheritdoc />
        </member>
        <member name="P:Shuriken.Command.CompletedExecution">
            <inheritdoc />
        </member>
        <member name="M:Shuriken.Command.Execute">
            <summary>
            Executes this command.
            </summary>
        </member>
        <member name="T:Shuriken.CommandBase">
            <summary>
            Represents a common functionality of commands.
            </summary>
        </member>
        <member name="P:Shuriken.CommandBase.Options">
            <summary>
            Gets the options.
            </summary>
        </member>
        <member name="P:Shuriken.CommandBase.RunningExecution">
            <summary>
            Gets the running execution if available.
            </summary>
        </member>
        <member name="P:Shuriken.CommandBase.CompletedExecution">
            <summary>
            Gets the last completed execution if available.
            </summary>
        </member>
        <member name="M:Shuriken.CommandBase.NotifyCanExecuteChanged">
            <summary>
            Raises the <see cref="E:Shuriken.CommandBase.CanExecuteChanged"/> event.
            </summary>
        </member>
        <member name="E:Shuriken.CommandBase.CanExecuteChanged">
            <summary>
            Occurs when changes occur that affect whether or not the command should execute.
            </summary>
        </member>
        <member name="T:Shuriken.CommandExecutionController">
            <summary>
            Represents the object that enables progress reporting, controlling the state of the <see cref="P:Shuriken.RunningCommandExecution.CancelCommand"/>, and
            also allows access to the <see cref="T:Shuriken.RunningCommandExecution"/> while the command is being executed.
            </summary>
        </member>
        <member name="P:Shuriken.CommandExecutionController.Execution">
            <summary>
            Gets the execution.
            </summary>
        </member>
        <member name="M:Shuriken.CommandExecutionController.ReportProgress(System.Single)">
            <summary>
            Reports the current progress.
            </summary>
            <param name="value">The value ranging between 0 and 1 (inclusive).</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="value"/> is less than 0 or greater than 1.</exception>
            <exception cref="T:System.InvalidOperationException">The execution has been completed.</exception>
        </member>
        <member name="M:Shuriken.CommandExecutionController.DisableCancelCommand">
            <summary>
            Disables the <see cref="P:Shuriken.RunningCommandExecution.CancelCommand"/> of the <see cref="T:Shuriken.RunningCommandExecution"/> object.
            </summary>
        </member>
        <member name="T:Shuriken.CommandOptions">
            <summary>
            Represents command options.
            </summary>
        </member>
        <member name="M:Shuriken.CommandOptions.#ctor(System.Boolean,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.CommandOptions"/> class.
            </summary>
            <param name="isCancelCommandEnabled">
                if set to <c>true</c> the <see cref="P:Shuriken.RunningCommandExecution.CancelCommand"/> becomes enabled each time when the execution starts.
            </param>
            <param name="traceWhenFailed">
                if set to <c>true</c> the <see cref="P:Shuriken.CompletedCommandExecution.Exception"/> is traced each time when the execution fails; set it to
                <c>false</c> when command failing is the fully expected behavior, and thus the <see cref="P:Shuriken.CompletedCommandExecution.Exception"/>
                should never be traced.
            </param>
        </member>
        <member name="P:Shuriken.CommandOptions.IsCancelCommandEnabled">
            <summary>
            Gets a value indicating whether the <see cref="P:Shuriken.RunningCommandExecution.CancelCommand"/> becomes enabled each time when the execution
            starts.
            </summary>
        </member>
        <member name="P:Shuriken.CommandOptions.TraceWhenFailed">
            <summary>
            Gets a value indicating whether the <see cref="P:Shuriken.CompletedCommandExecution.Exception"/> is traced each time when the execution fails. The
            property is <c>true</c> when command failing is the fully expected behavior, and thus the
            <see cref="P:Shuriken.CompletedCommandExecution.Exception"/> should never be traced.
            </summary>
        </member>
        <member name="T:Shuriken.Command`1">
            <summary>
            Represents a parameterized command. The <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/> method always returns <c>false</c> while the command
            is being executed.
            </summary>
            <typeparam name="T">The command parameter type.</typeparam>
            <remarks>
            CONSIDER not annotating <see cref="T:Shuriken.Command`1"/> properties with the <see cref="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)"/>. Changes of
            <see cref="T:Shuriken.ParameterizedCommand`1"/> cannot be tracked automatically. Use the <see cref="T:Shuriken.CommandBase"/>
            method to send notifications. Only if the property is not immutable it should be annotated with the <see cref="T:Shuriken.ObservableAttribute"/>.
            </remarks>
        </member>
        <member name="M:Shuriken.Command`1.#ctor(System.Action{`0},System.Func{`0,System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Command`1" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Command`1.#ctor(System.Action{`0,System.Threading.CancellationToken},System.Func{`0,System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Command`1" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="M:Shuriken.Command`1.#ctor(System.Action{`0,Shuriken.CommandExecutionController,System.Threading.CancellationToken},System.Func{`0,System.Boolean},Shuriken.CommandOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Shuriken.Command`1" /> class.
            </summary>
            <param name="execute">The execution method.</param>
            <param name="canExecute">The function to test whether the <paramref name="execute" /> method may be invoked.</param>
            <param name="options">The options.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="execute" /> is <c>null</c>.</exception>
        </member>
        <member name="P:Shuriken.Command`1.RunningExecution">
            <inheritdoc />
        </member>
        <member name="P:Shuriken.Command`1.CompletedExecution">
            <inheritdoc />
        </member>
        <member name="M:Shuriken.Command`1.Execute(`0)">
            <summary>
            Executes this command.
            </summary>
            <param name="arg">The argument.</param>
        </member>
        <member name="T:Shuriken.CompletedCommandExecution">
            <summary>
            Represents the last completed execution.
            </summary>
        </member>
        <member name="P:Shuriken.CompletedCommandExecution.State">
            <summary>
            Gets the state.
            </summary>
        </member>
        <member name="P:Shuriken.CompletedCommandExecution.Progress">
            <summary>
            Gets the progress.
            </summary>
            <remarks>
            If the <see cref="P:Shuriken.CompletedCommandExecution.State"/> is <see cref="F:Shuriken.CompletedCommandExecutionState.Done"/> the value is always 1; otherwise, it's in the range 0 to 1
            (both inclusive).
            </remarks>
        </member>
        <member name="P:Shuriken.CompletedCommandExecution.Exception">
            <summary>
            Gets the exception if the <see cref="P:Shuriken.CompletedCommandExecution.State"/> is <see cref="F:Shuriken.CompletedCommandExecutionState.Faulted"/>.
            </summary>
            <remarks>
            The property can never be an <see cref="T:System.OperationCanceledException"/>.
            </remarks>
        </member>
        <member name="T:Shuriken.CompletedCommandExecutionState">
            <summary>
            Defined the state of the completed execution.
            </summary>
        </member>
        <member name="F:Shuriken.CompletedCommandExecutionState.Done">
            <summary>
            The execution has successfully completed.
            </summary>
        </member>
        <member name="F:Shuriken.CompletedCommandExecutionState.Canceled">
            <summary>
            The execution was canceled, i.e an <see cref="T:System.OperationCanceledException"/> was thrown during the execution.
            </summary>
        </member>
        <member name="F:Shuriken.CompletedCommandExecutionState.Faulted">
            <summary>
            The execution was faulted, i.e. an exception other than <see cref="T:System.OperationCanceledException"/> was thrown during the execution.
            </summary>
        </member>
        <member name="T:Shuriken.ParameterizedCommand`1">
            <summary>
            Represents a common functionality of parameterized commands.
            </summary>
            <typeparam name="T">The command parameter type.</typeparam>
        </member>
        <member name="M:Shuriken.ParameterizedCommand`1.CanExecute(`0)">
            <summary>
            Determines whether this command can execute.
            </summary>
            <param name="arg">The argument.</param>
            <returns><c>true</c> if this command can execute; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:Shuriken.ParameterlessCommand">
            <summary>
            Represents a common functionality of parameterless commands.
            </summary>
        </member>
        <member name="M:Shuriken.ParameterlessCommand.CanExecute">
            <summary>
            Determines whether this command can execute.
            </summary>
            <returns><c>true</c> if this command can execute; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:Shuriken.RunningCommandExecution">
            <summary>
            Represents the running command execution.
            </summary>
        </member>
        <member name="F:Shuriken.RunningCommandExecution.isCancelCommandEnabled">
            <remarks>
            0 -> false, 1 -> true
            </remarks>
        </member>
        <member name="P:Shuriken.RunningCommandExecution.Progress">
            <summary>
            Gets the progress.
            </summary>
            <remarks>
            The value is always in the range 0 to 1 (both inclusive).
            </remarks>
        </member>
        <member name="P:Shuriken.RunningCommandExecution.CancelCommand">
            <summary>
            Gets the "cancel" command.
            </summary>
            <remarks>
            Use the command constructor to specify whether the command is initially enabled.<para />
            The command becomes disabled when
            <list type="bullet">
                <item>the execution completes</item>
                <item>the command is triggered</item>
                <item>
                    the <see cref="M:Shuriken.CommandExecutionController.DisableCancelCommand"/> method of the <see cref="T:Shuriken.CommandExecutionController"/> class is
                    invoked
                </item>
            </list>
            </remarks>
        </member>
    </members>
</doc>
