<?xml version="1.0"?>
<doc>
    <assembly>
        <name>YarnSpinner</name>
    </assembly>
    <members>
        <member name="T:Yarn.Utility.CRC32">
            <summary>
            Provides a method for generating CRC32 hashes of strings.
            </summary>
        </member>
        <member name="M:Yarn.Utility.CRC32.GetChecksum(System.Byte[])">
            <summary>
            Computes a CRC32 checksum from the given bytes.
            </summary>
            <param name="bytes">The bytes to generate a checksum
            for.</param>
            <returns>A CRC32 checksum derived from <paramref
            name="bytes"/>.</returns>
        </member>
        <member name="M:Yarn.Utility.CRC32.GetChecksum(System.String)">
            <summary>
            Computes a CRC32 checksum from the given string.
            </summary>
            <remarks>
            This method converts the string to a UTF-8 encoding, and then
            computes a CRC32 checksum from those bytes.
            </remarks>
            <param name="s">The string to generate a checksum for.</param>
            <returns>A CRC32 checksum derived from <paramref
            name="s"/>.</returns>
        </member>
        <member name="M:Yarn.Utility.CRC32.GetChecksumString(System.String)">
            <summary>
            Gets the CRC-32 hash of <paramref name="s"/> as a string
            containing 8 lowercase hexadecimal characters.
            </summary>
            <remarks>
            This method converts the string to a UTF-8 encoding, and then
            computes a CRC32 checksum from those bytes.
            </remarks>
            <param name="s">The string to get the checksum of.</param>
            <returns>The string containing the checksum.</returns>
        </member>
        <member name="T:Yarn.Line">
             <summary>
             A line of dialogue, sent from the <see cref="T:Yarn.Dialogue"/> to the game.
             </summary>
             <remarks>
             <para>When the game receives a <see cref="T:Yarn.Line"/>, it should do the
             following things to prepare the line for presentation to the user.
             </para>
             <list type="number">
             <item>Use the value in the <see cref="P:Yarn.Line.ID"/> field to look up the
             appropriate user-facing text in the string table. </item>
            
             <item>Use <see cref="M:Yarn.Markup.LineParser.ExpandSubstitutions(System.String,System.Collections.Generic.IList{System.String})"/> to replace all
             substitutions in the user-facing text.</item>
            
             <item>Use <see cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/> to parse all markup in the
             line.</item>
             </list>
            
             <para>You typically do not create instances of this struct yourself.
             They are created by the <see cref="T:Yarn.Dialogue"/> during program
             execution.</para>
             </remarks>
             <seealso cref="P:Yarn.Dialogue.LineHandler"/>
        </member>
        <member name="M:Yarn.Line.#ctor(System.String,System.String[])">
            <summary>
            Initialises a new instance of the <see cref="T:Yarn.Line"/> struct.
            </summary>
            <param name="stringID">The unique line ID for this content.</param>
            <param name="substitutions">The list of values that should be
            substituted into the final line.
            </param>
        </member>
        <member name="P:Yarn.Line.ID">
            <summary>
            The string ID for this line.
            </summary>
        </member>
        <member name="P:Yarn.Line.Substitutions">
            <summary>
            The values that should be inserted into the user-facing text before
            delivery.
            </summary>
        </member>
        <member name="T:Yarn.OptionSet">
            <summary>
            A set of <see cref="T:Yarn.OptionSet.Option"/>s, sent from the <see
            cref="T:Yarn.Dialogue"/> to the game.
            </summary>
            <remarks>
            You typically do not create instances of this struct yourself. They are
            created by the <see cref="T:Yarn.Dialogue"/> during program execution.
            </remarks>
            <seealso cref="P:Yarn.Dialogue.OptionsHandler"/>
        </member>
        <member name="T:Yarn.OptionSet.Option">
            <summary>
            An option to be presented to the user.
            </summary>
        </member>
        <member name="P:Yarn.OptionSet.Option.Line">
            <summary>
            Gets the <see cref="P:Yarn.OptionSet.Option.Line"/> that should be presented to the
            user for this option.
            </summary>
            <remarks>
            See the documentation for the <see cref="T:Yarn.Line"/> class
            for information on how to prepare a line before presenting
            it to the user. 
            </remarks>
        </member>
        <member name="P:Yarn.OptionSet.Option.ID">
            <summary>
            Gets the identifying number for this option.
            </summary>
            <remarks>
            When the user selects this option, this value should be
            used as the parameter for <see
            cref="M:Yarn.Dialogue.SetSelectedOption(System.Int32)"/>.
            </remarks>
        </member>
        <member name="P:Yarn.OptionSet.Option.DestinationInstruction">
            <summary>
            Gets the name of the node that will be run if this option
            is selected.
            </summary>
            <remarks>
            The value of this property not be valid if this is a
            shortcut option.
            </remarks>
        </member>
        <member name="P:Yarn.OptionSet.Option.IsAvailable">
            <summary>
            Gets a value indicating whether the player should be
            permitted to select this option.
            </summary>
            <remarks>
            <para>
            If this value is <see langword="false"/>, this option had a
            line condition on it that failed. The option will still be
            delivered to the game, but, depending on the needs of the
            game, the game may decide to not allow the player to select
            it, or not offer it to the player at all.
            </para>
            <para>
            This is intended for situations where games wish to show
            options that the player _could_ have taken, if some other
            condition had been met (e.g. having enough "charisma"
            points).
            </para>
            </remarks>
        </member>
        <member name="P:Yarn.OptionSet.Options">
            <summary>
            Gets the <see cref="T:Yarn.OptionSet.Option"/>s that should be presented to the
            user.
            </summary>
            <seealso cref="T:Yarn.OptionSet.Option"/>
        </member>
        <member name="T:Yarn.Command">
            <summary>
            A command, sent from the <see cref="T:Yarn.Dialogue"/> to the game.
            </summary>
            <remarks>
            You do not create instances of this struct yourself. They are
            created by the <see cref="T:Yarn.Dialogue"/> during program execution.
            </remarks>
            <seealso cref="P:Yarn.Dialogue.CommandHandler"/>    
        </member>
        <member name="P:Yarn.Command.Text">
            <summary>
            Gets the text of the command.
            </summary>
        </member>
        <member name="T:Yarn.Logger">
            <summary>
            Represents a method that receives diagnostic messages and error
            information from a <see cref="T:Yarn.Dialogue"/>.
            </summary>
            <remarks>
            The text that this delegate receives may be output to a console, or
            sent to a log.
            </remarks>
            <param name="message">The text that should be logged.</param>
        </member>
        <member name="T:Yarn.IMarkupParser">
            <summary>
            Contains methods for parsing raw text into a <see
            cref="T:Yarn.Markup.MarkupParseResult"/>.
            </summary>
        </member>
        <member name="M:Yarn.IMarkupParser.ParseMarkup(System.String,System.String)">
            <summary>
            Parses a string into markup, given a locale.
            </summary>
            <param name="rawText">The text to parse.</param>
            <param name="localeCode">The locale to use when parsing the text.</param>
            <returns></returns>
        </member>
        <member name="T:Yarn.VariableKind">
            <summary>
            Represents different kinds of variables that can be fetched from a <see
            cref="T:Yarn.Dialogue"/> using <see cref="M:Yarn.IVariableAccess.TryGetValue``1(System.String,``0@)"/>.
            </summary>
        </member>
        <member name="F:Yarn.VariableKind.Unknown">
            <summary>
            The kind of the variable cannot be determined. It may not be known
            to the system.
            </summary>
        </member>
        <member name="F:Yarn.VariableKind.Stored">
            <summary>
            The variable's value is stored in memory, and may be persisted to
            disk.
            </summary>
        </member>
        <member name="F:Yarn.VariableKind.Smart">
            <summary>
            The variable's value is computed at run-time, and is not persisted
            to disk. 
            </summary>
        </member>
        <member name="T:Yarn.IVariableAccess">
            <summary>Provides a mechanism for retrieving values.</summary>
        </member>
        <member name="M:Yarn.IVariableAccess.TryGetValue``1(System.String,``0@)">
            <summary>
            Given a variable name, attempts to fetch a value for the variable,
            either from storage, initial values found in <see cref="P:Yarn.IVariableAccess.Program"/>,
            or by evaluating a smart variable found in <see cref="P:Yarn.IVariableAccess.Program"/>.
            </summary>
            <typeparam name="T">The type of the value to return. The fetched
            value will be converted to this type, if possible.</typeparam>
            <param name="variableName">The name of the variable.</param>
            <param name="result">If this method returns <see langword="true"/>,
            this parameter will contain the fetched value.</param>
            <returns><see langword="true"/> if a value could be fetched; <see
            langword="false"/> otherwise.</returns>
        </member>
        <member name="M:Yarn.IVariableAccess.GetVariableKind(System.String)">
            <summary>
            Gets the kind of variable named <paramref name="name"/>.
            </summary>
            <param name="name">The name of the variable.</param>
            <returns>A <see cref="T:Yarn.VariableKind"/> enum representing the kind of
            the variable named <paramref name="name"/>.</returns>
        </member>
        <member name="P:Yarn.IVariableAccess.Program">
            <summary>
            Gets or sets the Yarn <see cref="P:Yarn.IVariableAccess.Program"/> that stores information
            about the initial values of variables, and is able to produce values
            for smart variables.
            </summary>
        </member>
        <member name="P:Yarn.IVariableAccess.SmartVariableEvaluator">
            <summary>
            Gets or sets the object to use when evaluating smart variables.
            </summary>
        </member>
        <member name="T:Yarn.IVariableStorage">
            <summary>Provides a mechanism for storing values.</summary>
        </member>
        <member name="M:Yarn.IVariableStorage.SetValue(System.String,System.String)">
            <summary>
            Stores a <see cref="T:System.String"/> in this VariableStorage.
            </summary>
            <param name="variableName">The name to associate with this
            variable.</param>
            <param name="stringValue">The string to store.</param>
        </member>
        <member name="M:Yarn.IVariableStorage.SetValue(System.String,System.Single)">
            <summary>
            Stores a <see cref="T:System.Single"/> in this VariableStorage.
            </summary>
            <param name="variableName">The name to associate with this
            variable.</param>
            <param name="floatValue">The number to store.</param>
        </member>
        <member name="M:Yarn.IVariableStorage.SetValue(System.String,System.Boolean)">
            <summary>
            Stores a <see cref="T:System.Boolean"/> in this VariableStorage.
            </summary>
            <param name="variableName">The name to associate with this
            variable.</param>
            <param name="boolValue">The boolean value to store.</param>
        </member>
        <member name="M:Yarn.IVariableStorage.Clear">
            <summary>
            Removes all variables from storage.
            </summary>
        </member>
        <member name="T:Yarn.MemoryVariableStore">
            <summary>
            A simple concrete implementation of <see cref="T:Yarn.IVariableStorage"/>
            that keeps all variables in memory.
            </summary>
        </member>
        <member name="P:Yarn.MemoryVariableStore.Program">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.MemoryVariableStore.SmartVariableEvaluator">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.MemoryVariableStore.TryGetValue``1(System.String,``0@)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.MemoryVariableStore.Clear">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.MemoryVariableStore.SetValue(System.String,System.String)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.MemoryVariableStore.SetValue(System.String,System.Single)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.MemoryVariableStore.SetValue(System.String,System.Boolean)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.MemoryVariableStore.GetVariableKind(System.String)">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.LineHandler">
            <summary>
            Represents the method that is called when the Dialogue delivers a <see
            cref="T:Yarn.Line"/>.
            </summary>
            <param name="line">The <see cref="T:Yarn.Line"/> that has been
            delivered.</param>
            <seealso cref="T:Yarn.OptionsHandler"/>
            <seealso cref="T:Yarn.CommandHandler"/>
            <seealso cref="T:Yarn.NodeStartHandler"/>
            <seealso cref="T:Yarn.NodeCompleteHandler"/>
            <seealso cref="T:Yarn.DialogueCompleteHandler"/>
        </member>
        <member name="T:Yarn.OptionsHandler">
            <summary>
            Represents the method that is called when the Dialogue delivers an <see
            cref="T:Yarn.OptionSet"/>.
            </summary>
            <param name="options">The <see cref="T:Yarn.OptionSet"/> that has been
            delivered.</param>
            <seealso cref="T:Yarn.LineHandler"/>
            <seealso cref="T:Yarn.CommandHandler"/>
            <seealso cref="T:Yarn.NodeStartHandler"/>
            <seealso cref="T:Yarn.NodeCompleteHandler"/>
            <seealso cref="T:Yarn.DialogueCompleteHandler"/>
        </member>
        <member name="T:Yarn.CommandHandler">
            <summary>
            Represents the method that is called when the Dialogue delivers a <see
            cref="T:Yarn.Command"/>.
            </summary>
            <param name="command">The <see cref="T:Yarn.Command"/> that has been
            delivered.</param>
            <seealso cref="T:Yarn.LineHandler"/>
            <seealso cref="T:Yarn.OptionsHandler"/>
            <seealso cref="T:Yarn.NodeStartHandler"/>
            <seealso cref="T:Yarn.NodeCompleteHandler"/>
            <seealso cref="T:Yarn.DialogueCompleteHandler"/>
        </member>
        <member name="T:Yarn.NodeCompleteHandler">
            <summary>
            Represents the method that is called when the Dialogue reaches the end
            of a node.
            </summary>
            <param name="completedNodeName">The name of the node.</param>
            <remarks>
            This method may be called multiple times over the course of code
            execution. A node being complete does not necessarily represent the end
            of the conversation.
            </remarks>
            <seealso cref="T:Yarn.LineHandler"/>
            <seealso cref="T:Yarn.OptionsHandler"/>
            <seealso cref="T:Yarn.CommandHandler"/>
            <seealso cref="T:Yarn.NodeStartHandler"/>
            <seealso cref="T:Yarn.DialogueCompleteHandler"/>
        </member>
        <member name="T:Yarn.NodeStartHandler">
            <summary>
            Represents the method that is called when the Dialogue begins executing
            a node.
            </summary>
            <param name="startedNodeName">The name of the node.</param>
            <seealso cref="T:Yarn.LineHandler"/>
            <seealso cref="T:Yarn.OptionsHandler"/>
            <seealso cref="T:Yarn.CommandHandler"/>
            <seealso cref="T:Yarn.NodeCompleteHandler"/>
            <seealso cref="T:Yarn.DialogueCompleteHandler"/>
        </member>
        <member name="T:Yarn.DialogueCompleteHandler">
            <summary>
            Represents the method that is called when the dialogue has reached its
            end, and no more code remains to be run.
            </summary>
            <seealso cref="T:Yarn.LineHandler"/>
            <seealso cref="T:Yarn.OptionsHandler"/>
            <seealso cref="T:Yarn.CommandHandler"/>
            <seealso cref="T:Yarn.NodeStartHandler"/>
            <seealso cref="T:Yarn.NodeCompleteHandler"/>
        </member>
        <member name="T:Yarn.PrepareForLinesHandler">
            <summary>
            Represents the method that is called when the dialogue anticipates that
            it will deliver lines.
            </summary>
            <remarks>
            <para>
            This method should begin preparing to run the lines. For example, if a
            game delivers dialogue via voice-over, the appropriate audio files
            should be loaded.
            </para>
            <para>
            This method serves to provide a hint to the game that a line _may_ be
            run. Not every line indicated in <paramref name="lineIDs"/> may end up
            actually running.
            </para>
            <para>
            This method may be called any number of times during a dialogue session.
            </para>
            </remarks>
            <param name="lineIDs">The collection of line IDs that may be delivered
            at some point soon.</param>
        </member>
        <member name="T:Yarn.Dialogue">
            <summary>
            Co-ordinates the execution of Yarn programs.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.VariableStorage">
            <summary>
            Gets or sets the object that provides access to storing and
            retrieving the values of variables.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.LogDebugMessage">
            <summary>
            Invoked when the Dialogue needs to report debugging
            information.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.LogErrorMessage">
            <summary>
            Invoked when the Dialogue needs to report an error.
            </summary>
        </member>
        <member name="F:Yarn.Dialogue.DefaultStartNodeName">
            <summary>The default name of the node that execution will start
            from.</summary>
        </member>
        <member name="F:Yarn.Dialogue.NoOptionSelected">
            <summary>
            The value to indicate to the dialogue runner that no option was selected and dialogue should fall through to the rest of the program.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.Program">
            <summary>Gets or sets the compiled Yarn program.</summary>
        </member>
        <member name="P:Yarn.Dialogue.IsActive">
            <summary>
            Gets a value indicating whether the Dialogue is currently executing
            Yarn instructions.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.LineHandler">
            <summary>
            Gets or sets the <see cref="T:Yarn.LineHandler"/> that is called when
            a line is ready to be shown to the user.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.OptionsHandler">
            <summary>
            Gets or sets the <see cref="T:Yarn.OptionsHandler"/> that is called
            when a set of options are ready to be shown to the user.
            </summary>
            <remarks>
            The Options Handler delivers an <see cref="T:Yarn.OptionSet"/> to the game.
            Before <see cref="M:Yarn.Dialogue.Continue"/> can be called to resume execution,
            <see cref="M:Yarn.Dialogue.SetSelectedOption(System.Int32)"/> must be called to indicate which
            <see cref="T:Yarn.OptionSet.Option"/> was selected by the user. If <see
            cref="M:Yarn.Dialogue.SetSelectedOption(System.Int32)"/> is not called, an exception is thrown.
            </remarks>
        </member>
        <member name="P:Yarn.Dialogue.CommandHandler">
            <summary>
            Gets or sets the <see cref="T:Yarn.CommandHandler"/> that is called
            when a command is to be delivered to the game.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.NodeStartHandler">
            <summary>
            Gets or sets the <see cref="T:Yarn.NodeStartHandler"/> that is called
            when a node is started.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.NodeCompleteHandler">
            <summary>
            Gets or sets the <see cref="T:Yarn.NodeCompleteHandler"/> that is
            called when a node is complete.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.DialogueCompleteHandler">
            <summary>
            Gets or sets the <see cref="T:Yarn.DialogueCompleteHandler"/> that is
            called when the dialogue reaches its end.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.PrepareForLinesHandler">
            <summary>
            Gets or sets the <see cref="P:Yarn.Dialogue.PrepareForLinesHandler"/> that is called
            when the dialogue anticipates delivering some lines.
            </summary>
            <value></value>
        </member>
        <member name="F:Yarn.Dialogue.vm">
            <summary>
            The virtual machine to use when running dialogue.
            </summary>
        </member>
        <member name="F:Yarn.Dialogue.smartVariableVM">
            <summary>
            The virtual machine to use when evaluating smart variables.
            </summary>
            <remarks>
            This is kept separate from the main VM in order to prevent
            evaluating smart variables from modifying the evaluation state of
            dialogue.
            </remarks>
        </member>
        <member name="P:Yarn.Dialogue.Library">
            <summary>
            Gets the <see cref="T:Yarn.Library"/> that this Dialogue uses to
            locate functions.
            </summary>
            <remarks>
            When the Dialogue is constructed, the Library is initialized with
            the built-in operators like <c>+</c>, <c>-</c>, and so on.
            </remarks>
        </member>
        <member name="P:Yarn.Dialogue.ContentSaliencyStrategy">
            <summary>
            Gets or sets the content saliency strategy used by this <see cref="T:Yarn.Dialogue"/>.
            </summary>
            <remarks>
            A content saliency strategy is a class that implements <see
            cref="T:Yarn.Saliency.IContentSaliencyStrategy"/> and selects the most
            appropriate content in a line group, or any other situation where
            content saliency is relevant.
            </remarks>
        </member>
        <member name="M:Yarn.Dialogue.#ctor(Yarn.IVariableStorage)">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.Dialogue"/> class.
            </summary>
            <param name="variableStorage">The <see
            cref="T:Yarn.IVariableStorage"/> that this Dialogue should
            use.</param>
        </member>
        <member name="M:Yarn.Dialogue.SetProgram(Yarn.Program)">
            <summary>
            Loads all nodes from the provided <see cref="T:Yarn.Program"/>.
            </summary>
            <remarks>
            This method replaces any existing nodes have been loaded.
            </remarks>
            <param name="program">The <see cref="T:Yarn.Program"/> to use.</param>
        </member>
        <member name="M:Yarn.Dialogue.LoadProgram(System.String)">
            <summary>
            Loads a compiled <see cref="T:Yarn.Program"/> from a file.
            </summary>
            <param name="fileName">The path of the file to load.</param>
            <remarks>
            <para>
            This method replaces the current value of <see cref="P:Yarn.Dialogue.Program"/> with
            the result of loading the file.
            </para>
            <para>
            This method does not compile Yarn source. To compile Yarn source
            code into a <see cref="T:Yarn.Program"/>, Refer to the Yarn compiler.
            </para>
            </remarks>
        </member>
        <member name="M:Yarn.Dialogue.SetNode(System.String)">
            <summary>
            Prepares the <see cref="T:Yarn.Dialogue"/> that the user intends to start
            running a node.
            </summary>
            <param name="startNode">The name of the node that will be run. The
            node have been loaded by calling <see
            cref="M:Yarn.Dialogue.SetProgram(Yarn.Program)"/>.</param>
            <remarks>
            <para>
            After this method is called, you call <see cref="M:Yarn.Dialogue.Continue"/> to
            start executing it.
            </para>
            <para>
            If <see cref="P:Yarn.Dialogue.PrepareForLinesHandler"/> has been set, it may be
            called when this method is invoked, as the Dialogue determines which
            lines may be delivered during the <paramref name="startNode"/>
            node's execution.
            </para>
            </remarks>
            <throws cref="T:Yarn.DialogueException">Thrown when no node named
            <c>startNode</c> has been loaded.</throws>
        </member>
        <member name="M:Yarn.Dialogue.SetSelectedOption(System.Int32)">
            <summary>
            Signals to the <see cref="T:Yarn.Dialogue"/> that the user has selected a
            specified <see cref="T:Yarn.OptionSet.Option"/>.
            </summary>
            <remarks>
            <para>
            After the Dialogue delivers an <see cref="T:Yarn.OptionSet"/>, this method
            must be called before <see cref="M:Yarn.Dialogue.Continue"/> is called.
            </para>
            <para>
            The ID number that should be passed as the parameter to this method
            should be the <see cref="P:Yarn.OptionSet.Option.ID"/> field in the <see
            cref="T:Yarn.OptionSet.Option"/> that represents the user's selection.
            </para>
            </remarks>
            <param name="selectedOptionID">The ID number of the Option that the
            user selected.</param>
            <throws cref="T:Yarn.DialogueException">Thrown when the Dialogue is not
            expecting an option to be selected.</throws> <throws
            cref="T:System.ArgumentOutOfRangeException">Thrown when <c>selectedOptionID</c> is
            not a valid option ID.</throws>
            <seealso cref="T:Yarn.OptionsHandler"/>
            <seealso cref="T:Yarn.OptionSet"/>
            <seealso cref="M:Yarn.Dialogue.Continue"/>
        </member>
        <member name="M:Yarn.Dialogue.SignalContentComplete">
            <summary>
            Signals that the currently running content has completed synchronously.
            </summary>
            <remarks>
            This method is not intended to be called by user code.
            </remarks>
        </member>
        <member name="M:Yarn.Dialogue.Continue">
             <summary>
             Starts, or continues, execution of the current Program.
             </summary>
             <remarks>
             <para>
             This method repeatedly executes instructions until one of the
             following conditions is encountered:
             </para>
             <list type="bullet">
             <item>The <see cref="P:Yarn.Dialogue.LineHandler"/> or <see cref="P:Yarn.Dialogue.CommandHandler"/>
             is called. After calling either of these handlers, the Dialogue will
             wait until <see cref="M:Yarn.Dialogue.Continue"/> is called. Continue may be called
             from inside the <see cref="P:Yarn.Dialogue.LineHandler"/> or <see
             cref="P:Yarn.Dialogue.CommandHandler"/>, or may be called at any future time.</item>
            
             <item>The <see cref="P:Yarn.Dialogue.OptionsHandler"/> is called. When this occurs,
             the Dialogue is waiting for the user to specify which of the options
             has been selected, and <see cref="M:Yarn.Dialogue.SetSelectedOption(System.Int32)"/> must be
             called before <see cref="M:Yarn.Dialogue.Continue"/> is called again.)</item>
            
             <item>The Program reaches its end. When this occurs, <see
             cref="M:Yarn.Dialogue.SetNode(System.String)"/> must be called before <see
             cref="M:Yarn.Dialogue.Continue"/> is called again.</item>
            
             <item>An error occurs while executing the Program.</item>
             </list>
            
             <para>This method has no effect if it is called while the <see
             cref="T:Yarn.Dialogue"/> is currently in the process of executing
             instructions.</para>
             </remarks>
             <seealso cref="T:Yarn.LineHandler"/>
             <seealso cref="T:Yarn.OptionsHandler"/>
             <seealso cref="T:Yarn.CommandHandler"/>
             <seealso cref="T:Yarn.NodeCompleteHandler"/>
             <seealso cref="T:Yarn.DialogueCompleteHandler"/>
        </member>
        <member name="M:Yarn.Dialogue.Stop">
            <summary>
            Immediately stops the <see cref="T:Yarn.Dialogue"/>.
            </summary>
        </member>
        <member name="P:Yarn.Dialogue.NodeNames">
            <summary>
            Gets the names of the nodes in the currently loaded Program.
            </summary>
            <remarks>If no program is currently loaded, an empty collection is
            returned.</remarks>
        </member>
        <member name="P:Yarn.Dialogue.CurrentNode">
            <summary>
            Gets the name of the node that this Dialogue is currently executing.
            </summary>
            <remarks>If <see cref="M:Yarn.Dialogue.Continue"/> has never been called, this value
            will be <see langword="null"/>.</remarks>
        </member>
        <member name="M:Yarn.Dialogue.GetStringIDForNode(System.String)">
            <summary>
            Returns the string ID that contains the original, uncompiled source
            text for a node.
            </summary>
            <param name="nodeName">The name of the node.</param>
            <returns>The string ID.</returns>
            <remarks>
            <para>
            A node's source text will only be present in the string table if its
            <c>tags</c> header contains <c>rawText</c>.
            </para>
            <para>
            Because the <see cref="T:Yarn.Dialogue"/> class is designed to be unaware
            of the contents of the string table, this method does not test to
            see if the string table contains an entry with the line ID. You will
            need to test for that yourself.
            </para>
            </remarks>
        </member>
        <member name="M:Yarn.Dialogue.GetTagsForNode(System.String)">
            <summary>
            Returns the tags for the node <paramref name="nodeName"/>.
            </summary>
            <remarks>
            The tags for a node are defined by setting the <c>tags</c> header in
            the node's source code. This header must be a space-separated list.
            </remarks>
            <param name="nodeName">The name of the node.</param>
            <returns>The node's tags, or <see langword="null"/> if the node is
            not present in the Program.</returns>
        </member>
        <member name="M:Yarn.Dialogue.GetHeaderValue(System.String,System.String)">
            <summary>
            Gets the value of the header named <paramref name="headerName"/> on
            the node named <paramref name="nodeName"/>, or <see
            langword="null"/> if the header can't be found.
            </summary>
            <remarks>If the node has more than one header named <paramref
            name="headerName"/>, the first one is used.</remarks>
            <param name="nodeName">The name of the node.</param>
            <param name="headerName">The name of the header.</param>
            <returns>The value of the first header on the node with the
            specified header value.</returns>
            <exception cref="T:System.InvalidOperationException">Thrown when the program
            is not loaded, the program contains no nodes, or the program does
            not contain a node named <paramref name="nodeName"/>.</exception>
        </member>
        <member name="M:Yarn.Dialogue.GetHeaders(System.String)">
            <summary>
            Gets the collection of headers present on the node named <paramref
            name="nodeName"/>.
            </summary>
            <param name="nodeName">The name of the node to get headers
            for.</param>
            <returns>A collection of key-values pairs, each one representing a
            header on the node.</returns>
            <exception cref="T:System.InvalidOperationException">Thrown when the program
            is not loaded, the program contains no nodes, or the program does
            not contain a node named <paramref name="nodeName"/>.</exception>
        </member>
        <member name="M:Yarn.Dialogue.UnloadAll">
            <summary>
            Unloads all nodes from the Dialogue.
            </summary>
        </member>
        <member name="M:Yarn.Dialogue.NodeExists(System.String)">
            <summary>
            Gets a value indicating whether a specified node exists in the
            Program.
            </summary>
            <param name="nodeName">The name of the node.</param>
            <returns><see langword="true"/> if a node named <c>nodeName</c>
            exists in the Program, <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="M:Yarn.Dialogue.Analyse(Yarn.Analysis.Context)">
            <summary>
            Begins analysis of the <see cref="P:Yarn.Dialogue.Program"/> by the <paramref name="context"/>
            </summary>
            <param name="context">The Context that performs the analysis</param>
        </member>
        <member name="M:Yarn.Dialogue.TryGetSmartVariable``1(System.String,``0@)">
            <inheritdoc />
        </member>
        <member name="M:Yarn.Dialogue.GetSaliencyOptionsForNodeGroup(System.String)">
            <summary>
            Queries the <see cref="T:Yarn.Dialogue"/> for what content could possibly
            run if the node group nodeGroup was run.
            </summary>
            <remarks>
            <para>This method evaluates all nodes in the given node group, and
            returns a <see cref="T:Yarn.Saliency.ContentSaliencyOption"/> object for
            each node. This object contains the current number of passing and
            failing 'when' clauses on the node, as well as the complexity score
            for that node. This is the same information that's passed to a <see
            cref="T:Yarn.Saliency.IContentSaliencyStrategy"/> object's <see
            cref="M:Yarn.Saliency.IContentSaliencyStrategy.QueryBestContent(System.Collections.Generic.IEnumerable{Yarn.Saliency.ContentSaliencyOption})"/>
            method. This method is read-only, and calling it will not modify any
            variable state.
            </para>
            <para>Note that this method does not filter its output, and may
            include content options whose <see
            cref="P:Yarn.Saliency.ContentSaliencyOption.FailingConditionValueCount"/>
            is greater than zero. It's up to the caller of this function to
            filter out these options if they're not wanted.</para> 
            <para>
            This method can be used to see if <em>any</em> content will appear
            when a given node group is run. If the collection returned by this
            method is empty, then running this node group will not result in any
            content. This can be used, for example, to decide whether to show a
            'character can be spoken to' indicator. You can also examine the
            individal <see cref="T:Yarn.Saliency.ContentSaliencyOption"/> objects to
            see if any content is available that passes a filter, such as
            whether content might appear that has a user-defined 'plot critical'
            tag.
            </para> 
            </remarks>
            <param name="nodeGroup">The name of the node group to get available
            content for.</param>
            <returns>A collection of <see
            cref="T:Yarn.Saliency.ContentSaliencyOption"/> objects that may appear if
            and when the node group <paramref name="nodeGroup"/> is run.
            </returns>
            <exception cref="T:System.ArgumentException">Thrown when <paramref
            name="nodeGroup"/> is not a valid node name.</exception>
        </member>
        <member name="M:Yarn.Dialogue.HasSalientContent(System.String)">
            <summary>
            Returns if the node group has any potential nodes to be run based on the current salient selector.
            </summary>
            <param name="nodeGroup">The name of the node group.</param>
            <returns>True if there is any salient content for the requested node group</returns>
        </member>
        <member name="M:Yarn.Dialogue.IsNodeGroup(System.String)">
            <summary>
            Gets a value indicating whether <paramref name="nodeName"/> is the
            name of a valid node group in the program.
            </summary>
            <param name="nodeName">The name of the node group to check.</param>
            <returns><see langword="true"/> if <paramref name="nodeName"/> is
            the name of a node group; <see langword="false"/>
            otherwise.</returns>
            <exception cref="T:System.InvalidOperationException">Thrown when <see
            cref="P:Yarn.Dialogue.Program"/> is null.</exception>
        </member>
        <member name="F:Yarn.Dialogue.StandardLibrary.Random">
            <summary>
            The internal random number generator used by functions like
            'random' and 'dice'.
            </summary>
        </member>
        <member name="T:Yarn.DialogueException">
            <summary>
            An exception that is thrown by <see cref="T:Yarn.Dialogue"/> when there is an
            error in executing a <see cref="T:Yarn.Program"/>.
            </summary>
        </member>
        <member name="T:Yarn.Library">
            <summary>
            A collection of functions that can be called from Yarn programs.
            </summary>
            <remarks>
            You do not create instances of this class yourself. The <see
            cref="T:Yarn.Dialogue"/> class creates one of its own, which you can
            access via the <see cref="P:Yarn.Dialogue.Library"/> property.
            </remarks>
            <seealso cref="T:Yarn.Dialogue"/>
        </member>
        <member name="M:Yarn.Library.GetFunction(System.String)">
            <summary>
            Returns a <see cref="T:System.Delegate"/> with a given name.
            </summary>
            <param name="name">The name of the function to
            retrieve.</param>
            <returns>The <see cref="T:System.Delegate"/>.</returns>
            <throws cref="T:System.InvalidOperationException">Thrown when a function
            named <c>name</c> is not present in the library.</throws>
        </member>
        <member name="M:Yarn.Library.ImportLibrary(Yarn.Library)">
            <summary>
            Loads functions from another <see cref="T:Yarn.Library"/>.
            </summary>
            <param name="otherLibrary">The library to import functions from.</param>
            <remarks>
            If the other library contains a function with the same name as
            one in this library, the function in the other library takes
            precedence.
            </remarks>
        </member>
        <member name="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})">
            <summary>
            Registers a new function that returns a value, which can be
            called from a Yarn program.
            </summary>
            <param name="name">The name of the function.</param>
            <param name="implementation">The method to
            be invoked when the function is called.</param>
            <typeparam name="TResult">The return type of the
            function.</typeparam>
            <exception cref="T:System.ArgumentException">Thrown when a function
            named <paramref name="name"/> already exists in the <see
            cref="T:Yarn.Library"/>.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when name is
            null.</exception>
        </member>
        <member name="M:Yarn.Library.RegisterFunction``2(System.String,System.Func{``0,``1})">
            <inheritdoc cref="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})"/>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <typeparam name="T1">The type of the function's first argument.</typeparam>
        </member>
        <member name="M:Yarn.Library.RegisterFunction``3(System.String,System.Func{``0,``1,``2})">
            <inheritdoc cref="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})"/>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <typeparam name="T1">The type of the function's first argument.</typeparam>
            <typeparam name="T2">The type of the function's second argument.</typeparam>
        </member>
        <member name="M:Yarn.Library.RegisterFunction``4(System.String,System.Func{``0,``1,``2,``3})">
            <inheritdoc cref="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})"/>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <typeparam name="T1">The type of the function's first argument.</typeparam>
            <typeparam name="T2">The type of the function's second argument.</typeparam>
            <typeparam name="T3">The type of the function's third argument.</typeparam>
        </member>
        <member name="M:Yarn.Library.RegisterFunction``5(System.String,System.Func{``0,``1,``2,``3,``4})">
            <inheritdoc cref="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})"/>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <typeparam name="T1">The type of the function's first argument.</typeparam>
            <typeparam name="T2">The type of the function's second argument.</typeparam>
            <typeparam name="T3">The type of the function's third argument.</typeparam>
            <typeparam name="T4">The type of the function's fourth argument.</typeparam>
        </member>
        <member name="M:Yarn.Library.RegisterFunction``6(System.String,System.Func{``0,``1,``2,``3,``4,``5})">
            <inheritdoc cref="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})"/>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <typeparam name="T1">The type of the function's first argument.</typeparam>
            <typeparam name="T2">The type of the function's second argument.</typeparam>
            <typeparam name="T3">The type of the function's third argument.</typeparam>
            <typeparam name="T4">The type of the function's fourth argument.</typeparam>
            <typeparam name="T5">The type of the function's fifth argument.</typeparam>
        </member>
        <member name="M:Yarn.Library.RegisterFunction(System.String,System.Delegate)">
            <inheritdoc cref="M:Yarn.Library.RegisterFunction``1(System.String,System.Func{``0})"/>
        </member>
        <member name="M:Yarn.Library.FunctionExists(System.String)">
            <summary>
            Gets a value indicating whether this <see cref="T:Yarn.Library"/> contains a function named <c>name</c>.
            </summary>
            <param name="name">The name of the function to look for.</param>
            <returns><c>true</c> if a function exists in this Library; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Yarn.Library.DeregisterFunction(System.String)">
            <summary>
            Removes a function from the Library.
            </summary>
            <param name="name">The name of the function to remove.</param>
            <remarks>
            If no function with the given name is present in the Library,
            this method does nothing.
            </remarks>
        </member>
        <member name="M:Yarn.Library.RegisterMethods(Yarn.TypeBase)">
            <summary>
            Registers the methods found inside a type.
            </summary>
            <param name="typeLiteral">The type to register methods from.</param>
        </member>
        <member name="M:Yarn.Library.GenerateUniqueVisitedVariableForNode(System.String)">
            <summary>
            Generates a unique tracking variable name.
            This is intended to be used to generate names for visting.
            Ideally these will very reproduceable and sensible.
            For now it will be something terrible and easy.
            </summary>
            <param name="nodeName">The name of the node that needs to
            have a tracking variable created.</param>
            <returns>The new variable name.</returns>
        </member>
        <member name="M:Yarn.ICodeDumpHelper.GetStringForKey(System.String)">
            <summary>
            Gets the user-facing string for a given key from the code dump
            helper's string table.
            </summary>
            <param name="key">The key to fetch a string for.</param>
            <returns>The found string, or <see langword="null"/> if none was
            found.</returns>
        </member>
        <member name="M:Yarn.ICodeDumpHelper.GetDescriptionForVariable(System.String)">
            <summary>
            Gets the description for a given variable, if it exists.
            </summary>
            <param name="variableName">The name of the variable.</param>
            <returns>The description for the variable, or <see langword="null"/>
            if none was found.</returns>
        </member>
        <member name="M:Yarn.ICodeDumpHelper.GetLabelsForNode(System.String)">
            <summary>
            Gets the mapping of instruction indices to named labels found in the
            node.
            </summary>
            <param name="node">The name of the node.</param>
            <returns>The instruction label mapping.</returns>
        </member>
        <member name="T:Yarn.Program">
            <summary>
            A compiled Yarn program.
            </summary>
            <summary>
            A complete Yarn program.
            </summary>
        </member>
        <member name="M:Yarn.Program.LineIDsForNode(System.String)">
            <summary>
            Identifies and returns a list of all line and option IDs inside the
            node.
            </summary>
            <param name="nodeName">The name of the node whos line IDs you
            covet.</param>
            <returns>The line IDs of all lines and options inside the node, or
            <see langword="null"/> if <paramref name="nodeName"/> doesn't exist
            in the program.</returns>
        </member>
        <member name="P:Yarn.Program.SmartVariableNodes">
            <summary>
            Gets the collection of nodes that contain the code for evaluating a
            smart variable.
            </summary>
        </member>
        <member name="M:Yarn.Program.TryGetInitialValue``1(System.String,``0@)">
            <summary>
            Attempts to fetch a value for a variable named <paramref
            name="variableName"/> from this program's collection of initial
            values.
            </summary>
            <typeparam name="T">The type of variable to retrieve.</typeparam>
            <param name="variableName">The name of the variable to retrieve a
            value for.</param>
            <param name="result">On return, contains the value of the variable,
            or the default value of <typeparamref name="T"/> if not known.
            Depending on what <typeparamref name="T"/> is, this value may be
            <see langword="null"/>.</param>
            <returns><see langword="true"/> if an initial value for <paramref
            name="variableName"/> was found; <see langword="false"/>
            otherwise.</returns>
            <exception cref="T:System.InvalidOperationException">Thrown the stored
            initial value found for <paramref name="variableName"/> is not known
            to this version of Yarn Spinner.</exception>
            <exception cref="T:System.InvalidCastException">Thrown when the initial value
            found for <paramref name="variableName"/> cannot be cast or
            converted to <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:Yarn.Program.GetVariableKind(System.String)">
            <summary>
            Gets a value indicating the kind of variable <paramref name="name"/>
            represents.
            </summary>
            <param name="name">The name of a variable.</param>
            <returns>The kind of variable that <paramref name="name"/>
            represents.</returns>
        </member>
        <member name="F:Yarn.Program.NameFieldNumber">
            <summary>Field number for the "name" field.</summary>
        </member>
        <member name="P:Yarn.Program.Name">
            <summary>
            The name of the program.
            </summary>
        </member>
        <member name="F:Yarn.Program.NodesFieldNumber">
            <summary>Field number for the "nodes" field.</summary>
        </member>
        <member name="P:Yarn.Program.Nodes">
            <summary>
            The collection of nodes in this program.
            </summary>
        </member>
        <member name="F:Yarn.Program.InitialValuesFieldNumber">
            <summary>Field number for the "initial_values" field.</summary>
        </member>
        <member name="P:Yarn.Program.InitialValues">
            <summary>
            The collection of initial values for variables; if a PUSH_VARIABLE
            instruction is run, and the value is not found in the storage, this
            value will be used
            </summary>
        </member>
        <member name="F:Yarn.Program.LanguageVersionFieldNumber">
            <summary>Field number for the "language_version" field.</summary>
        </member>
        <member name="P:Yarn.Program.LanguageVersion">
            <summary>
            The version of the Yarn Spinner language that this program was compiled under.
            </summary>
        </member>
        <member name="T:Yarn.Instruction">
            <summary>
            An instruction in a Yarn Program.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.JumpToFieldNumber">
            <summary>Field number for the "jumpTo" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.JumpTo">
            <summary>
            Jumps to a specified position in the current node.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PeekAndJumpFieldNumber">
            <summary>Field number for the "peekAndJump" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.PeekAndJump">
            <summary>
            Peeks a number on the stack, and jumps to that position in the
            current node.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.RunLineFieldNumber">
            <summary>Field number for the "runLine" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.RunLine">
            <summary>
            Runs a line of dialogue.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.RunCommandFieldNumber">
            <summary>Field number for the "runCommand" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.RunCommand">
            <summary>
            Runs a command.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.AddOptionFieldNumber">
            <summary>Field number for the "addOption" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.AddOption">
            <summary>
            Adds an option to the 'pending options' list.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.ShowOptionsFieldNumber">
            <summary>Field number for the "showOptions" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.ShowOptions">
            <summary>
            Shows all options in the 'pending options' list, then clears the list.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PushStringFieldNumber">
            <summary>Field number for the "pushString" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.PushString">
            <summary>
            Pushes a string onto the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PushFloatFieldNumber">
            <summary>Field number for the "pushFloat" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.PushFloat">
            <summary>
            Pushes a floating point number onto the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PushBoolFieldNumber">
            <summary>Field number for the "pushBool" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.PushBool">
            <summary>
            Pushes a boolean onto the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.JumpIfFalseFieldNumber">
            <summary>Field number for the "jumpIfFalse" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.JumpIfFalse">
            <summary>
            Peeks a boolean on the stack, and if it's false, jumps to the
            indicated position in the current node.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PopFieldNumber">
            <summary>Field number for the "pop" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Pop">
            <summary>
            Pops a value of any kind off the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.CallFuncFieldNumber">
            <summary>Field number for the "callFunc" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.CallFunc">
            <summary>
            Calls a named function.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PushVariableFieldNumber">
            <summary>Field number for the "pushVariable" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.PushVariable">
            <summary>
            Pushes the value of the named variable onto the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.StoreVariableFieldNumber">
            <summary>Field number for the "storeVariable" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.StoreVariable">
            <summary>
            Peeks a value of any kind on the stack, and stores it in the
            indicated variable.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.StopFieldNumber">
            <summary>Field number for the "stop" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Stop">
            <summary>
            Halts execution.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.RunNodeFieldNumber">
            <summary>Field number for the "runNode" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.RunNode">
            <summary>
            Jumps to the start of a named node.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.PeekAndRunNodeFieldNumber">
            <summary>Field number for the "peekAndRunNode" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.PeekAndRunNode">
            <summary>
            Peeks a string on the stack, and jumps to the start of that node.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.DetourToNodeFieldNumber">
            <summary>Field number for the "detourToNode" field.</summary>
        </member>
        <member name="F:Yarn.Instruction.PeekAndDetourToNodeFieldNumber">
            <summary>Field number for the "peekAndDetourToNode" field.</summary>
        </member>
        <member name="F:Yarn.Instruction.ReturnFieldNumber">
            <summary>Field number for the "return" field.</summary>
        </member>
        <member name="F:Yarn.Instruction.AddSaliencyCandidateFieldNumber">
            <summary>Field number for the "addSaliencyCandidate" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.AddSaliencyCandidate">
            <summary>
            Pops a boolean from the stack, and adds a saliency candidate to the
            current list.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.AddSaliencyCandidateFromNodeFieldNumber">
            <summary>Field number for the "addSaliencyCandidateFromNode" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.AddSaliencyCandidateFromNode">
            <summary>
            Add a saliency candidate to the current list, given a node name.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.SelectSaliencyCandidateFieldNumber">
            <summary>Field number for the "selectSaliencyCandidate" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.SelectSaliencyCandidate">
             <summary>
             Attempt to select a single saliency candidate from the current list:
             - if one is selected, pushes the destination of that candidate and
               the value 'true'
             - if none is selected, pushes the value 'false'
            
             In all circumstances, clears the saliency candidate list before
             returning.
             </summary>
        </member>
        <member name="T:Yarn.Instruction.InstructionTypeOneofCase">
            <summary>Enum of possible cases for the "InstructionType" oneof.</summary>
        </member>
        <member name="T:Yarn.Instruction.Types">
            <summary>Container for nested types declared in the Instruction message type.</summary>
        </member>
        <member name="F:Yarn.Instruction.Types.PushStringInstruction.ValueFieldNumber">
            <summary>Field number for the "value" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.PushStringInstruction.Value">
            <summary>
            The value to push.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.PushFloatInstruction.ValueFieldNumber">
            <summary>Field number for the "value" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.PushFloatInstruction.Value">
            <summary>
            The value to push.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.PushBoolInstruction.ValueFieldNumber">
            <summary>Field number for the "value" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.PushBoolInstruction.Value">
            <summary>
            The value to push.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.JumpToInstruction.DestinationFieldNumber">
            <summary>Field number for the "destination" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.JumpToInstruction.Destination">
            <summary>
            The instruction number in the current node to jump to.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.RunLineInstruction.LineIDFieldNumber">
            <summary>Field number for the "lineID" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.RunLineInstruction.LineID">
            <summary>
            The ID of the localised content that should be shown for this line.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.RunLineInstruction.SubstitutionCountFieldNumber">
            <summary>Field number for the "substitutionCount" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.RunLineInstruction.SubstitutionCount">
            <summary>
            The number of substitutions present in this line that must be popped
            off the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.RunCommandInstruction.CommandTextFieldNumber">
            <summary>Field number for the "commandText" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.RunCommandInstruction.CommandText">
            <summary>
            The text of the command to send to the client. 
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.RunCommandInstruction.SubstitutionCountFieldNumber">
            <summary>Field number for the "substitutionCount" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.RunCommandInstruction.SubstitutionCount">
            <summary>
            The number of substitutions present in this command that must be popped
            off the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddOptionInstruction.LineIDFieldNumber">
            <summary>Field number for the "lineID" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddOptionInstruction.LineID">
            <summary>
            The ID of the content that should be shown for this option.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddOptionInstruction.DestinationFieldNumber">
            <summary>Field number for the "destination" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddOptionInstruction.Destination">
            <summary>
            The instruction number in the current node to jump to if this option
            is selected.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddOptionInstruction.SubstitutionCountFieldNumber">
            <summary>Field number for the "substitutionCount" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddOptionInstruction.SubstitutionCount">
            <summary>
            The number of substitutions present in this option that must be popped
            off the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddOptionInstruction.HasConditionFieldNumber">
            <summary>Field number for the "hasCondition" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddOptionInstruction.HasCondition">
            <summary>
            A value indicating whether this instruction has a line condition on
            it, whose evaluated value must be popped off the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.JumpIfFalseInstruction.DestinationFieldNumber">
            <summary>Field number for the "destination" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.JumpIfFalseInstruction.Destination">
            <summary>
            The instruction number in the current node to jump to.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.CallFunctionInstruction.FunctionNameFieldNumber">
            <summary>Field number for the "functionName" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.CallFunctionInstruction.FunctionName">
            <summary>
            The name of the function to call.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.PushVariableInstruction.VariableNameFieldNumber">
            <summary>Field number for the "variableName" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.PushVariableInstruction.VariableName">
            <summary>
            The name of the variable whose value should be pushed onto the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.StoreVariableInstruction.VariableNameFieldNumber">
            <summary>Field number for the "variableName" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.StoreVariableInstruction.VariableName">
            <summary>
            The name of the variable whose value should be updated with the value
            currently on top of the stack.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.RunNodeInstruction.NodeNameFieldNumber">
            <summary>Field number for the "nodeName" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.RunNodeInstruction.NodeName">
            <summary>
            The name of the node to begin running.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.DetourToNodeInstruction.NodeNameFieldNumber">
            <summary>Field number for the "nodeName" field.</summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddSaliencyCandidateInstruction.ContentIDFieldNumber">
            <summary>Field number for the "contentID" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddSaliencyCandidateInstruction.ContentID">
            <summary>
            The unique ID for this piece of content, such as a line ID.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddSaliencyCandidateInstruction.ComplexityScoreFieldNumber">
            <summary>Field number for the "complexityScore" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddSaliencyCandidateInstruction.ComplexityScore">
            <summary>
            The complexity score of the candidate.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddSaliencyCandidateInstruction.DestinationFieldNumber">
            <summary>Field number for the "destination" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddSaliencyCandidateInstruction.Destination">
            <summary>
            The instruction number in the current node to jump to if this
            candidate is selected.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddSaliencyCandidateFromNodeInstruction.NodeNameFieldNumber">
            <summary>Field number for the "nodeName" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddSaliencyCandidateFromNodeInstruction.NodeName">
            <summary>
            The name of the node to get saliency information from.
            </summary>
        </member>
        <member name="F:Yarn.Instruction.Types.AddSaliencyCandidateFromNodeInstruction.DestinationFieldNumber">
            <summary>Field number for the "destination" field.</summary>
        </member>
        <member name="P:Yarn.Instruction.Types.AddSaliencyCandidateFromNodeInstruction.Destination">
            <summary>
            The instruction number in the current node to jump to if this
            candidate is selected.
            </summary>
        </member>
        <member name="T:Yarn.Node">
            <summary>
            A node of Yarn script, contained within a <see cref="T:Yarn.Program"/>, and
            containing <see cref="T:Yarn.Instruction"/>s.
            </summary>
            <summary>
            A collection of instructions
            </summary>
        </member>
        <member name="P:Yarn.Node.Tags">
            <summary>
            Gets the collection of tags defined for this node, if any. If no
            tags are defined, returns an empty collection.
            </summary>
        </member>
        <member name="F:Yarn.Node.NodeGroupHeader">
            <summary>
            The name of the header that indicates which node group a node
            belongs to.
            </summary>
        </member>
        <member name="P:Yarn.Node.TrackingVariableName">
            <summary>
            Gets the name of the variable used for tracking the number of times
            this node has completed, or <see langword="null"/> if this node is
            not tracked.
            </summary>
        </member>
        <member name="P:Yarn.Node.IsNodeGroupHub">
            <summary>
            Gets a value indicating whether this node is the 'hub' node for a
            node group.
            </summary>
        </member>
        <member name="P:Yarn.Node.ContentSaliencyConditionVariables">
            <summary>
            Gets an enumerable containing the names of variables that must be
            evaluated in order to determine whether this node can be selected as
            a piece of salient content.
            </summary>
            <remarks>
            The list of variables is stored in the header as a
            semicolon-delimited string.
            </remarks>
        </member>
        <member name="P:Yarn.Node.ContentSaliencyConditionComplexityScore">
            <summary>
            Gets the content saliency condition complexity score for this node.
            </summary>
            <returns>
            An integer representing the content saliency condition complexity
            score if a valid header is found; otherwise, returns -1 if the
            header is not present or does not contain a valid value.
            </returns>
        </member>
        <member name="P:Yarn.Node.NodeGroup">
            <summary>
            Gets the name of the node group that this node is a part of, or <see
            langword="null"/> if it is not part of a node group.
            </summary>
        </member>
        <member name="F:Yarn.Node.NameFieldNumber">
            <summary>Field number for the "name" field.</summary>
        </member>
        <member name="P:Yarn.Node.Name">
            <summary>
            The name of this node.
            </summary>
        </member>
        <member name="F:Yarn.Node.InstructionsFieldNumber">
            <summary>Field number for the "instructions" field.</summary>
        </member>
        <member name="P:Yarn.Node.Instructions">
            <summary>
            The list of instructions in this node.
            </summary>
        </member>
        <member name="F:Yarn.Node.HeadersFieldNumber">
            <summary>Field number for the "headers" field.</summary>
        </member>
        <member name="P:Yarn.Node.Headers">
            <summary>
            The headers present on this node.
            </summary>
        </member>
        <member name="T:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy">
            <summary>
            A content saliency strategy that returns the first of the best,
            least-recently seen choices from the provided options.
            </summary>
            <remarks>
            This strategy stores information about the number of times each piece of
            content has been seen in the provided <see cref="P:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy.VariableStorage"/>.
            </remarks>
        </member>
        <member name="M:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy.#ctor(Yarn.IVariableStorage)">
            <summary>
            Initalises a new instance of the <see
            cref="T:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy"/> class.
            </summary>
            <param name="storage">The variable storage to use when determining
            which content to show.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the provided
            <paramref name="storage"/> argument is null.</exception>
        </member>
        <member name="P:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy.VariableStorage">
            <summary>
            Gets the variable storage to use for storing information about how
            often we've seen content.
            </summary>
        </member>
        <member name="M:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy.ContentWasSelected(Yarn.Saliency.ContentSaliencyOption)">
            <inheritdoc/>
            <remarks>This method increments the view count for <paramref
            name="content"/>, so that the next time QueryBestContent is run, it
            has an updated count of the number of times the content has been
            viewed.</remarks>
        </member>
        <member name="M:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy.QueryBestContent(System.Collections.Generic.IEnumerable{Yarn.Saliency.ContentSaliencyOption})">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Saliency.BestSaliencyStrategy">
            <summary>
            A content saliency strategy that returns the best of the provided
            options.
            </summary>
            <remarks>
            This strategy always selects the single best of the available items,
            regardless of how many times it has been seen before. For a saliency
            strategy that takes into account how recently content has been seen, see
            <see cref="T:Yarn.Saliency.BestLeastRecentlyViewedSaliencyStrategy"/>.
            </remarks>
        </member>
        <member name="M:Yarn.Saliency.BestSaliencyStrategy.ContentWasSelected(Yarn.Saliency.ContentSaliencyOption)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Saliency.BestSaliencyStrategy.QueryBestContent(System.Collections.Generic.IEnumerable{Yarn.Saliency.ContentSaliencyOption})">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Saliency.ContentSaliencyContentType">
            <summary>
            Indicates what type of content a <see cref="T:Yarn.Saliency.ContentSaliencyOption"/>
            represents.
            </summary>
            <seealso cref="P:Yarn.Saliency.ContentSaliencyOption.ContentType"/>
        </member>
        <member name="F:Yarn.Saliency.ContentSaliencyContentType.Node">
            <summary>
            The content represents a node in a node group.
            </summary>
        </member>
        <member name="F:Yarn.Saliency.ContentSaliencyContentType.Line">
            <summary>
            The content represents a line in a line group.
            </summary>
        </member>
        <member name="T:Yarn.Saliency.ContentSaliencyOption">
            <summary>
            Represents a piece of content that may be selected by an <see
            cref="T:Yarn.Saliency.IContentSaliencyStrategy"/>.
            </summary>
        </member>
        <member name="M:Yarn.Saliency.ContentSaliencyOption.#ctor(System.String)">
            <summary>
            Initializes a new instance of the ContentSaliencyOption class with
            the specified content ID.
            </summary>
            <param name="id">A string representing the unique identifier for the
            content.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the
            provided ID is null.</exception>
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.PassingConditionValueCount">
            <summary>
            Gets the number of conditions that passed for this piece of content.
            </summary>
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.FailingConditionValueCount">
            <summary>
            Get the number of conditions that failed for this piece of content.
            </summary>
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.ContentID">
            <summary>
            Gets a string that uniquely identifies this content.
            </summary>
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.ComplexityScore">
            <summary>
            Gets the complexity score of this option.
            </summary>
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.ContentType">
            <summary>
            Gets the type of content that this option represents.
            </summary>
            <remarks>
            This information may be used by custom <see
            cref="T:Yarn.Saliency.IContentSaliencyStrategy"/> classes to allow them to have
            different behaviour depending on the type of the content.
            </remarks> 
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.ViewCountKey">
            <summary>
            Gets a unique variable name that can be used for tracking the view
            count of a specific piece of content. This value is <see
            langword="null"/> if <see cref="P:Yarn.Saliency.ContentSaliencyOption.ContentID"/> is <see
            langword="null"/> or empty.
            </summary>
        </member>
        <member name="P:Yarn.Saliency.ContentSaliencyOption.Destination">
            <summary>
            The destination instruction that the virtual machine will jump to if
            this option is selected.
            </summary>
            <remarks>This property is internal to Yarn Spinner, and is used by
            the <see cref="T:Yarn.VirtualMachine"/> class.</remarks>
        </member>
        <member name="T:Yarn.Saliency.FirstSaliencyStrategy">
            <summary>
            A content saliency strategy that always returns the first non-failing
            item in the list of available options.
            </summary>
            <remarks>
            This saliency strategy is used when a <see cref="T:Yarn.Dialogue"/> has no
            provided saliency strategy, but is required to make a decision.
            </remarks>
        </member>
        <member name="M:Yarn.Saliency.FirstSaliencyStrategy.ContentWasSelected(Yarn.Saliency.ContentSaliencyOption)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Saliency.FirstSaliencyStrategy.QueryBestContent(System.Collections.Generic.IEnumerable{Yarn.Saliency.ContentSaliencyOption})">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Saliency.IContentSaliencyStrategy">
            <summary>
            Contains methods for choosing a piece of content from a collection of
            options.
            </summary>
        </member>
        <member name="M:Yarn.Saliency.IContentSaliencyStrategy.QueryBestContent(System.Collections.Generic.IEnumerable{Yarn.Saliency.ContentSaliencyOption})">
            <summary>
            Chooses an item from content that is the most appropriate (or
            <i>salient</i>) for the user's current context.
            </summary>
            <remarks>Implementations of this method should not modify any state
            - that is, they should be 'read-only' operations. If a strategy
            needs to record information about when a piece of content has been
            selected, it should do it in the <see cref="M:Yarn.Saliency.IContentSaliencyStrategy.ContentWasSelected(Yarn.Saliency.ContentSaliencyOption)"/>
            method.</remarks>
            <param name="content">A collection of content items. This collection
            may be empty.</param>
            <returns>An item from <paramref name="content"/> that is the most
            appropriate for display, or <see langword="null"/> if no content
            should be displayed.</returns>
        </member>
        <member name="M:Yarn.Saliency.IContentSaliencyStrategy.ContentWasSelected(Yarn.Saliency.ContentSaliencyOption)">
            <summary>
            Called by Yarn Spinner to indicate that a piece of salient content
            has been selected, and this system should update any state related
            to how it selects content.
            </summary>
            <remarks>If a content saliency strategy does not need to keep track
            of any state, then this method can be empty.</remarks>
            <param name="content">The content that has been selected.</param>
        </member>
        <member name="T:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy">
            <summary>
            A content saliency strategy that returns a random choice of the best,
            least-recently seen choices from the provided options.
            </summary>
            <remarks>
            This strategy stores information about the number of times each piece of
            content has been seen in the provided <see cref="P:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy.VariableStorage"/>.
            </remarks>
        </member>
        <member name="M:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy.#ctor(Yarn.IVariableStorage)">
            <summary>
            Initializes a new instance of the <see
            cref="T:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy"/> class.
            </summary>
            <param name="storage">The variable storage to use when determining
            which content to show.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the provided
            <paramref name="storage"/> argument is null.</exception>
        </member>
        <member name="P:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy.VariableStorage">
            <summary>
            Gets the variable storage to use for storing information about how
            often we've seen content.
            </summary>
        </member>
        <member name="M:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy.ContentWasSelected(Yarn.Saliency.ContentSaliencyOption)">
            <inheritdoc/>
            <remarks>This method increments the view count for <paramref
            name="content"/>, so that the next time QueryBestContent is run, it
            has an updated count of the number of times the content has been
            viewed.</remarks>
        </member>
        <member name="M:Yarn.Saliency.RandomBestLeastRecentlyViewedSaliencyStrategy.QueryBestContent(System.Collections.Generic.IEnumerable{Yarn.Saliency.ContentSaliencyOption})">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Saliency.EnumerableRandomExtension">
            <summary>
            Contains extension methods for <see cref="T:System.Collections.Generic.IEnumerable`1"/>.
            </summary>
        </member>
        <member name="M:Yarn.Saliency.EnumerableRandomExtension.RandomElement``1(System.Collections.Generic.IEnumerable{``0})">
            <summary>
            Returns a random element from <paramref name="enumerable"/>.
            </summary>
            <remarks>
            This method uses System.Random to make a selection, which is
            cryptographically insecure. This means that this method should not
            be used for security-critical decisions.
            </remarks>
            <typeparam name="T">The type of element in <paramref
            name="enumerable"/>.</typeparam>
            <param name="enumerable">The collection to choose an item
            from.</param>
            <returns>A random element in <paramref
            name="enumerable"/>.</returns>
            <exception cref="T:System.ArgumentException">Thrown when <paramref
            name="enumerable"/> contains no items.</exception>
        </member>
        <member name="T:Yarn.SmartVariableEvaluationVirtualMachine">
            <summary>
            A lightweight, static 'virtual machine' designed for evaluating smart
            variables.
            </summary>
            <remarks>
            This class implements a subset of the <see cref="T:Yarn.Instruction"/>
            operations, and is designed for evaluating smart variable implementation
            nodes.
            </remarks>
        </member>
        <member name="M:Yarn.SmartVariableEvaluationVirtualMachine.TryGetSmartVariable``1(System.String,Yarn.IVariableAccess,Yarn.Library,``0@)">
            <summary>
            Evaluates a smart variable.
            </summary>
            <typeparam name="T">The type of the variable to return.</typeparam>
            <param name="name">The name of the smart variable.</param>
            <param name="variableAccess">An <see cref="T:Yarn.IVariableAccess"/> object
            that can be used for fetching variable values.</param>
            <param name="library">A <see cref="T:Yarn.Library"/> containing functions
            to use while evaluating the variable.</param>
            <param name="result">On return, the computed value of the smart
            variable.</param>
            <returns><see langword="true"/> if the variable could be fetched as
            type <typeparamref name="T"/>; <see langword="false"/>
            otherwise.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref
            name="variableAccess"/> or <paramref name="library"/> is
            null.</exception>
            <exception cref="T:System.ArgumentException">Thrown if <paramref
            name="name"/> is null or empty.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown if an error
            occurs during the evaluation of the variable.</exception>
        </member>
        <member name="M:Yarn.SmartVariableEvaluationVirtualMachine.GetSaliencyOptionsForNodeGroup(System.String,Yarn.IVariableAccess,Yarn.Library)">
            <summary>
            Retrieves a collection of content saliency options available for the
            specified node group.
            </summary>
            <remarks>
            This method iterates through all nodes in the program to find those
            that belong to the specified node group. It calculates the
            complexity score and counts the number of conditions that pass or
            fail for each node, then creates a saliency option for each
            qualifying node.
            </remarks>
            <param name="nodeGroupName">The name of the node group to search for
            available content.</param>
            <param name="variableAccess">The object to use when accessing
            variables.</param>
            <param name="library">The library containing function
            definitions.</param>
            <returns>An enumerable collection of <see
            cref="T:Yarn.Saliency.ContentSaliencyOption"/> objects representing
            available content saliency options for the specified node
            group.</returns>
            <exception cref="T:System.ArgumentException">Thrown when the provided
            <paramref name="nodeGroupName"/> is not a valid node group name in
            the program.</exception>
        </member>
        <member name="T:Yarn.AnyType">
            <summary>
            Represents any type. This type is used in circumstances when a type
            is known to have a value, but the specific type is not known or
            required to be known.
            </summary>
            <remarks>
            This is the parent type of all types.
            </remarks>
        </member>
        <member name="P:Yarn.AnyType.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.AnyType.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.AnyType.Description">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.AnyType.Methods">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.BooleanType">
            <summary>
            A type that represents boolean values.
            </summary>
        </member>
        <member name="P:Yarn.BooleanType.DefaultValue">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.BooleanType.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.BooleanType.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.BooleanType.Description">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.BooleanType.DefaultMethods">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.EnumBase">
            <summary>
            The base type for all enumeration types.
            </summary>
        </member>
        <member name="M:Yarn.EnumBase.#ctor">
            <summary>
            Initialises a new instance of the <see cref="T:Yarn.EnumBase"/> class.
            </summary>
        </member>
        <member name="P:Yarn.EnumBase.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.EnumBase.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.EnumBase.Description">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.EnumType">
            <summary>
            A type that represents enumerations.
            </summary>
        </member>
        <member name="M:Yarn.EnumType.#ctor(System.String,System.String,Yarn.TypeBase)">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.EnumType"/> class that
            represents an enum type. This type has no methods of its own, and is
            a subtype of <see cref="P:Yarn.Types.Any"/>.
            </summary>
            <param name="name">The name of this method.</param>
            <param name="description">A string that describes this
            method.</param>
            <param name="rawType"></param>
        </member>
        <member name="P:Yarn.EnumType.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.EnumType.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.EnumType.Description">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.EnumType.RawType">
            <summary>
            Gets the type of this enum's members.
            </summary>
        </member>
        <member name="P:Yarn.EnumType.EnumCases">
            <summary>
            Gets the collection of enum cases in this enum.
            </summary>
        </member>
        <member name="M:Yarn.EnumType.AddMember(System.String,Yarn.ConstantTypeProperty)">
            <summary>
            Adds a new case to this enumeration type.
            </summary>
            <param name="name">The name of the case.</param>
            <param name="member">The member to add for the given name.</param>
        </member>
        <member name="T:Yarn.FunctionType">
            <summary>
            A type that represents a function.
            </summary>
            <remarks>
            Functions have parameters and a return type, and can be called from
            script. Instances of this type are created when the host
            application registers new functions (such as through using the <see
            cref="M:Yarn.Library.RegisterFunction(System.String,System.Delegate)"/> methods or similar.)
            </remarks>
        </member>
        <member name="P:Yarn.FunctionType.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.FunctionType.Description">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.FunctionType.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.FunctionType.ReturnType">
            <summary>
            Gets the type of value that this function returns.
            </summary>
        </member>
        <member name="P:Yarn.FunctionType.Parameters">
            <summary>
            Gets the list of the parameter types that this function is
            called with.
            </summary>
            <remarks>
            The length of this list also determines the number of
            parameters this function accepts (also known as the function's
            <i>arity</i>).
            </remarks>
        </member>
        <member name="M:Yarn.FunctionType.GetParameterAt(System.Int32)">
            <summary>
            Gets the type of the parameter at the given index.
            </summary>
            <param name="index">The index of the parameter to get the type
            for.</param>
            <returns>The type of the parameter. If <paramref name="index"/> is
            beyond the length of <see cref="P:Yarn.FunctionType.Parameters"/>, and <see
            cref="P:Yarn.FunctionType.VariadicParameterType"/> is not <see langword="null"/>, <see
            cref="P:Yarn.FunctionType.VariadicParameterType"/> is returned. </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when
            <paramref name="index"/> is less than zero, or is beyond the length
            of <see cref="P:Yarn.FunctionType.Parameters"/> and <see cref="P:Yarn.FunctionType.VariadicParameterType"/>
            is <see langword="null"/>.
            </exception>
        </member>
        <member name="P:Yarn.FunctionType.VariadicParameterType">
            <summary>
            Gets the type of value that this type of function accepts as a
            variadic parameter.
            </summary>
            <remarks>This value is <see langword="null"/> if this type of
            function does not accept variadic parameters.</remarks>
        </member>
        <member name="P:Yarn.FunctionType.TypeMembers">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.FunctionType.#ctor(Yarn.IType,Yarn.IType[])">
            <summary>
            Initialises a new instances of the <see cref="T:Yarn.FunctionType"/> class.
            </summary>
            <param name="returnType">The type of the value that this type of
            function returns.</param>
            <param name="parameterTypes">The types of the parameters that this
            type of function accepts.</param>
        </member>
        <member name="M:Yarn.FunctionType.AddParameter(Yarn.IType)">
            <summary>
            Adds a new parameter to the function.
            </summary>
            <param name="parameterType">The type of parameter to
            add.</param>
        </member>
        <member name="M:Yarn.FunctionType.ToString">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.FunctionType.Equals(Yarn.IType)">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.IType">
            <summary>
            Defines properties that describe a type in the Yarn language.
            </summary>
        </member>
        <member name="P:Yarn.IType.Name">
            <summary>
            Gets the name of this type.
            </summary>
        </member>
        <member name="P:Yarn.IType.Parent">
            <summary>
            Gets the parent of this type.
            </summary>
            <remarks>All types have <see cref="P:Yarn.Types.Any"/> as their
            ultimate parent type (except for <see cref="P:Yarn.Types.Any"/>
            itself.)</remarks>
        </member>
        <member name="P:Yarn.IType.Description">
            <summary>
            Gets a more verbose description of this type.
            </summary>
        </member>
        <member name="P:Yarn.IType.TypeMembers">
            <summary>
            Gets the collection of type information for this type's type members.
            </summary>
        </member>
        <member name="T:Yarn.NumberType">
            <summary>
            A type that represents floating-point number values.
            </summary>
        </member>
        <member name="P:Yarn.NumberType.DefaultValue">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.NumberType.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.NumberType.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.NumberType.Description">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.NumberType.ToBridgedType(Yarn.Value)">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.StringType">
            <summary>
            A type that represents string values.
            </summary>
        </member>
        <member name="M:Yarn.StringType.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.StringType"/>
            class.
            </summary>
        </member>
        <member name="P:Yarn.StringType.Name">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.StringType.Parent">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.StringType.Description">
            <inheritdoc/>
        </member>
        <member name="P:Yarn.StringType.DefaultValue">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.StringType.Equals(System.Object)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.StringType.GetHashCode">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.StringType.ToString">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.ITypeMember">
            <summary>
            Provides properties used to work with members of a type.
            </summary>
        </member>
        <member name="P:Yarn.ITypeMember.Type">
            <summary>
            Gets or sets the type of this member.
            </summary>
        </member>
        <member name="T:Yarn.ConstantTypeProperty">
            <summary>
            Represents a property that belongs to a type and contains a read-only
            value.
            </summary>
            <remarks>
            This kind of type member is useful for constant properties, like enum
            cases.
            </remarks>
        </member>
        <member name="P:Yarn.ConstantTypeProperty.Type">
            <summary>
            Gets the type of this property.
            </summary>
        </member>
        <member name="P:Yarn.ConstantTypeProperty.Value">
            <summary>
            Gets the value that is stored in this property.
            </summary>
        </member>
        <member name="P:Yarn.ConstantTypeProperty.Description">
            <summary>
            Gets a string describing this property.
            </summary>
        </member>
        <member name="T:Yarn.TypeBase">
            <summary>
            Provides the base class for all concrete types.
            </summary>
        </member>
        <member name="P:Yarn.TypeBase.Name">
            <summary>
            Gets the name of this type.
            </summary>
        </member>
        <member name="P:Yarn.TypeBase.Parent">
            <summary>
            Gets the parent of this type.
            </summary>
        </member>
        <member name="P:Yarn.TypeBase.Description">
            <summary>
            Gets a string describing this type.
            </summary>
        </member>
        <member name="M:Yarn.TypeBase.ToString">
            <inheritdoc />
        </member>
        <member name="P:Yarn.TypeBase.Methods">
            <summary>
            Gets the collection of methods that are defined on this type.
            </summary>
        </member>
        <member name="P:Yarn.TypeBase.TypeMembers">
            <summary>
            Gets a dictionary containing the members of this type.
            </summary>
        </member>
        <member name="P:Yarn.TypeBase.ConvertibleToTypes">
            <summary>
            Gets the collection of types that this type may be converted to.
            </summary>
        </member>
        <member name="P:Yarn.TypeBase.TypeDepth">
            <summary>
            Gets the depth of this type in the hierarchy, measured as the total
            number of parent-child relationships between this type and a root of
            the type system.
            </summary>
            <remarks>
            <see cref="P:Yarn.Types.Any"/> and <see cref="P:Yarn.Types.Error"/> have a depth
            of zero.
            </remarks>
        </member>
        <member name="M:Yarn.TypeBase.AddConvertibleTo(Yarn.TypeBase)">
            <summary>
            Registers that this type is convertible to <paramref name="otherType"/>.
            </summary>
            <param name="otherType"></param>
        </member>
        <member name="M:Yarn.TypeBase.IsConvertibleTo(Yarn.TypeBase)">
            <summary>
            Checks if this type is convertible to the type represented by
            <paramref name="otherType"/>.
            </summary>
            <remarks>
            A type is convertible to another type if: 
            <list type="number">
            <item>there is an explicit conversion available, or</item>
            <item>it is a descendant of that type, or</item>
            <item>
            the two types are identical.</item></list>
            </remarks>
            <param name="otherType">The type to check.</param>
            <returns><see langword="true"/> if this type is convertible to
            <paramref name="otherType"/>.</returns>
        </member>
        <member name="M:Yarn.TypeBase.#ctor(System.Collections.Generic.IReadOnlyDictionary{System.String,System.Delegate})">
            <summary>
            Initialises a new instance of the <see cref="T:Yarn.TypeBase"/> class with
            a collection of methods.
            </summary>
            <param name="methods">The methods that belong to this type.</param>
        </member>
        <member name="M:Yarn.TypeBase.IsAncestorOf(Yarn.TypeBase)">
            <summary>
            Gets whether this type is an ancestor of <paramref name="other"/>.
            </summary>
            <param name="other">The type to check.</param>
            <returns><see langword="true"/> if this type is an ancestor of
            <paramref name="other"/>; <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="M:Yarn.TypeBase.Equals(Yarn.TypeBase)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.TypeBase.Equals(System.Object)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.TypeBase.GetHashCode">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Types">
            <summary>
            Contains the built-in types available in the Yarn language.
            </summary>
        </member>
        <member name="P:Yarn.Types.String">
            <summary>Gets the type representing strings.</summary>
        </member>
        <member name="P:Yarn.Types.Number">
            <summary>Gets the type representing numbers.</summary>
        </member>
        <member name="P:Yarn.Types.Boolean">
            <summary>Gets the type representing boolean values.</summary>
        </member>
        <member name="P:Yarn.Types.Any">
            <summary>Gets the type representing any value.</summary>
        </member>
        <member name="P:Yarn.Types.Error">
            <summary>Gets the type representing a typing error.</summary>
        </member>
        <member name="P:Yarn.Types.AllBuiltinTypes">
            <summary>
            Gets the collection of all built-in types.
            </summary>
        </member>
        <member name="P:Yarn.Types.TypeMappings">
            <summary>
            Gets a dictionary that maps CLR types to their corresponding
            Yarn types.
            </summary>
        </member>
        <member name="T:Yarn.TypeUtil">
            <summary>
            Contains utility methods for working with types and their methods.
            </summary>
        </member>
        <member name="M:Yarn.TypeUtil.FindImplementingTypeForMethod(Yarn.IType,System.String)">
            <summary>
            Returns the type that contains the actual implementation of the
            method indicated by <paramref name="methodName"/>, given a type or
            sub-type.
            </summary>
            <remarks>
            This method checks to see if <paramref name="type"/> contains a
            concrete implementation of a method named <paramref
            name="methodName"/>. If it does, <paramref name="type"/> is
            returned; otherwise, the parent of <paramref name="type"/> is
            checked, and so on up the hierarchy. If no type in <paramref
            name="type"/>'s parent chain implements a method named <paramref
            name="methodName"/>, this method returns <see langword="null"/>.
            </remarks>
            <param name="type">The type, or sub-type, to start searching for an
            implementation for the method.</param>
            <param name="methodName">The name of the method to search
            for.</param>
            <returns>The <see cref="T:Yarn.IType"/> object that contains an
            implementation of <paramref name="methodName"/>.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref
            name="type"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown if methodName is <see
            langword="null"/> or empty.</exception>
        </member>
        <member name="M:Yarn.TypeUtil.IsSubType(Yarn.IType,Yarn.IType)">
            <summary>
            Checks to see if <paramref name="subType"/> is equal to
            <paramref name="parentType"/>, or if <paramref
            name="parentType"/> exists in <paramref name="subType"/>'s type
            hierarchy.
            </summary>
            <param name="parentType">The parent type to check
            against.</param>
            <param name="subType">The type to check if it's a subtype of
            <paramref name="parentType"/>.</param>
            <returns><see langword="true"/> if <paramref name="subType"/>
            is the same or a subtype of <paramref name="parentType"/>; <see
            langword="false"/> otherwise.</returns>
        </member>
        <member name="T:Yarn.IYarnValue">
            <summary>
            Represents a read-only value in the Yarn Spinner virtual machine.
            </summary>
        </member>
        <member name="M:Yarn.IYarnValue.ConvertTo``1">
            <summary>
            Converts this <see cref="T:Yarn.IYarnValue"/> to type <typeparamref
            name="T"/>.
            </summary>
            <typeparam name="T">The type to convert to.</typeparam>
            <returns>A value of type T.</returns>
        </member>
        <member name="T:Yarn.Value">
            <summary>
            A value from inside Yarn.
            </summary>
        </member>
        <member name="M:Yarn.Value.#ctor(Yarn.Value)">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.Value"/> class,
            using the specified object.
            </summary>
            <remarks>
            If the <c>value</c> is another <see cref="T:Yarn.Value"/>, its contents
            will be copied into the new instance.
            </remarks>
            <throws cref="T:System.ArgumentException">
            Thrown when the <c>value</c> is not a <see cref="T:Yarn.Value"/>, string,
            int, float, double, bool, or null.
            </throws>
            <param name="value">The value that this <see cref="T:Yarn.Value"/>
            should contain.</param>
        </member>
        <member name="M:Yarn.Value.CompareTo(System.Object)">
            <summary>
            Compares this <see cref="T:Yarn.Value"/> to another object. The other object must either be another instance of <see cref="T:Yarn.Value"/>, or <c>null</c>.
            </summary>
            <param name="obj">The object to compare to.</param>
            <returns>Returns the same results as <see cref="M:System.IComparable.CompareTo(System.Object)"/>.</returns>
            <exception cref="T:System.ArgumentException">Thrown when <c>obj</c> is not a <see cref="T:Yarn.Value"/>.</exception>
        </member>
        <member name="M:Yarn.Value.ToString">
            <summary>
            Converts this value to a string.
            </summary>
            <returns>The string representation of this value</returns>
        </member>
        <member name="T:Yarn.Operand">
            <summary>
            A value used by an Instruction.
            </summary>
            <summary>
            A value used by an Instruction.
            </summary>
        </member>
        <member name="M:Yarn.Operand.#ctor(System.Boolean)">
            <summary>
            Convenience constructor for the Operand type.
            </summary>
            <remarks>
            so that we don't need to have two separate steps for creating and then preparing the Operand
            </remarks>
            <param name="value">The boolean value to be made into the operand</param>
        </member>
        <member name="M:Yarn.Operand.#ctor(System.String)">
            <summary>
            Convenience constructor for the Operand type.
            </summary>
            <remarks>
            so that we don't need to have two separate steps for creating and then preparing the Operand
            </remarks>
            <param name="value">The string value to be made into the operand</param>
        </member>
        <member name="M:Yarn.Operand.#ctor(System.Single)">
            <summary>
            Convenience constructor for the Operand type.
            </summary>
            <remarks>
            so that we don't need to have two separate steps for creating and then preparing the Operand
            </remarks>
            <param name="value">The float value to be made into the operand</param>
        </member>
        <member name="F:Yarn.Operand.StringValueFieldNumber">
            <summary>Field number for the "string_value" field.</summary>
        </member>
        <member name="P:Yarn.Operand.StringValue">
            <summary>
            A string.
            </summary>
        </member>
        <member name="P:Yarn.Operand.HasStringValue">
            <summary>Gets whether the "string_value" field is set</summary>
        </member>
        <member name="M:Yarn.Operand.ClearStringValue">
            <summary> Clears the value of the oneof if it's currently set to "string_value" </summary>
        </member>
        <member name="F:Yarn.Operand.BoolValueFieldNumber">
            <summary>Field number for the "bool_value" field.</summary>
        </member>
        <member name="P:Yarn.Operand.BoolValue">
            <summary>
            A boolean (true or false).
            </summary>
        </member>
        <member name="P:Yarn.Operand.HasBoolValue">
            <summary>Gets whether the "bool_value" field is set</summary>
        </member>
        <member name="M:Yarn.Operand.ClearBoolValue">
            <summary> Clears the value of the oneof if it's currently set to "bool_value" </summary>
        </member>
        <member name="F:Yarn.Operand.FloatValueFieldNumber">
            <summary>Field number for the "float_value" field.</summary>
        </member>
        <member name="P:Yarn.Operand.FloatValue">
            <summary>
            A floating point number.
            </summary>
        </member>
        <member name="P:Yarn.Operand.HasFloatValue">
            <summary>Gets whether the "float_value" field is set</summary>
        </member>
        <member name="M:Yarn.Operand.ClearFloatValue">
            <summary> Clears the value of the oneof if it's currently set to "float_value" </summary>
        </member>
        <member name="T:Yarn.Operand.ValueOneofCase">
            <summary>Enum of possible cases for the "value" oneof.</summary>
        </member>
        <member name="T:Yarn.Operator">
            <summary>
            Lists the available operators that can be used with Yarn values.
            </summary>
        </member>
        <member name="F:Yarn.Operator.None">
            <summary>A unary operator that returns its input.</summary>
        </member>
        <member name="F:Yarn.Operator.EqualTo">
            <summary>A binary operator that represents equality.</summary>
        </member>
        <member name="F:Yarn.Operator.GreaterThan">
            <summary>A binary operator that represents a value being
            greater than another.</summary>
        </member>
        <member name="F:Yarn.Operator.GreaterThanOrEqualTo">
            <summary>A binary operator that represents a value being
            greater than or equal to another.</summary>
        </member>
        <member name="F:Yarn.Operator.LessThan">
            <summary>A binary operator that represents a value being less
            than another.</summary>
        </member>
        <member name="F:Yarn.Operator.LessThanOrEqualTo">
            <summary>A binary operator that represents a value being less
            than or equal to another.</summary>
        </member>
        <member name="F:Yarn.Operator.NotEqualTo">
            <summary>A binary operator that represents
            inequality.</summary>
        </member>
        <member name="F:Yarn.Operator.Or">
            <summary>A binary operator that represents a logical
            or.</summary>
        </member>
        <member name="F:Yarn.Operator.And">
            <summary>A binary operator that represents a logical
            and.</summary>
        </member>
        <member name="F:Yarn.Operator.Xor">
            <summary>A binary operator that represents a logical exclusive
            or.</summary>
        </member>
        <member name="F:Yarn.Operator.Not">
            <summary>A binary operator that represents a logical
            not.</summary>
        </member>
        <member name="F:Yarn.Operator.UnaryMinus">
            <summary>A unary operator that represents negation.</summary>
        </member>
        <member name="F:Yarn.Operator.Add">
            <summary>A binary operator that represents addition.</summary>
        </member>
        <member name="F:Yarn.Operator.Minus">
            <summary>A binary operator that represents
            subtraction.</summary>
        </member>
        <member name="F:Yarn.Operator.Multiply">
            <summary>A binary operator that represents
            multiplication.</summary>
        </member>
        <member name="F:Yarn.Operator.Divide">
            <summary>A binary operator that represents division.</summary>
        </member>
        <member name="F:Yarn.Operator.Modulo">
            <summary>A binary operator that represents the remainder
            operation.</summary>
        </member>
        <member name="T:Yarn.ISmartVariableEvaluator">
            <summary>
            Contains methods for evaluating the value of smart variables
            </summary>
        </member>
        <member name="M:Yarn.ISmartVariableEvaluator.TryGetSmartVariable``1(System.String,``0@)">
            <summary>
            Evaluate the value of a smart variable named <paramref
            name="name"/>.
            </summary>
            <typeparam name="T">The type of the returned value.</typeparam>
            <param name="name">The name of the variable.</param>
            <param name="result">On return, contains the returned value of the
            smart variable, or the <see langword="default"/> value of
            <typeparamref name="T"/> if a smart variable named <paramref
            name="name"/> could not be found or its value could not be returned
            as type <typeparamref name="T"/>.</param>
            <returns><see langword="true"/> if the smart variable was evaluated,
            <see langword="false"/> otherwise.</returns>
        </member>
        <member name="F:Yarn.VirtualMachine.State.currentNodeName">
            <summary>The name of the node that we're currently
            in.</summary>
        </member>
        <member name="F:Yarn.VirtualMachine.State.programCounter">
            <summary>The instruction number in the current
            node.</summary>
        </member>
        <member name="F:Yarn.VirtualMachine.State.currentOptions">
            <summary>The current list of options that will be delivered
            when the next RunOption instruction is
            encountered.</summary>
        </member>
        <member name="F:Yarn.VirtualMachine.State.stack">
            <summary>The value stack.</summary>
        </member>
        <member name="M:Yarn.VirtualMachine.State.PushValue(Yarn.Value)">
            <summary>Pushes a <see cref="T:Yarn.Value"/> object onto the
            stack.</summary>
            <param name="v">The value to push onto the stack.</param>
        </member>
        <member name="M:Yarn.VirtualMachine.State.PopValue">
            <summary>Removes a value from the top of the stack, and
            returns it.</summary>
            <returns>The value that was at the top of the stack when
            this method was called.</returns>
        </member>
        <member name="M:Yarn.VirtualMachine.State.PeekValue">
            <summary>Peeks at a value from the stack.</summary>
            <returns>The value at the top of the stack.</returns>
        </member>
        <member name="M:Yarn.VirtualMachine.State.ClearStack">
            <summary>Clears the stack.</summary>
        </member>
        <member name="M:Yarn.VirtualMachine.ResetState">
            Reset the state of the VM
        </member>
        <member name="P:Yarn.VirtualMachine.Program">
            <summary>
            The <see cref="P:Yarn.VirtualMachine.Program"/> that this virtual machine is running.
            </summary>
        </member>
        <member name="F:Yarn.VirtualMachine.ExecutionState.Stopped">
            <summary>
            The VirtualMachine is not running a node.
            </summary>
        </member>
        <member name="F:Yarn.VirtualMachine.ExecutionState.WaitingOnOptionSelection">
            <summary>
            The VirtualMachine is waiting on option selection. Call
            <see cref="M:Yarn.VirtualMachine.SetSelectedOption(System.Int32)"/> before calling <see
            cref="M:Yarn.VirtualMachine.Continue"/>.
            </summary>
        </member>
        <member name="F:Yarn.VirtualMachine.ExecutionState.WaitingForContinue">
            <summary>
            The VirtualMachine has finished delivering content to the
            client game, and is waiting for <see cref="M:Yarn.VirtualMachine.Continue"/> to
            be called.
            </summary>
        </member>
        <member name="F:Yarn.VirtualMachine.ExecutionState.DeliveringContent">
            <summary>
            The VirtualMachine is delivering a line, options, or a
            commmand to the client game.
            </summary>
        </member>
        <member name="F:Yarn.VirtualMachine.ExecutionState.Running">
            <summary>
            The VirtualMachine is in the middle of executing code.
            </summary>
        </member>
        <member name="M:Yarn.VirtualMachine.Continue">
            Resumes execution.
        </member>
        <member name="M:Yarn.VirtualMachine.CheckCanContinue">
            <summary>
            Runs a series of tests to see if the <see
            cref="T:Yarn.VirtualMachine"/> is in a state where <see
            cref="M:Yarn.VirtualMachine.Continue"/> can be called. Throws an exception if it
            can't.
            </summary>
            <throws cref="T:Yarn.DialogueException">Thrown when the <see
            cref="T:Yarn.VirtualMachine"/> is not in a state where <see
            cref="M:Yarn.VirtualMachine.Continue"/> could be called.</throws>
        </member>
        <member name="T:Yarn.YarnSpinnerReflection">
            <summary>Holder for reflection information generated from yarn_spinner.proto</summary>
        </member>
        <member name="P:Yarn.YarnSpinnerReflection.Descriptor">
            <summary>File descriptor for yarn_spinner.proto</summary>
        </member>
        <member name="F:Yarn.Header.KeyFieldNumber">
            <summary>Field number for the "key" field.</summary>
        </member>
        <member name="P:Yarn.Header.Key">
            <summary>
            The name of the header.
            </summary>
        </member>
        <member name="F:Yarn.Header.ValueFieldNumber">
            <summary>Field number for the "value" field.</summary>
        </member>
        <member name="P:Yarn.Header.Value">
            <summary>
            The value of the header.
            </summary>
        </member>
        <member name="T:Yarn.InstructionV1">
            <summary>
            A single Yarn instruction.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.OpcodeFieldNumber">
            <summary>Field number for the "opcode" field.</summary>
        </member>
        <member name="P:Yarn.InstructionV1.Opcode">
            <summary>
            The operation that this instruction will perform.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.OperandsFieldNumber">
            <summary>Field number for the "operands" field.</summary>
        </member>
        <member name="P:Yarn.InstructionV1.Operands">
            <summary>
            The list of operands, if any, that this instruction uses.
            </summary>
        </member>
        <member name="T:Yarn.InstructionV1.Types">
            <summary>Container for nested types declared in the InstructionV1 message type.</summary>
        </member>
        <member name="T:Yarn.InstructionV1.Types.OpCode">
            <summary>
            The type of instruction that this is.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.JumpTo">
            <summary>
            Jumps to a named position in the node.
            opA = string: label name
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.Jump">
            <summary>
            Peeks a string from stack, and jumps to that named position in
            the node. 
            No operands.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.RunLine">
            <summary>
            Delivers a string ID to the client.
            opA = string: string ID
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.RunCommand">
            <summary>
            Delivers a command to the client.
            opA = string: command text
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.AddOption">
            <summary>
            Adds an entry to the option list (see ShowOptions).
            - opA = string: string ID for option to add
            - opB = string: destination to go to if this option is selected
            - opC = number: number of expressions on the stack to insert
              into the line
            - opD = bool: whether the option has a condition on it (in which
              case a value should be popped off the stack and used to signal
              the game that the option should be not available)
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.ShowOptions">
            <summary>
            Presents the current list of options to the client, then clears
            the list. The most recently selected option will be on the top
            of the stack when execution resumes.
            No operands.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.PushString">
            <summary>
            Pushes a string onto the stack.
            opA = string: the string to push to the stack.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.PushFloat">
            <summary>
            Pushes a floating point number onto the stack.
            opA = float: number to push to stack
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.PushBool">
            <summary>
            Pushes a boolean onto the stack.
            opA = bool: the bool to push to stack
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.PushNull">
            <summary>
            Pushes a null value onto the stack.
            No operands.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.JumpIfFalse">
            <summary>
            Jumps to the named position in the the node, if the top of the
            stack is not null, zero or false.
            opA = string: label name 
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.Pop">
            <summary>
            Discards top of stack.
            No operands.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.CallFunc">
            <summary>
            Calls a function in the client. Pops as many arguments as the
            client indicates the function receives, and the result (if any)
            is pushed to the stack.		
            opA = string: name of the function
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.PushVariable">
            <summary>
            Pushes the contents of a variable onto the stack.
            opA = name of variable 
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.StoreVariable">
            <summary>
            Stores the contents of the top of the stack in the named
            variable. 
            opA = name of variable
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.Stop">
            <summary>
            Stops execution of the program.
            No operands.
            </summary>
        </member>
        <member name="F:Yarn.InstructionV1.Types.OpCode.RunNode">
            <summary>
            Pops a string off the top of the stack, and runs the node with
            that name.
            No operands.
            </summary>
        </member>
        <member name="T:Yarn.Markup.IAttributeMarkerProcessor">
            <summary>Provides a mechanism for producing replacement text for a
            marker.</summary>
            <seealso cref="M:Yarn.Markup.LineParser.RegisterMarkerProcessor(System.String,Yarn.Markup.IAttributeMarkerProcessor)"/>
            <seealso cref="M:Yarn.Markup.LineParser.DeregisterMarkerProcessor(System.String)"/>
        </member>
        <member name="M:Yarn.Markup.IAttributeMarkerProcessor.ProcessReplacementMarker(Yarn.Markup.MarkupAttribute,System.Text.StringBuilder,System.Collections.Generic.List{Yarn.Markup.MarkupAttribute},System.String)">
            <summary>
            Produces replacement text for a marker.
            </summary>
            <param name="marker">The marker to process into replacement
            text.</param>
            <param name="childBuilder">A <see cref="T:System.Text.StringBuilder"/>
            that contains the child text contained within <paramref
            name="marker"/>. Use the methods on this stringbuilder to produce
            any text needed from this marker.</param>
            <param name="childAttributes">The child attributes of <paramref
            name="marker"/>.</param>
            <param name="localeCode">A BCP-47 locale code that represents the
            locale in which any processing should take place.</param>
            <example>
            <para>If the original text being processed by <see
            cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean)"/> is "<c>[a]
            text1 [b/] text2 [/a]</c>", then the following facts will be
            true:</para>
            <list type="bullet">
            <item>
            <paramref name="childBuilder"/> will contain the text "text1 text2".
            </item>
            <item>
            <paramref name="childAttributes"/> will contain a MarkupAttribute
            named "<c>b</c>".
            </item>
            </list>
            </example>
            <returns>The collection of diagnostics produced during processing,
            and the number of invisible characters created during processing.</returns>
        </member>
        <member name="T:Yarn.Markup.ReplacementMarkerResult">
            <summary>
            A bundle of results from processing replacement markers.
            </summary>
            <seealso cref="T:Yarn.Markup.IAttributeMarkerProcessor"/>
        </member>
        <member name="F:Yarn.Markup.ReplacementMarkerResult.Diagnostics">
            <summary>
            The collection of diagnostics produced during processing, if any.
            </summary>
        </member>
        <member name="F:Yarn.Markup.ReplacementMarkerResult.InvisibleCharacters">
            <summary>
            The number of invisible characters added into the line during processing.
            </summary>
            <remarks>
            This will vary depending on what the replacement markup needs to do.
            <list type="bullet">
            <item>
            <para>
            When only inserting rich-text tags, this should be the length of all inserted text.
            For example <c>"this is text with [bold]some bold[/bold] elements"</c> translated into Unity style rich-text become <c>"this is text with &lt;b>some bold&lt;/b> elements"</c>.
            In this case then the value of <c>InvisibleCharacters</c> would be seven.
            </para>
            </item>
            <item>
            <para>
            When only modifying the content of the children text, such as making all text upper case, this should be <c>0</c>.
            For example <c>"this is text with [upper]some uppercased[/upper] elements"</c> is transformed into <c>"this is text with SOME UPPERCASED elements"</c>.
            The number of invisible character will be zero.
            </para>
            </item>
            <item>
            When adding new content into the line (regardless of being added at the start, end, or middle) this should be zero but the replacement processor should make sure to shift along it's children attributes where appropriate.
            For example <c>"this is text with [emph]some emphasised[/emph] elements"</c> transformed into <c>"this is text with !!some emphasised!! elements"</c> the value of <c>InvisibleCharacters</c> would be zero.
            In this case however the <c>childAttributes</c> in <see cref="M:Yarn.Markup.IAttributeMarkerProcessor.ProcessReplacementMarker(Yarn.Markup.MarkupAttribute,System.Text.StringBuilder,System.Collections.Generic.List{Yarn.Markup.MarkupAttribute},System.String)"/> would need to be shifted down two.
            </item>
            </list>
            </remarks>
        </member>
        <member name="M:Yarn.Markup.ReplacementMarkerResult.#ctor(System.Collections.Generic.List{Yarn.Markup.LineParser.MarkupDiagnostic},System.Int32)">
            <summary>
            Convenience constructor for replacement markup results.
            </summary>
            <param name="diagnostics">The diagnostics generated during processing</param>
            <param name="invisibleCharacters">the number of invisible characters generated during processing.</param>
        </member>
        <member name="M:Yarn.Markup.ReplacementMarkerResult.#ctor(System.Int32)">
            <summary>
            Convenience form of <see cref="M:Yarn.Markup.ReplacementMarkerResult.#ctor(System.Collections.Generic.List{Yarn.Markup.LineParser.MarkupDiagnostic},System.Int32)"/> for when there are no diagnostics.
            </summary>
            <param name="invisibleCharacters">the number of invisible characters generated during processing.</param>
        </member>
        <member name="T:Yarn.Markup.LineParser">
            <summary>
            Parses text and produces markup information.
            </summary>
        </member>
        <member name="F:Yarn.Markup.LineParser.ReplacementMarkerContents">
            <summary>
            The name of the property in replacement attributes that
            contains the text of the attribute.
            </summary>
        </member>
        <member name="F:Yarn.Markup.LineParser.CharacterAttribute">
            <summary>
            The name of the implicitly-generated <c>character</c> attribute.
            </summary>
            <seealso cref="F:Yarn.Markup.LineParser.CharacterAttributeNameProperty"/>
        </member>
        <member name="F:Yarn.Markup.LineParser.CharacterAttributeNameProperty">
            <summary>
            The name of the 'name' property, on the implicitly-generated
            <c>character</c> attribute.
            </summary>
            <seealso cref="F:Yarn.Markup.LineParser.CharacterAttribute"/>
        </member>
        <member name="F:Yarn.Markup.LineParser.TrimWhitespaceProperty">
            <summary>
            The name of the property to use to signify that trailing
            whitespace should be trimmed if a tag had preceding whitespace
            or begins the line. This property must be a bool value.
            </summary>
        </member>
        <member name="F:Yarn.Markup.LineParser.NoMarkupAttribute">
            <summary>
            The name of the attribute to use to indicate that no marker
            processing should occur.
            </summary>
        </member>
        <member name="F:Yarn.Markup.LineParser.markerProcessors">
            <summary>
            A dictionary that maps the names of attributes to an object
            that can generate replacement text for those attributes.
            </summary>
        </member>
        <member name="F:Yarn.Markup.LineParser.input">
            <summary>
            The original text that this line parser is parsing.
            </summary>
        </member>
        <member name="F:Yarn.Markup.LineParser.stringReader">
            <summary>
            A string reader used for reading through the <see
            cref="F:Yarn.Markup.LineParser.input"/>.
            </summary>
        </member>
        <member name="M:Yarn.Markup.LineParser.RegisterMarkerProcessor(System.String,Yarn.Markup.IAttributeMarkerProcessor)">
            <summary>Registers an object as a marker processor for a given
            marker name.</summary>
            <remarks>
            When a marker processor is registered for a marker name, the
            parser will ask the processor for text to insert into the plain
            text. This allows users of the <see cref="T:Yarn.Markup.LineParser"/> class
            to dynamically replace text in a line. The <c>nomarkup</c> tag is
            implemented in this way by the <see cref="T:Yarn.Markup.LineParser"/> class
            directly; the <see cref="T:Yarn.Dialogue"/> class uses this mechanism
            to implement the <c>select</c>, <c>plural</c> and <c>ordinal</c> markers.
            </remarks>
            <param name="attributeName">The name of the marker that should
            use this marker processor.</param>
            <param name="markerProcessor">The object that should be invoked
            when markers with this name are encountered.</param>
        </member>
        <member name="M:Yarn.Markup.LineParser.DeregisterMarkerProcessor(System.String)">
            <summary>
            Removes any marker processor associated with a given marker name.
            </summary>
            <param name="attributeName">The name of the marker.</param>
        </member>
        <member name="T:Yarn.Markup.LineParser.MarkupDiagnostic">
            <summary>
            Represents a diagnostic message produced during markup parsing.
            </summary>
        </member>
        <member name="P:Yarn.Markup.LineParser.MarkupDiagnostic.Message">
            <summary>
            Gets the text of the diagnostic.
            </summary>
        </member>
        <member name="P:Yarn.Markup.LineParser.MarkupDiagnostic.Column">
            <summary>
            Gets the zero-based column index of the start of the range at
            which this diagnostic appears.
            </summary>
        </member>
        <member name="M:Yarn.Markup.LineParser.MarkupDiagnostic.#ctor(System.String,System.Int32)">
            <summary>
            Initialises a new instance of the <see cref="T:Yarn.Markup.LineParser.MarkupDiagnostic"/>
            struct.
            </summary>
            <param name="message">The diagnostic text.</param>
            <param name="column">The zero-based first column of the
            diagnostic's range.</param>
        </member>
        <member name="M:Yarn.Markup.LineParser.MarkupDiagnostic.Equals(System.Object)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.LineParser.MarkupDiagnostic.GetHashCode">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.LineParser.MarkupDiagnostic.op_Equality(Yarn.Markup.LineParser.MarkupDiagnostic,Yarn.Markup.LineParser.MarkupDiagnostic)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.LineParser.MarkupDiagnostic.op_Inequality(Yarn.Markup.LineParser.MarkupDiagnostic,Yarn.Markup.LineParser.MarkupDiagnostic)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.LineParser.MarkupDiagnostic.Equals(Yarn.Markup.LineParser.MarkupDiagnostic)">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean)">
            <inheritdoc cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Parses a string of text and produces a markup parse result.
            </summary>
            <param name="input">The text to parse.</param>
            <param name="localeCode">The locale to use when processing markers,
            as a BCP-47 locale tag.</param>
            <param name="squish">If <see langword="false"/>, markers that are
            split as part of the markup parsing process will not be re-merged
            before returning the result.</param>
            <param name="sort">If <see langword="true"/>, markers will be sorted based on their position in the input.å</param>
            <param name="addImplicitCharacterAttribute">If true, the parser will
            attempt to detect a character name in the text and add a
            <c>[character]</c> attribute for it.</param>
            <returns>A markup parse result.</returns>
        </member>
        <member name="M:Yarn.Markup.LineParser.ExpandSubstitutions(System.String,System.Collections.Generic.IList{System.String})">
            <summary>
            Replaces all substitution markers in a text with the given
            substitution list.
            </summary>
            <remarks>
            This method replaces substitution markers - for example, <c>{0}</c>
            - with the corresponding entry in <paramref name="substitutions"/>.
            If <paramref name="text"/> contains a substitution marker whose
            index is not present in <paramref name="substitutions"/>, it is
            ignored.
            </remarks>
            <param name="text">The text containing substitution markers.</param>
            <param name="substitutions">The list of substitutions.</param>
            <returns><paramref name="text"/>, with the content from <paramref
            name="substitutions"/> inserted.</returns>
        </member>
        <member name="M:Yarn.Markup.LineParser.Dispose">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Markup.BuiltInMarkupReplacer">
            <summary>
            A marker processor that handles the built-in markers <c>[select]</c>
            <c>[plural]</c>, and <c>[ordinal]</c>.
            </summary>
        </member>
        <member name="M:Yarn.Markup.BuiltInMarkupReplacer.ProcessReplacementMarker(Yarn.Markup.MarkupAttribute,System.Text.StringBuilder,System.Collections.Generic.List{Yarn.Markup.MarkupAttribute},System.String)">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Markup.MarkupParseException">
            <summary>
            An exception representing something going wrong when parsing markup.
            </summary>
            <seealso cref="T:Yarn.Markup.LineParser"/>
        </member>
        <member name="M:Yarn.Markup.MarkupParseException.#ctor">
            <summary>
            Initializes a new instance of the <see
            cref="T:Yarn.Markup.MarkupParseException"/> class.
            </summary>
        </member>
        <member name="M:Yarn.Markup.MarkupParseException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see
            cref="T:Yarn.Markup.MarkupParseException"/> class.
            </summary>
            <param name="message">An explanation of the exception.</param>
        </member>
        <member name="M:Yarn.Markup.MarkupParseException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see
            cref="T:Yarn.Markup.MarkupParseException"/> class.
            </summary>
            <param name="message">An explanation of the exception.</param>
            <param name="inner">The exception that caused this
            exception.</param>
        </member>
        <member name="T:Yarn.Markup.MarkupParseResult">
            <summary>
            The result of parsing a line of marked-up text.
            </summary>
            <remarks>
            You do not create instances of this struct yourself. It is created
            by objects that can parse markup, such as <see cref="T:Yarn.Dialogue"/>.
            </remarks>
            <seealso cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/>
        </member>
        <member name="P:Yarn.Markup.MarkupParseResult.Text">
            <summary>
            The original text, with all parsed markers removed.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupParseResult.Attributes">
            <summary>
            The list of <see cref="T:Yarn.Markup.MarkupAttribute"/>s in this parse
            result.
            </summary>
        </member>
        <member name="M:Yarn.Markup.MarkupParseResult.#ctor(System.String,System.Collections.Generic.List{Yarn.Markup.MarkupAttribute})">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.Markup.MarkupParseResult"/> struct.
            </summary>
            <param name="text">The plain text.</param>
            <param name="attributes">The list of attributes.</param>
        </member>
        <member name="M:Yarn.Markup.MarkupParseResult.TryGetAttributeWithName(System.String,Yarn.Markup.MarkupAttribute@)">
            <summary>
            Gets the first attribute with the specified name, if present.
            </summary>
            <param name="name">The name of the attribute to get.</param>
            <param name="attribute">When this method returns, contains the
            attribute with the specified name, if the attribute is found;
            otherwise, the default <see cref="T:Yarn.Markup.MarkupAttribute"/>. This
            parameter is passed uninitialized.</param>
            <returns><see langword="true"/> if the <see
            cref="T:Yarn.Markup.MarkupParseResult"/> contains an attribute with the
            specified name; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:Yarn.Markup.MarkupParseResult.TextForAttribute(Yarn.Markup.MarkupAttribute)">
            <summary>
            Returns the substring of <see cref="P:Yarn.Markup.MarkupParseResult.Text"/> covered by
            <paramref name="attribute"/> Position and Length properties.
            </summary>
            <remarks>
            <para>
            If the attribute's <see cref="P:Yarn.Markup.MarkupAttribute.Length"/>
            property is zero, this method returns the empty string.
            </para>
            <para>
            This method does not check to see if <paramref
            name="attribute"/> is an attribute belonging to this
            MarkupParseResult. As a result, if you pass an attribute that
            doesn't belong, it may describe a range of text that does not
            appear in <see cref="P:Yarn.Markup.MarkupParseResult.Text"/>. If this occurs, an <see
            cref="T:System.IndexOutOfRangeException"/> will be thrown.
            </para>
            </remarks>
            <param name="attribute">The attribute to get the text
            for.</param>
            <returns>The text contained within the attribute.</returns>
            <throws cref="T:System.IndexOutOfRangeException">Thrown when
            attribute's <see cref="P:Yarn.Markup.MarkupAttribute.Position"/> and <see
            cref="P:Yarn.Markup.MarkupAttribute.Length"/> properties describe a range of
            text outside the maximum range of <see cref="P:Yarn.Markup.MarkupParseResult.Text"/>.</throws>
        </member>
        <member name="M:Yarn.Markup.MarkupParseResult.DeleteRange(Yarn.Markup.MarkupAttribute)">
             <summary>
             Deletes an attribute from this markup.
             </summary>
             <remarks>
             This method deletes the range of text covered by <paramref
             name="attributeToDelete"/>, and updates the other attributes in this
             markup as follows:
            
             <list type="bullet">
             <item>
             Attributes that start and end before the deleted attribute are
             unmodified.
             </item>
            
             <item>
             Attributes that start before the deleted attribute and end inside it
             are truncated to remove the part overlapping the deleted attribute.
             </item>
            
             <item>
             Attributes that have the same position and length as the deleted
             attribute are deleted, if they apply to any text.
             </item>
            
             <item>
             Attributes that start and end within the deleted attribute are
             deleted.
             </item>
            
             <item>
             Attributes that start within the deleted attribute, and end outside
             it, have their start truncated to remove the part overlapping the
             deleted attribute.
             </item>
            
             <item>
             Attributes that start after the deleted attribute have their start
             point adjusted to account for the deleted text.
             </item>
             </list>
            
             <para>
             This method does not modify the current object. A new <see
             cref="T:Yarn.Markup.MarkupParseResult"/> is returned.
             </para>
            
             <para>
             If <paramref name="attributeToDelete"/> is not an attribute of this
             <see cref="T:Yarn.Markup.MarkupParseResult"/>, the behaviour is undefined.
             </para>
             </remarks>
             <param name="attributeToDelete">The attribute to remove.</param>
             <returns>A new <see cref="T:Yarn.Markup.MarkupParseResult"/> object, with the
             plain text modified and an updated collection of
             attributes.</returns>
        </member>
        <member name="T:Yarn.Markup.MarkupAttribute">
            <summary>
            Represents a range of text in a marked-up string.
            </summary>
            <remarks>
            You do not create instances of this struct yourself. It is created by
            objects that can parse markup, such as <see cref="T:Yarn.Markup.LineParser"/>.
            </remarks>
            <seealso cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.#ctor(System.Int32,System.Int32,System.Int32,System.String,System.Collections.Generic.IEnumerable{Yarn.Markup.MarkupProperty})">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.Markup.MarkupAttribute"/>
            struct using specified values.
            </summary>
            <param name="position">The position in the plain text where
            this attribute begins.</param>
            <param name="sourcePosition">The position in the original
            source text where this attribute begins.</param>
            <param name="length">The number of text elements in the plain
            text that this attribute covers.</param>
            <param name="name">The name of the attribute.</param>
            <param name="properties">The properties associated with this
            attribute.</param>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.#ctor(Yarn.Markup.MarkupAttributeMarker,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.Markup.MarkupAttribute"/>
            struct, using information taken from an opening <see
            cref="T:Yarn.Markup.MarkupAttributeMarker"/>.
            </summary>
            <param name="openingMarker">The marker that represents the
            start of this attribute.</param>
            <param name="length">The number of text elements in the plain
            text that this attribute covers.</param>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.Shift(System.Int32)">
            <summary>
            Creates a new <see cref="T:Yarn.Markup.MarkupAttribute"/> based on the current
            instance whose <see cref="P:Yarn.Markup.MarkupAttribute.Position"/> is shifted towards the end of
            the string by <paramref name="shift"/> characters.
            </summary>
            <param name="shift">The number of characters to shift by.</param>
            <returns>A new <see cref="T:Yarn.Markup.MarkupAttribute"/> with an updated <see
            cref="P:Yarn.Markup.MarkupAttribute.Position"/>.</returns>
        </member>
        <member name="P:Yarn.Markup.MarkupAttribute.Position">
            <summary>
            Gets the position in the plain text where
            this attribute begins.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttribute.Length">
            <summary>
            Gets the number of text elements in the plain
            text that this attribute covers.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttribute.Name">
            <summary>
            Gets the name of the attribute.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttribute.Properties">
            <summary>
            Gets the properties associated with this
            attribute.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttribute.SourcePosition">
            <summary>
            Gets the position in the original source text where this
            attribute begins.
            </summary>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.ToString">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.TryGetProperty(System.String,Yarn.Markup.MarkupValue@)">
            <summary>
            Gets a property named <paramref name="name"/> from this
            attribute, if present.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="result">On return, the property's value if found, or
            zero if not.</param>
            <returns><see langword="true"/> if a property named <paramref
            name="name"/> was found; <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.TryGetProperty(System.String,System.Single@)">
            <summary>
            Gets a float property named <paramref name="name"/> from this
            attribute, if present.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="result">On return, the property's value if found, or
            zero if not.</param>
            <returns><see langword="true"/> if a property named <paramref
            name="name"/> was found; <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.TryGetProperty(System.String,System.Int32@)">
            <summary>
            Gets an integer property named <paramref name="name"/> from this
            attribute, if present.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="result">On return, the property's value if found, or
            zero if not.</param>
            <returns><see langword="true"/> if a property named <paramref
            name="name"/> was found; <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.TryGetProperty(System.String,System.String@)">
            <summary>
            Gets a string property named <paramref name="name"/> from this
            attribute, if present.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="result">On return, the property's value if found, or
            <see langword="null"/> if not.</param>
            <returns><see langword="true"/> if a property named <paramref
            name="name"/> was found; <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="M:Yarn.Markup.MarkupAttribute.TryGetProperty(System.String,System.Boolean@)">
            <summary>
            Gets a boolean property named <paramref name="name"/> from this
            attribute, if present.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="result">On return, the property's value if found, or
            <see langword="false"/> if not.</param>
            <returns><see langword="true"/> if a property named <paramref
            name="name"/> was found; <see langword="false"/>
            otherwise.</returns>
        </member>
        <member name="T:Yarn.Markup.MarkupProperty">
            <summary>
            A property associated with a <see cref="T:Yarn.Markup.MarkupAttribute"/>.
            </summary>
            <remarks>
            You do not create instances of this struct yourself. It is created by
            objects that can parse markup, such as <see cref="T:Yarn.Markup.LineParser"/>.
            </remarks>
            <seealso cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:Yarn.Markup.MarkupProperty.#ctor(System.String,Yarn.Markup.MarkupValue)">
            <summary>
            Initializes a new instance of the <see cref="T:Yarn.Markup.MarkupProperty"/>
            struct.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="value">The value of the property.</param>
        </member>
        <member name="P:Yarn.Markup.MarkupProperty.Name">
            <summary>
            Gets the name of the property.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupProperty.Value">
            <summary>
            Gets the value of the property.
            </summary>
        </member>
        <member name="T:Yarn.Markup.MarkupValue">
            <summary>
            A value associated with a <see cref="T:Yarn.Markup.MarkupProperty"/>.
            </summary>
            <remarks>
            You do not create instances of this struct yourself. It is created
            by objects that can parse markup, such as <see cref="T:Yarn.Markup.LineParser"/>.
            </remarks>
            <seealso cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/>
        </member>
        <member name="P:Yarn.Markup.MarkupValue.IntegerValue">
            <summary>Gets the integer value of this property.</summary>
            <remarks>
            This property is only defined when the property's <see
            cref="P:Yarn.Markup.MarkupValue.Type"/> is <see cref="F:Yarn.Markup.MarkupValueType.Integer"/>.
            </remarks>
        </member>
        <member name="P:Yarn.Markup.MarkupValue.FloatValue">
            <summary>Gets the float value of this property.</summary>
            /// <remarks>
            This property is only defined when the property's <see
            cref="P:Yarn.Markup.MarkupValue.Type"/> is <see cref="F:Yarn.Markup.MarkupValueType.Float"/>.
            </remarks>
        </member>
        <member name="P:Yarn.Markup.MarkupValue.StringValue">
            <summary>Gets the string value of this property.</summary>
            <remarks>
            This property is only defined when the property's <see
            cref="P:Yarn.Markup.MarkupValue.Type"/> is <see cref="F:Yarn.Markup.MarkupValueType.String"/>.
            </remarks>
        </member>
        <member name="P:Yarn.Markup.MarkupValue.BoolValue">
            <summary>Gets the bool value of this property.</summary>
            <remarks>
            This property is only defined when the property's <see
            cref="P:Yarn.Markup.MarkupValue.Type"/> is <see cref="F:Yarn.Markup.MarkupValueType.Bool"/>.
            </remarks>
        </member>
        <member name="P:Yarn.Markup.MarkupValue.Type">
            <summary>
            Gets the value's type.
            </summary>
        </member>
        <member name="M:Yarn.Markup.MarkupValue.ToString">
            <inheritdoc/>
        </member>
        <member name="M:Yarn.Markup.MarkupValue.ToString(System.IFormatProvider)">
            <inheritdoc/>
        </member>
        <member name="T:Yarn.Markup.MarkupAttributeMarker">
            <summary>
            Represents a marker (e.g. <c>[a]</c>) in line of marked up text.
            </summary>
            <remarks>
            You do not create instances of this struct yourself. It is created
            by objects that can parse markup, such as <see cref="T:Yarn.Markup.LineParser"/>.
            </remarks>
            <seealso cref="M:Yarn.Markup.LineParser.ParseString(System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:Yarn.Markup.MarkupAttributeMarker.#ctor(System.String,System.Int32,System.Int32,System.Collections.Generic.List{Yarn.Markup.MarkupProperty},Yarn.Markup.TagType)">
            <summary>
            Initializes a new instance of the <see
            cref="T:Yarn.Markup.MarkupAttributeMarker"/> struct.
            </summary>
            <param name="name">The name of the marker.</param>
            <param name="position">The position of the marker.</param>
            <param name="sourcePosition">The position of the marker in the original text.</param>
            <param name="properties">The properties of the marker.</param>
            <param name="type">The type of the marker.</param>
        </member>
        <member name="P:Yarn.Markup.MarkupAttributeMarker.Name">
            <summary>
            Gets the name of the marker.
            </summary>
            <remarks>
            For example, the marker <c>[wave]</c> has the name <c>wave</c>.
            </remarks>
        </member>
        <member name="P:Yarn.Markup.MarkupAttributeMarker.Position">
            <summary>
            Gets the position of the marker in the plain text.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttributeMarker.Properties">
            <summary>
            Gets the list of properties associated with this marker.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttributeMarker.Type">
            <summary>
            Gets the type of marker that this is.
            </summary>
        </member>
        <member name="P:Yarn.Markup.MarkupAttributeMarker.SourcePosition">
            <summary>
            Gets or sets the position of this marker in the original source
            text.
            </summary>
        </member>
        <member name="M:Yarn.Markup.MarkupAttributeMarker.TryGetProperty(System.String,Yarn.Markup.MarkupValue@)">
            <summary>
            Gets the property associated with the specified key, if
            present.
            </summary>
            <param name="name">The name of the property to get.</param>
            <param name="result">When this method returns, contains the
            value associated with the specified key, if the key is found;
            otherwise, the default <see cref="T:Yarn.Markup.MarkupValue"/>. This
            parameter is passed uninitialized.</param>
            <returns><see langword="true"/> if the <see
            cref="T:Yarn.Markup.MarkupAttributeMarker"/> contains an element with the
            specified key; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="T:Yarn.Markup.MarkupValueType">
            <summary>
            A type of <see cref="T:Yarn.Markup.MarkupValue"/>.
            </summary>
        </member>
        <member name="F:Yarn.Markup.MarkupValueType.Integer">
            <summary>An integer.</summary>
        </member>
        <member name="F:Yarn.Markup.MarkupValueType.Float">
            <summary>A float.</summary>
        </member>
        <member name="F:Yarn.Markup.MarkupValueType.String">
            <summary>A string.</summary>
        </member>
        <member name="F:Yarn.Markup.MarkupValueType.Bool">
            <summary>A bool.</summary>
        </member>
        <member name="T:Yarn.Markup.TagType">
            <summary>
            A type of <see cref="T:Yarn.Markup.MarkupAttributeMarker"/>.
            </summary>
        </member>
        <member name="F:Yarn.Markup.TagType.Open">
            <summary>
            An open marker. For example, <c>[a]</c>.
            </summary>
        </member>
        <member name="F:Yarn.Markup.TagType.Close">
            <summary>
            A closing marker. For example, <c>[/a]</c>.
            </summary>
        </member>
        <member name="F:Yarn.Markup.TagType.SelfClosing">
            <summary>
            A self-closing marker. For example, <c>[a/]</c>.
            </summary>
        </member>
        <member name="F:Yarn.Markup.TagType.CloseAll">
            <summary>
            The close-all marker, <c>[/]</c>.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
            <summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
            <summary>Specifies that null is disallowed as an input even if the corresponding type allows it.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
            <summary>Specifies that an output may be null even if the corresponding type disallows it.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
            <summary>Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
            <summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
            <summary>Initializes the attribute with the specified return value condition.</summary>
            <param name="returnValue">
            The return value condition. If the method returns this value, the associated parameter may be null.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
            <summary>Gets the return value condition.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
            <summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
            <summary>Initializes the attribute with the specified return value condition.</summary>
            <param name="returnValue">
            The return value condition. If the method returns this value, the associated parameter will not be null.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
            <summary>Gets the return value condition.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
            <summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
            <summary>Initializes the attribute with the associated parameter name.</summary>
            <param name="parameterName">
            The associated parameter name.  The output will be non-null if the argument to the parameter specified is non-null.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
            <summary>Gets the associated parameter name.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
            <summary>Applied to a method that will never return under any circumstance.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
            <summary>Specifies that the method will not return if the associated Boolean parameter is passed the specified value.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
            <summary>Initializes the attribute with the specified parameter value.</summary>
            <param name="parameterValue">
            The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
            the associated parameter matches this value.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
            <summary>Gets the condition parameter value.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
            <summary>Specifies that the method or property will ensure that the listed field and property members have not-null values.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
            <summary>Initializes the attribute with a field or property member.</summary>
            <param name="member">
            The field or property member that is promised to be not-null.
            </param>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
            <summary>Initializes the attribute with the list of field and property members.</summary>
            <param name="members">
            The list of field and property members that are promised to be not-null.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
            <summary>Gets field or property member names.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
            <summary>Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
            <summary>Initializes the attribute with the specified return value condition and a field or property member.</summary>
            <param name="returnValue">
            The return value condition. If the method returns this value, the associated parameter will not be null.
            </param>
            <param name="member">
            The field or property member that is promised to be not-null.
            </param>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
            <summary>Initializes the attribute with the specified return value condition and list of field and property members.</summary>
            <param name="returnValue">
            The return value condition. If the method returns this value, the associated parameter will not be null.
            </param>
            <param name="members">
            The list of field and property members that are promised to be not-null.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
            <summary>Gets the return value condition.</summary>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
            <summary>Gets field or property member names.</summary>
        </member>
    </members>
</doc>
