<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sirenix.Serialization</name>
    </assembly>
    <members>
        <member name="T:Sirenix.Serialization.BaseDataReader">
            <summary>
            Provides basic functionality and overridable abstract methods for implementing a data reader.
            <para />
            If you inherit this class, it is VERY IMPORTANT that you implement each abstract method to the *exact* specifications the documentation specifies.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseDataReaderWriter" />
            <seealso cref="T:Sirenix.Serialization.IDataReader" />
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.#ctor(System.IO.Stream,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.BaseDataReader" /> class.
            </summary>
            <param name="stream">The base stream of the reader.</param>
            <param name="context">The deserialization context to use.</param>
            <exception cref="T:System.ArgumentNullException">The stream or context is null.</exception>
            <exception cref="T:System.ArgumentException">Cannot read from stream.</exception>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReader.CurrentNodeId">
            <summary>
            Gets the current node id. If this is less than zero, the current node has no id.
            </summary>
            <value>
            The current node id.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReader.CurrentNodeDepth">
            <summary>
            Gets the current node depth. In other words, the current count of the node stack.
            </summary>
            <value>
            The current node depth.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReader.CurrentNodeName">
            <summary>
            Gets the name of the current node.
            </summary>
            <value>
            The name of the current node.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReader.Stream">
            <summary>
            Gets or sets the base stream of the reader.
            </summary>
            <value>
            The base stream of the reader.
            </value>
            <exception cref="T:System.ArgumentNullException">value</exception>
            <exception cref="T:System.ArgumentException">Cannot read from stream</exception>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReader.Context">
            <summary>
            Gets the deserialization context.
            </summary>
            <value>
            The deserialization context.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.EnterNode(System.Type@)">
            <summary>
            Tries to enter a node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfNode"/>.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitNode(DeserializationContext)"/>
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> properties to the correct values for the current node.
            </summary>
            <param name="type">The type of the node. This value will be null if there was no metadata, or if the reader's serialization binder failed to resolve the type name.</param>
            <returns><c>true</c> if entering a node succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ExitNode">
            <summary>
            Exits the current node. This method will keep skipping entries using <see cref="!:IDataReader.SkipEntry(DeserializationContext)"/> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterNode(System.Type@)"/>.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> to the correct values for the node that was prior to the current node.
            </summary>
            <returns><c>true</c> if the method exited a node, <c>false</c> if it reached the end of the stream.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.EnterArray(System.Int64@)">
            <summary>
            Tries to enters an array node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray"/>.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitArray(DeserializationContext)"/>
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> properties to the correct values for the current array node.
            </summary>
            <param name="length">The length of the array that was entered.</param>
            <returns><c>true</c> if an array was entered, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ExitArray">
            <summary>
            Exits the closest array. This method will keep skipping entries using <see cref="!:IDataReader.SkipEntry(DeserializationContext)"/> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterArray(System.Int64@)"/>.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> to the correct values for the node that was prior to the exited array node.
            </summary>
            <returns><c>true</c> if the method exited an array, <c>false</c> if it reached the end of the stream.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadPrimitiveArray``1(``0[]@)">
            <summary>
            Reads a primitive array value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.PrimitiveArray"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)"/>.</typeparam>
            <param name="array">The resulting primitive array.</param>
            <returns><c>true</c> if reading a primitive array succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.PeekEntry(System.String@)">
            <summary>
            Peeks ahead and returns the type of the next entry in the stream.
            </summary>
            <param name="name">The name of the next entry, if it has one.</param>
            <returns>The type of the next entry.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadInternalReference(System.Int32@)">
            <summary>
            Reads an internal reference id. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.InternalReference"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="id">The internal reference id.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadExternalReference(System.Int32@)">
            <summary>
            Reads an external reference index. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByIndex"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="index">The external reference index.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadExternalReference(System.Guid@)">
            <summary>
            Reads an external reference guid. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByGuid"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="guid">The external reference guid.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadExternalReference(System.String@)">
            <summary>
            Reads an external reference string. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByString" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="id">The external reference string.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadChar(System.Char@)">
            <summary>
            Reads a <see cref="T:System.Char"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String"/>.
            <para />
            If the string of the entry is longer than 1 character, the first character of the string will be taken as the result.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadString(System.String@)">
            <summary>
            Reads a <see cref="T:System.String"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadGuid(System.Guid@)">
            <summary>
            Reads a <see cref="T:System.Guid"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Guid"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadSByte(System.SByte@)">
            <summary>
            Reads an <see cref="T:System.SByte"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.SByte.MinValue"/> or larger than <see cref="F:System.SByte.MaxValue"/>, the result will be default(<see cref="T:System.SByte"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadInt16(System.Int16@)">
            <summary>
            Reads a <see cref="T:System.Int16"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int16.MinValue"/> or larger than <see cref="F:System.Int16.MaxValue"/>, the result will be default(<see cref="T:System.Int16"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadInt32(System.Int32@)">
            <summary>
            Reads an <see cref="T:System.Int32"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int32.MinValue"/> or larger than <see cref="F:System.Int32.MaxValue"/>, the result will be default(<see cref="T:System.Int32"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadInt64(System.Int64@)">
            <summary>
            Reads a <see cref="T:System.Int64"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int64.MinValue"/> or larger than <see cref="F:System.Int64.MaxValue"/>, the result will be default(<see cref="T:System.Int64"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadByte(System.Byte@)">
            <summary>
            Reads a <see cref="T:System.Byte"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Byte.MinValue"/> or larger than <see cref="F:System.Byte.MaxValue"/>, the result will be default(<see cref="T:System.Byte"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadUInt16(System.UInt16@)">
            <summary>
            Reads an <see cref="T:System.UInt16"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt16.MinValue"/> or larger than <see cref="F:System.UInt16.MaxValue"/>, the result will be default(<see cref="T:System.UInt16"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadUInt32(System.UInt32@)">
            <summary>
            Reads an <see cref="T:System.UInt32"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt32.MinValue"/> or larger than <see cref="F:System.UInt32.MaxValue"/>, the result will be default(<see cref="T:System.UInt32"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadUInt64(System.UInt64@)">
            <summary>
            Reads an <see cref="T:System.UInt64"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt64.MinValue"/> or larger than <see cref="F:System.UInt64.MaxValue"/>, the result will be default(<see cref="T:System.UInt64"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadDecimal(System.Decimal@)">
            <summary>
            Reads a <see cref="T:System.Decimal"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint"/> or an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Decimal.MinValue"/> or larger than <see cref="F:System.Decimal.MaxValue"/>, the result will be default(<see cref="T:System.Decimal"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadSingle(System.Single@)">
            <summary>
            Reads a <see cref="T:System.Single"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint"/> or an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Single.MinValue"/> or larger than <see cref="F:System.Single.MaxValue"/>, the result will be default(<see cref="T:System.Single"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadDouble(System.Double@)">
            <summary>
            Reads a <see cref="T:System.Double"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint"/> or an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Double.MinValue"/> or larger than <see cref="F:System.Double.MaxValue"/>, the result will be default(<see cref="T:System.Double"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadBoolean(System.Boolean@)">
            <summary>
            Reads a <see cref="T:System.Boolean"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Boolean"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadNull">
            <summary>
            Reads a <c>null</c> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Null"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.SkipEntry">
            <summary>
            Skips the next entry value, unless it is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>. If the next entry value is an <see cref="F:Sirenix.Serialization.EntryType.StartOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray"/>, all of its contents will be processed, deserialized and registered in the deserialization context, so that internal reference values are not lost to entries further down the stream.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.Dispose">
            <summary>
            Disposes all resources and streams kept by the data reader.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.PrepareNewSerializationSession">
            <summary>
            Tells the reader that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same reader is used to deserialize several different, unrelated values.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.GetDataDump">
            <summary>
            Gets a dump of the data being read by the writer. The format of this dump varies, but should be useful for debugging purposes.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.PeekEntry">
            <summary>
            Peeks the current entry.
            </summary>
            <returns>The peeked entry.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReader.ReadToNextEntry">
            <summary>
            Consumes the current entry, and reads to the next one.
            </summary>
            <returns>The next entry.</returns>
        </member>
        <member name="T:Sirenix.Serialization.BaseDataReaderWriter">
            <summary>
            Implements functionality that is shared by both data readers and data writers.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReaderWriter.Binder">
            <summary>
            Gets or sets the context's or writer's serialization binder.
            </summary>
            <value>
            The reader's or writer's serialization binder.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReaderWriter.IsInArrayNode">
            <summary>
            Gets a value indicating whether the reader or writer is in an array node.
            </summary>
            <value>
            <c>true</c> if the reader or writer is in an array node; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReaderWriter.NodeDepth">
            <summary>
            Gets the current node depth. In other words, the current count of the node stack.
            </summary>
            <value>
            The current node depth.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReaderWriter.NodesArray">
            <summary>
            Gets the current nodes array. The amount of nodes contained in it is stored in the <see cref="P:Sirenix.Serialization.BaseDataReaderWriter.NodeDepth"/> property. The remainder of the array's length is buffer space.
            </summary>
            <value>
            The current node array.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataReaderWriter.CurrentNode">
            <summary>
            Gets the current node, or <see cref="F:Sirenix.Serialization.NodeInfo.Empty"/> if there is no current node.
            </summary>
            <value>
            The current node.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReaderWriter.PushNode(Sirenix.Serialization.NodeInfo)">
            <summary>
            Pushes a node onto the node stack.
            </summary>
            <param name="node">The node to push.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReaderWriter.PushNode(System.String,System.Int32,System.Type)">
            <summary>
            Pushes a node with the given name, id and type onto the node stack.
            </summary>
            <param name="name">The name of the node.</param>
            <param name="id">The id of the node.</param>
            <param name="type">The type of the node.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReaderWriter.PushArray">
            <summary>
            Pushes an array node onto the node stack. This uses values from the current node to provide extra info about the array node.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReaderWriter.PopNode(System.String)">
            <summary>
            Pops the current node off of the node stack.
            </summary>
            <param name="name">The name of the node to pop.</param>
            <exception cref="T:System.InvalidOperationException">
            There are no nodes to pop.
            or
            Tried to pop node with given name, but the current node's name was different.
            </exception>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataReaderWriter.PopArray">
            <summary>
            Pops the current node if the current node is an array node.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.BaseDataWriter">
            <summary>
            Provides basic functionality and overridable abstract methods for implementing a data writer.
            <para />
            If you inherit this class, it is VERY IMPORTANT that you implement each abstract method to the *exact* specifications the documentation specifies.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseDataReaderWriter" />
            <seealso cref="T:Sirenix.Serialization.IDataWriter" />
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.#ctor(System.IO.Stream,Sirenix.Serialization.SerializationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.BaseDataWriter" /> class.
            </summary>
            <param name="stream">The base stream of the writer.</param>
            <param name="context">The serialization context to use.</param>
            <exception cref="T:System.ArgumentNullException">The stream or context is null.</exception>
            <exception cref="T:System.ArgumentException">Cannot write to the stream.</exception>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataWriter.Stream">
            <summary>
            Gets or sets the base stream of the writer.
            </summary>
            <value>
            The base stream of the writer.
            </value>
            <exception cref="T:System.ArgumentNullException">value</exception>
            <exception cref="T:System.ArgumentException">Cannot write to stream</exception>
        </member>
        <member name="P:Sirenix.Serialization.BaseDataWriter.Context">
            <summary>
            Gets the serialization context.
            </summary>
            <value>
            The serialization context.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.FlushToStream">
            <summary>
            Flushes everything that has been written so far to the writer's base stream.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.BeginReferenceNode(System.String,System.Type,System.Int32)">
            <summary>
            Writes the beginning of a reference node.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)"/>, with the same name.
            </summary>
            <param name="name">The name of the reference node.</param>
            <param name="type">The type of the reference node. If null, no type metadata will be written.</param>
            <param name="id">The id of the reference node. This id is acquired by calling <see cref="M:Sirenix.Serialization.SerializationContext.TryRegisterInternalReference(System.Object,System.Int32@)"/>.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.BeginStructNode(System.String,System.Type)">
            <summary>
            Begins a struct/value type node. This is essentially the same as a reference node, except it has no internal reference id.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)"/>, with the same name.
            </summary>
            <param name="name">The name of the struct node.</param>
            <param name="type">The type of the struct node. If null, no type metadata will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.EndNode(System.String)">
            <summary>
            Ends the current node with the given name. If the current node has another name, an <see cref="T:System.InvalidOperationException"/> is thrown.
            </summary>
            <param name="name">The name of the node to end. This has to be the name of the current node.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.BeginArrayNode(System.Int64)">
            <summary>
            Begins an array node of the given length.
            </summary>
            <param name="length">The length of the array to come.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.EndArrayNode">
            <summary>
            Ends the current array node, if the current node is an array node.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WritePrimitiveArray``1(``0[])">
            <summary>
            Writes a primitive array to the stream.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)"/>.</typeparam>
            <param name="array">The primitive array to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteNull(System.String)">
            <summary>
            Writes a null value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteInternalReference(System.String,System.Int32)">
            <summary>
            Writes an internal reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteExternalReference(System.String,System.Int32)">
            <summary>
            Writes an external index reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="index">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteExternalReference(System.String,System.Guid)">
            <summary>
            Writes an external guid reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="guid">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteExternalReference(System.String,System.String)">
            <summary>
            Writes an external string reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteChar(System.String,System.Char)">
            <summary>
            Writes a <see cref="T:System.Char"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteString(System.String,System.String)">
            <summary>
            Writes a <see cref="T:System.String"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteGuid(System.String,System.Guid)">
            <summary>
            Writes a <see cref="T:System.Guid"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteSByte(System.String,System.SByte)">
            <summary>
            Writes an <see cref="T:System.SByte"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteInt16(System.String,System.Int16)">
            <summary>
            Writes a <see cref="T:System.Int16"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteInt32(System.String,System.Int32)">
            <summary>
            Writes an <see cref="T:System.Int32"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteInt64(System.String,System.Int64)">
            <summary>
            Writes a <see cref="T:System.Int64"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteByte(System.String,System.Byte)">
            <summary>
            Writes a <see cref="T:System.Byte"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteUInt16(System.String,System.UInt16)">
            <summary>
            Writes an <see cref="T:System.UInt16"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteUInt32(System.String,System.UInt32)">
            <summary>
            Writes an <see cref="T:System.UInt32"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteUInt64(System.String,System.UInt64)">
            <summary>
            Writes an <see cref="T:System.UInt64"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteDecimal(System.String,System.Decimal)">
            <summary>
            Writes a <see cref="T:System.Decimal"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteSingle(System.String,System.Single)">
            <summary>
            Writes a <see cref="T:System.Single"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteDouble(System.String,System.Double)">
            <summary>
            Writes a <see cref="T:System.Double"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.WriteBoolean(System.String,System.Boolean)">
            <summary>
            Writes a <see cref="T:System.Boolean"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.Dispose">
            <summary>
            Disposes all resources and streams kept by the data writer.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.PrepareNewSerializationSession">
            <summary>
            Tells the writer that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same writer is used to serialize several different, unrelated values.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDataWriter.GetDataDump">
            <summary>
            Gets a dump of the data currently written by the writer. The format of this dump varies, but should be useful for debugging purposes.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.BinaryDataReader">
            <summary>
            Reads data from a stream that has been written by a <see cref="T:Sirenix.Serialization.BinaryDataWriter"/>.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseDataReader" />
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.#ctor(System.IO.Stream,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.BinaryDataReader" /> class.
            </summary>
            <param name="stream">The base stream of the reader.</param>
            <param name="context">The deserialization context to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.Dispose">
            <summary>
            Disposes all resources kept by the data reader, except the stream, which can be reused later.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.PeekEntry(System.String@)">
            <summary>
            Peeks ahead and returns the type of the next entry in the stream.
            </summary>
            <param name="name">The name of the next entry, if it has one.</param>
            <returns>
            The type of the next entry.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.EnterArray(System.Int64@)">
            <summary>
            Tries to enters an array node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray" />.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.ExitArray" /><para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> properties to the correct values for the current array node.
            </summary>
            <param name="length">The length of the array that was entered.</param>
            <returns>
              <c>true</c> if an array was entered, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.EnterNode(System.Type@)">
            <summary>
            Tries to enter a node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfNode" />.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.ExitNode" /><para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> properties to the correct values for the current node.
            </summary>
            <param name="type">The type of the node. This value will be null if there was no metadata, or if the reader's serialization binder failed to resolve the type name.</param>
            <returns>
              <c>true</c> if entering a node succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ExitArray">
            <summary>
            Exits the closest array. This method will keep skipping entries using <see cref="M:Sirenix.Serialization.IDataReader.SkipEntry" /> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" /> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterArray(System.Int64@)" />.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> to the correct values for the node that was prior to the exited array node.
            </summary>
            <returns>
              <c>true</c> if the method exited an array, <c>false</c> if it reached the end of the stream.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ExitNode">
            <summary>
            Exits the current node. This method will keep skipping entries using <see cref="M:Sirenix.Serialization.IDataReader.SkipEntry" /> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterNode(System.Type@)" />.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> to the correct values for the node that was prior to the current node.
            </summary>
            <returns>
              <c>true</c> if the method exited a node, <c>false</c> if it reached the end of the stream.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadPrimitiveArray``1(``0[]@)">
            <summary>
            Reads a primitive array value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.PrimitiveArray" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)" />.</typeparam>
            <param name="array">The resulting primitive array.</param>
            <returns>
              <c>true</c> if reading a primitive array succeeded, otherwise <c>false</c>
            </returns>
            <exception cref="T:System.ArgumentException">Type  + typeof(T).Name +  is not a valid primitive array type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadBoolean(System.Boolean@)">
            <summary>
            Reads a <see cref="T:System.Boolean" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Boolean" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadSByte(System.SByte@)">
            <summary>
            Reads an <see cref="T:System.SByte" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.SByte.MinValue" /> or larger than <see cref="F:System.SByte.MaxValue" />, the result will be default(<see cref="T:System.SByte" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadByte(System.Byte@)">
            <summary>
            Reads a <see cref="T:System.Byte" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Byte.MinValue" /> or larger than <see cref="F:System.Byte.MaxValue" />, the result will be default(<see cref="T:System.Byte" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadInt16(System.Int16@)">
            <summary>
            Reads a <see cref="T:System.Int16" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int16.MinValue" /> or larger than <see cref="F:System.Int16.MaxValue" />, the result will be default(<see cref="T:System.Int16" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadUInt16(System.UInt16@)">
            <summary>
            Reads an <see cref="T:System.UInt16" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt16.MinValue" /> or larger than <see cref="F:System.UInt16.MaxValue" />, the result will be default(<see cref="T:System.UInt16" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadInt32(System.Int32@)">
            <summary>
            Reads an <see cref="T:System.Int32" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int32.MinValue" /> or larger than <see cref="F:System.Int32.MaxValue" />, the result will be default(<see cref="T:System.Int32" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadUInt32(System.UInt32@)">
            <summary>
            Reads an <see cref="T:System.UInt32" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt32.MinValue" /> or larger than <see cref="F:System.UInt32.MaxValue" />, the result will be default(<see cref="T:System.UInt32" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadInt64(System.Int64@)">
            <summary>
            Reads a <see cref="T:System.Int64" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int64.MinValue" /> or larger than <see cref="F:System.Int64.MaxValue" />, the result will be default(<see cref="T:System.Int64" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadUInt64(System.UInt64@)">
            <summary>
            Reads an <see cref="T:System.UInt64" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt64.MinValue" /> or larger than <see cref="F:System.UInt64.MaxValue" />, the result will be default(<see cref="T:System.UInt64" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadChar(System.Char@)">
            <summary>
            Reads a <see cref="T:System.Char" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String" />.
            <para />
            If the string of the entry is longer than 1 character, the first character of the string will be taken as the result.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadSingle(System.Single@)">
            <summary>
            Reads a <see cref="T:System.Single" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint" /> or an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Single.MinValue" /> or larger than <see cref="F:System.Single.MaxValue" />, the result will be default(<see cref="T:System.Single" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadDouble(System.Double@)">
            <summary>
            Reads a <see cref="T:System.Double" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint" /> or an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Double.MinValue" /> or larger than <see cref="F:System.Double.MaxValue" />, the result will be default(<see cref="T:System.Double" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadDecimal(System.Decimal@)">
            <summary>
            Reads a <see cref="T:System.Decimal" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint" /> or an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Decimal.MinValue" /> or larger than <see cref="F:System.Decimal.MaxValue" />, the result will be default(<see cref="T:System.Decimal" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadExternalReference(System.Guid@)">
            <summary>
            Reads an external reference guid. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByGuid" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="guid">The external reference guid.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadGuid(System.Guid@)">
            <summary>
            Reads a <see cref="T:System.Guid" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Guid" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadExternalReference(System.Int32@)">
            <summary>
            Reads an external reference index. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByIndex" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="index">The external reference index.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadExternalReference(System.String@)">
            <summary>
            Reads an external reference string. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByString" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="id">The external reference string.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadNull">
            <summary>
            Reads a <c>null</c> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Null" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadInternalReference(System.Int32@)">
            <summary>
            Reads an internal reference id. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.InternalReference" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="id">The internal reference id.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadString(System.String@)">
            <summary>
            Reads a <see cref="T:System.String" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.PrepareNewSerializationSession">
            <summary>
            Tells the reader that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same reader is used to deserialize several different, unrelated values.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.PeekEntry">
            <summary>
            Peeks the current entry.
            </summary>
            <returns>The peeked entry.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataReader.ReadToNextEntry">
            <summary>
            Consumes the current entry, and reads to the next one.
            </summary>
            <returns>The next entry.</returns>
        </member>
        <member name="T:Sirenix.Serialization.BinaryDataWriter">
            <summary>
            Writes data to a stream that can be read by a <see cref="T:Sirenix.Serialization.BinaryDataReader"/>.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseDataWriter" />
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.#ctor(System.IO.Stream,Sirenix.Serialization.SerializationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.BinaryDataWriter" /> class.
            </summary>
            <param name="stream">The base stream of the writer.</param>
            <param name="context">The serialization context to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.BeginArrayNode(System.Int64)">
            <summary>
            Begins an array node of the given length.
            </summary>
            <param name="length">The length of the array to come.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.BeginReferenceNode(System.String,System.Type,System.Int32)">
            <summary>
            Writes the beginning of a reference node.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)" />, with the same name.
            </summary>
            <param name="name">The name of the reference node.</param>
            <param name="type">The type of the reference node. If null, no type metadata will be written.</param>
            <param name="id">The id of the reference node. This id is acquired by calling <see cref="M:Sirenix.Serialization.SerializationContext.TryRegisterInternalReference(System.Object,System.Int32@)" />.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.BeginStructNode(System.String,System.Type)">
            <summary>
            Begins a struct/value type node. This is essentially the same as a reference node, except it has no internal reference id.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)" />, with the same name.
            </summary>
            <param name="name">The name of the struct node.</param>
            <param name="type">The type of the struct node. If null, no type metadata will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.Dispose">
            <summary>
            Disposes all resources kept by the data writer, except the stream, which can be reused later.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.EndArrayNode">
            <summary>
            Ends the current array node, if the current node is an array node.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.EndNode(System.String)">
            <summary>
            Ends the current node with the given name. If the current node has another name, an <see cref="T:System.InvalidOperationException" /> is thrown.
            </summary>
            <param name="name">The name of the node to end. This has to be the name of the current node.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WritePrimitiveArray``1(``0[])">
            <summary>
            Writes a primitive array to the stream.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)" />.</typeparam>
            <param name="array">The primitive array to write.</param>
            <exception cref="T:System.ArgumentException">Type  + typeof(T).Name +  is not a valid primitive array type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteBoolean(System.String,System.Boolean)">
            <summary>
            Writes a <see cref="T:System.Boolean" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteByte(System.String,System.Byte)">
            <summary>
            Writes a <see cref="T:System.Byte" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteChar(System.String,System.Char)">
            <summary>
            Writes a <see cref="T:System.Char" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteDecimal(System.String,System.Decimal)">
            <summary>
            Writes a <see cref="T:System.Decimal" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteDouble(System.String,System.Double)">
            <summary>
            Writes a <see cref="T:System.Double" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteGuid(System.String,System.Guid)">
            <summary>
            Writes a <see cref="T:System.Guid" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteExternalReference(System.String,System.Guid)">
            <summary>
            Writes an external guid reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="guid">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteExternalReference(System.String,System.Int32)">
            <summary>
            Writes an external index reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="index">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteExternalReference(System.String,System.String)">
            <summary>
            Writes an external string reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteInt32(System.String,System.Int32)">
            <summary>
            Writes an <see cref="T:System.Int32" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteInt64(System.String,System.Int64)">
            <summary>
            Writes a <see cref="T:System.Int64" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteNull(System.String)">
            <summary>
            Writes a null value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteInternalReference(System.String,System.Int32)">
            <summary>
            Writes an internal reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteSByte(System.String,System.SByte)">
            <summary>
            Writes an <see cref="T:System.SByte" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteInt16(System.String,System.Int16)">
            <summary>
            Writes a <see cref="T:System.Int16" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteSingle(System.String,System.Single)">
            <summary>
            Writes a <see cref="T:System.Single" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteString(System.String,System.String)">
            <summary>
            Writes a <see cref="T:System.String" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteUInt32(System.String,System.UInt32)">
            <summary>
            Writes an <see cref="T:System.UInt32" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteUInt64(System.String,System.UInt64)">
            <summary>
            Writes an <see cref="T:System.UInt64" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.WriteUInt16(System.String,System.UInt16)">
            <summary>
            Writes an <see cref="T:System.UInt16" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.BinaryDataWriter.PrepareNewSerializationSession">
            <summary>
            Tells the writer that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same writer is used to serialize several different, unrelated values.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.BinaryEntryType">
            <summary>
            Entry types in the binary format written by <see cref="T:Sirenix.Serialization.BinaryDataWriter"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.Invalid">
            <summary>
            An invalid entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedStartOfReferenceNode">
            <summary>
            Entry denoting a named start of a reference node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedStartOfReferenceNode">
            <summary>
            Entry denoting an unnamed start of a reference node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedStartOfStructNode">
            <summary>
            Entry denoting a named start of a struct node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedStartOfStructNode">
            <summary>
            Entry denoting an unnamed start of a struct node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.EndOfNode">
            <summary>
            Entry denoting an end of node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.StartOfArray">
            <summary>
            Entry denoting the start of an array.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.EndOfArray">
            <summary>
            Entry denoting the end of an array.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.PrimitiveArray">
            <summary>
            Entry denoting a primitive array.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedInternalReference">
            <summary>
            Entry denoting a named internal reference.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedInternalReference">
            <summary>
            Entry denoting an unnamed internal reference.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedExternalReferenceByIndex">
            <summary>
            Entry denoting a named external reference by index.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedExternalReferenceByIndex">
            <summary>
            Entry denoting an unnamed external reference by index.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedExternalReferenceByGuid">
            <summary>
            Entry denoting a named external reference by guid.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedExternalReferenceByGuid">
            <summary>
            Entry denoting an unnamed external reference by guid.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedSByte">
            <summary>
            Entry denoting a named sbyte.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedSByte">
            <summary>
            Entry denoting an unnamed sbyte.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedByte">
            <summary>
            Entry denoting a named byte.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedByte">
            <summary>
            Entry denoting an unnamed byte.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedShort">
            <summary>
            Entry denoting a named short.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedShort">
            <summary>
            Entry denoting an unnamed short.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedUShort">
            <summary>
            Entry denoting a named ushort.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedUShort">
            <summary>
            Entry denoting an unnamed ushort.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedInt">
            <summary>
            Entry denoting a named int.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedInt">
            <summary>
            Entry denoting an unnamed int.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedUInt">
            <summary>
            Entry denoting a named uint.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedUInt">
            <summary>
            Entry denoting an unnamed uint.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedLong">
            <summary>
            Entry denoting a named long.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedLong">
            <summary>
            Entry denoting an unnamed long.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedULong">
            <summary>
            Entry denoting a named ulong.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedULong">
            <summary>
            Entry denoting an unnamed ulong.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedFloat">
            <summary>
            Entry denoting a named float.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedFloat">
            <summary>
            Entry denoting an unnamed float.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedDouble">
            <summary>
            Entry denoting a named double.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedDouble">
            <summary>
            Entry denoting an unnamed double.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedDecimal">
            <summary>
            Entry denoting a named decimal.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedDecimal">
            <summary>
            Entry denoting an unnamed decimal.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedChar">
            <summary>
            Entry denoting a named char.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedChar">
            <summary>
            Entry denoting an unnamed char.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedString">
            <summary>
            Entry denoting a named string.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedString">
            <summary>
            Entry denoting an unnamed string.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedGuid">
            <summary>
            Entry denoting a named guid.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedGuid">
            <summary>
            Entry denoting an unnamed guid.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedBoolean">
            <summary>
            Entry denoting a named boolean.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedBoolean">
            <summary>
            Entry denoting an unnamed boolean.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedNull">
            <summary>
            Entry denoting a named null.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedNull">
            <summary>
            Entry denoting an unnamed null.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.TypeName">
            <summary>
            Entry denoting a type name.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.TypeID">
            <summary>
            Entry denoting a type id.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.EndOfStream">
            <summary>
            Entry denoting that the end of the stream has been reached.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.NamedExternalReferenceByString">
            <summary>
            Entry denoting a named external reference by string.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BinaryEntryType.UnnamedExternalReferenceByString">
            <summary>
            Entry denoting an unnamed external reference by string.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.IDataReader">
            <summary>
            Provides a set of methods for reading data stored in a format written by a corresponding <see cref="T:Sirenix.Serialization.IDataWriter"/> class.
            <para />
            If you implement this interface, it is VERY IMPORTANT that you implement each method to the *exact* specifications the documentation specifies.
            <para />
            It is strongly recommended to inherit from the <see cref="T:Sirenix.Serialization.BaseDataReader"/> class if you wish to implement a new data reader.
            </summary>
            <seealso cref="T:System.IDisposable" />
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.Binder">
            <summary>
            Gets or sets the reader's serialization binder.
            </summary>
            <value>
            The reader's serialization binder.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.Stream">
            <summary>
            Gets or sets the base stream of the reader.
            </summary>
            <value>
            The base stream of the reader.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.IsInArrayNode">
            <summary>
            Gets a value indicating whether the reader is in an array node.
            </summary>
            <value>
            <c>true</c> if the reader is in an array node; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.CurrentNodeName">
            <summary>
            Gets the name of the current node.
            </summary>
            <value>
            The name of the current node.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.CurrentNodeId">
            <summary>
            Gets the current node id. If this is less than zero, the current node has no id.
            </summary>
            <value>
            The current node id.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth">
            <summary>
            Gets the current node depth. In other words, the current count of the node stack.
            </summary>
            <value>
            The current node depth.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataReader.Context">
            <summary>
            Gets the deserialization context.
            </summary>
            <value>
            The deserialization context.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.GetDataDump">
            <summary>
            Gets a dump of the data being read by the writer. The format of this dump varies, but should be useful for debugging purposes.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.EnterNode(System.Type@)">
            <summary>
            Tries to enter a node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfNode"/>.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitNode(DeserializationContext)"/>
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> properties to the correct values for the current node.
            </summary>
            <param name="type">The type of the node. This value will be null if there was no metadata, or if the reader's serialization binder failed to resolve the type name.</param>
            <returns><c>true</c> if entering a node succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ExitNode">
            <summary>
            Exits the current node. This method will keep skipping entries using <see cref="!:IDataReader.SkipEntry(DeserializationContext)"/> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterNode(System.Type@)"/>.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> to the correct values for the node that was prior to the current node.
            </summary>
            <returns><c>true</c> if the method exited a node, <c>false</c> if it reached the end of the stream.</returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.EnterArray(System.Int64@)">
            <summary>
            Tries to enters an array node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray"/>.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitArray(DeserializationContext)"/>
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> properties to the correct values for the current array node.
            </summary>
            <param name="length">The length of the array that was entered.</param>
            <returns><c>true</c> if an array was entered, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ExitArray">
            <summary>
            Exits the closest array. This method will keep skipping entries using <see cref="!:IDataReader.SkipEntry(DeserializationContext)"/> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterArray(System.Int64@)"/>.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName"/>, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId"/> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth"/> to the correct values for the node that was prior to the exited array node.
            </summary>
            <returns><c>true</c> if the method exited an array, <c>false</c> if it reached the end of the stream.</returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadPrimitiveArray``1(``0[]@)">
            <summary>
            Reads a primitive array value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.PrimitiveArray"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)"/>.</typeparam>
            <param name="array">The resulting primitive array.</param>
            <returns><c>true</c> if reading a primitive array succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.PeekEntry(System.String@)">
            <summary>
            Peeks ahead and returns the type of the next entry in the stream.
            </summary>
            <param name="name">The name of the next entry, if it has one.</param>
            <returns>The type of the next entry.</returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadInternalReference(System.Int32@)">
            <summary>
            Reads an internal reference id. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.InternalReference"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="id">The internal reference id.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadExternalReference(System.Int32@)">
            <summary>
            Reads an external reference index. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByIndex"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="index">The external reference index.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadExternalReference(System.Guid@)">
            <summary>
            Reads an external reference guid. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByGuid"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="guid">The external reference guid.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadExternalReference(System.String@)">
            <summary>
            Reads an external reference string. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByString"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="id">The external reference string.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadChar(System.Char@)">
            <summary>
            Reads a <see cref="T:System.Char"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String"/>.
            <para />
            If the string of the entry is longer than 1 character, the first character of the string will be taken as the result.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadString(System.String@)">
            <summary>
            Reads a <see cref="T:System.String"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadGuid(System.Guid@)">
            <summary>
            Reads a <see cref="T:System.Guid"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Guid"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadSByte(System.SByte@)">
            <summary>
            Reads an <see cref="T:System.SByte"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.SByte.MinValue"/> or larger than <see cref="F:System.SByte.MaxValue"/>, the result will be default(<see cref="T:System.SByte"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadInt16(System.Int16@)">
            <summary>
            Reads a <see cref="T:System.Int16"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int16.MinValue"/> or larger than <see cref="F:System.Int16.MaxValue"/>, the result will be default(<see cref="T:System.Int16"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadInt32(System.Int32@)">
            <summary>
            Reads an <see cref="T:System.Int32"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int32.MinValue"/> or larger than <see cref="F:System.Int32.MaxValue"/>, the result will be default(<see cref="T:System.Int32"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadInt64(System.Int64@)">
            <summary>
            Reads a <see cref="T:System.Int64"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int64.MinValue"/> or larger than <see cref="F:System.Int64.MaxValue"/>, the result will be default(<see cref="T:System.Int64"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadByte(System.Byte@)">
            <summary>
            Reads a <see cref="T:System.Byte"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Byte.MinValue"/> or larger than <see cref="F:System.Byte.MaxValue"/>, the result will be default(<see cref="T:System.Byte"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadUInt16(System.UInt16@)">
            <summary>
            Reads an <see cref="T:System.UInt16"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt16.MinValue"/> or larger than <see cref="F:System.UInt16.MaxValue"/>, the result will be default(<see cref="T:System.UInt16"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadUInt32(System.UInt32@)">
            <summary>
            Reads an <see cref="T:System.UInt32"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt32.MinValue"/> or larger than <see cref="F:System.UInt32.MaxValue"/>, the result will be default(<see cref="T:System.UInt32"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadUInt64(System.UInt64@)">
            <summary>
            Reads an <see cref="T:System.UInt64"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt64.MinValue"/> or larger than <see cref="F:System.UInt64.MaxValue"/>, the result will be default(<see cref="T:System.UInt64"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadDecimal(System.Decimal@)">
            <summary>
            Reads a <see cref="T:System.Decimal"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint"/> or an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Decimal.MinValue"/> or larger than <see cref="F:System.Decimal.MaxValue"/>, the result will be default(<see cref="T:System.Decimal"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadSingle(System.Single@)">
            <summary>
            Reads a <see cref="T:System.Single"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint"/> or an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Single.MinValue"/> or larger than <see cref="F:System.Single.MaxValue"/>, the result will be default(<see cref="T:System.Single"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadDouble(System.Double@)">
            <summary>
            Reads a <see cref="T:System.Double"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint"/> or an <see cref="F:Sirenix.Serialization.EntryType.Integer"/>.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Double.MinValue"/> or larger than <see cref="F:System.Double.MaxValue"/>, the result will be default(<see cref="T:System.Double"/>).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadBoolean(System.Boolean@)">
            <summary>
            Reads a <see cref="T:System.Boolean"/> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Boolean"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.ReadNull">
            <summary>
            Reads a <c>null</c> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Null"/>.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>.
            </summary>
            <returns><c>true</c> if reading the value succeeded, otherwise <c>false</c></returns>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.SkipEntry">
            <summary>
            Skips the next entry value, unless it is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray"/>. If the next entry value is an <see cref="F:Sirenix.Serialization.EntryType.StartOfNode"/> or an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray"/>, all of its contents will be processed, deserialized and registered in the deserialization context, so that internal reference values are not lost to entries further down the stream.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDataReader.PrepareNewSerializationSession">
            <summary>
            Tells the reader that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same reader is used to deserialize several different, unrelated values.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.IDataWriter">
            <summary>
            Provides a set of methods for reading data stored in a format that can be read by a corresponding <see cref="T:Sirenix.Serialization.IDataReader"/> class.
            <para />
            If you implement this interface, it is VERY IMPORTANT that you implement each method to the *exact* specifications the documentation specifies.
            <para />
            It is strongly recommended to inherit from the <see cref="T:Sirenix.Serialization.BaseDataWriter"/> class if you wish to implement a new data writer.
            </summary>
            <seealso cref="T:System.IDisposable" />
        </member>
        <member name="P:Sirenix.Serialization.IDataWriter.Binder">
            <summary>
            Gets or sets the reader's serialization binder.
            </summary>
            <value>
            The reader's serialization binder.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataWriter.Stream">
            <summary>
            Gets or sets the base stream of the writer.
            </summary>
            <value>
            The base stream of the writer.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataWriter.IsInArrayNode">
            <summary>
            Gets a value indicating whether the writer is in an array node.
            </summary>
            <value>
            <c>true</c> if the writer is in an array node; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.IDataWriter.Context">
            <summary>
            Gets the serialization context.
            </summary>
            <value>
            The serialization context.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.GetDataDump">
            <summary>
            Gets a dump of the data currently written by the writer. The format of this dump varies, but should be useful for debugging purposes.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.FlushToStream">
            <summary>
            Flushes everything that has been written so far to the writer's base stream.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.BeginReferenceNode(System.String,System.Type,System.Int32)">
            <summary>
            Writes the beginning of a reference node.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)"/>, with the same name.
            </summary>
            <param name="name">The name of the reference node.</param>
            <param name="type">The type of the reference node. If null, no type metadata will be written.</param>
            <param name="id">The id of the reference node. This id is acquired by calling <see cref="M:Sirenix.Serialization.SerializationContext.TryRegisterInternalReference(System.Object,System.Int32@)"/>.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.BeginStructNode(System.String,System.Type)">
            <summary>
            Begins a struct/value type node. This is essentially the same as a reference node, except it has no internal reference id.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)"/>, with the same name.
            </summary>
            <param name="name">The name of the struct node.</param>
            <param name="type">The type of the struct node. If null, no type metadata will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)">
            <summary>
            Ends the current node with the given name. If the current node has another name, an <see cref="T:System.InvalidOperationException"/> is thrown.
            </summary>
            <param name="name">The name of the node to end. This has to be the name of the current node.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.BeginArrayNode(System.Int64)">
            <summary>
            Begins an array node of the given length.
            </summary>
            <param name="length">The length of the array to come.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.EndArrayNode">
            <summary>
            Ends the current array node, if the current node is an array node.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WritePrimitiveArray``1(``0[])">
            <summary>
            Writes a primitive array to the stream.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)"/>.</typeparam>
            <param name="array">The primitive array to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteNull(System.String)">
            <summary>
            Writes a null value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteInternalReference(System.String,System.Int32)">
            <summary>
            Writes an internal reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteExternalReference(System.String,System.Int32)">
            <summary>
            Writes an external index reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="index">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteExternalReference(System.String,System.Guid)">
            <summary>
            Writes an external guid reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="guid">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteExternalReference(System.String,System.String)">
            <summary>
            Writes an external string reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteChar(System.String,System.Char)">
            <summary>
            Writes a <see cref="T:System.Char"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteString(System.String,System.String)">
            <summary>
            Writes a <see cref="T:System.String"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteGuid(System.String,System.Guid)">
            <summary>
            Writes a <see cref="T:System.Guid"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteSByte(System.String,System.SByte)">
            <summary>
            Writes an <see cref="T:System.SByte"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteInt16(System.String,System.Int16)">
            <summary>
            Writes a <see cref="T:System.Int16"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteInt32(System.String,System.Int32)">
            <summary>
            Writes an <see cref="T:System.Int32"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteInt64(System.String,System.Int64)">
            <summary>
            Writes a <see cref="T:System.Int64"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteByte(System.String,System.Byte)">
            <summary>
            Writes a <see cref="T:System.Byte"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteUInt16(System.String,System.UInt16)">
            <summary>
            Writes an <see cref="T:System.UInt16"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteUInt32(System.String,System.UInt32)">
            <summary>
            Writes an <see cref="T:System.UInt32"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteUInt64(System.String,System.UInt64)">
            <summary>
            Writes an <see cref="T:System.UInt64"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteDecimal(System.String,System.Decimal)">
            <summary>
            Writes a <see cref="T:System.Decimal"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteSingle(System.String,System.Single)">
            <summary>
            Writes a <see cref="T:System.Single"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteDouble(System.String,System.Double)">
            <summary>
            Writes a <see cref="T:System.Double"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.WriteBoolean(System.String,System.Boolean)">
            <summary>
            Writes a <see cref="T:System.Boolean"/> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDataWriter.PrepareNewSerializationSession">
            <summary>
            Tells the writer that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same writer is used to serialize several different, unrelated values.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.JsonConfig">
            <summary>
            Contains various string constants used by the <see cref="T:Sirenix.Serialization.JsonDataWriter"/>, <see cref="T:Sirenix.Serialization.JsonDataReader"/> and <see cref="T:Sirenix.Serialization.JsonTextReader"/> classes.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.ID_SIG">
            <summary>
            The named of a node id entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.TYPE_SIG">
            <summary>
            The name of a type entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.REGULAR_ARRAY_LENGTH_SIG">
            <summary>
            The name of a regular array length entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.PRIMITIVE_ARRAY_LENGTH_SIG">
            <summary>
            The name of a primitive array length entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.REGULAR_ARRAY_CONTENT_SIG">
            <summary>
            The name of a regular array content entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.PRIMITIVE_ARRAY_CONTENT_SIG">
            <summary>
            The name of a primitive array content entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.INTERNAL_REF_SIG">
            <summary>
            The beginning of the content of an internal reference entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.EXTERNAL_INDEX_REF_SIG">
            <summary>
            The beginning of the content of an external reference by index entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.EXTERNAL_GUID_REF_SIG">
            <summary>
            The beginning of the content of an external reference by guid entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.EXTERNAL_STRING_REF_SIG_OLD">
            <summary>
            The beginning of the content of an external reference by string entry. This is an old entry using an invalid data format where the ref string is dumped inline without escaping.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.JsonConfig.EXTERNAL_STRING_REF_SIG_FIXED">
            <summary>
            The beginning of the content of an external reference by string entry. This is a new entry using the valid format where the ref string is written as an escaped string.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.JsonDataReader">
            <summary>
            Reads json data from a stream that has been written by a <see cref="T:Sirenix.Serialization.JsonDataWriter"/>.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseDataReader" />
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.#ctor(System.IO.Stream,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.JsonDataReader" /> class.
            </summary>
            <param name="stream">The base stream of the reader.</param>
            <param name="context">The deserialization context to use.</param>
        </member>
        <member name="P:Sirenix.Serialization.JsonDataReader.Stream">
            <summary>
            Gets or sets the base stream of the reader.
            </summary>
            <value>
            The base stream of the reader.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.Dispose">
            <summary>
            Disposes all resources kept by the data reader, except the stream, which can be reused later.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.PeekEntry(System.String@)">
            <summary>
            Peeks ahead and returns the type of the next entry in the stream.
            </summary>
            <param name="name">The name of the next entry, if it has one.</param>
            <returns>
            The type of the next entry.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.EnterNode(System.Type@)">
            <summary>
            Tries to enter a node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfNode" />.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitNode(DeserializationContext)" /><para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> properties to the correct values for the current node.
            </summary>
            <param name="type">The type of the node. This value will be null if there was no metadata, or if the reader's serialization binder failed to resolve the type name.</param>
            <returns>
              <c>true</c> if entering a node succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ExitNode">
            <summary>
            Exits the current node. This method will keep skipping entries using <see cref="!:IDataReader.SkipEntry(DeserializationContext)" /> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterNode(System.Type@)" />.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> to the correct values for the node that was prior to the current node.
            </summary>
            <returns>
              <c>true</c> if the method exited a node, <c>false</c> if it reached the end of the stream.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.EnterArray(System.Int64@)">
            <summary>
            Tries to enters an array node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray" />.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitArray(DeserializationContext)" /><para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> properties to the correct values for the current array node.
            </summary>
            <param name="length">The length of the array that was entered.</param>
            <returns>
              <c>true</c> if an array was entered, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ExitArray">
            <summary>
            Exits the closest array. This method will keep skipping entries using <see cref="!:IDataReader.SkipEntry(DeserializationContext)" /> until an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" /> is reached, or the end of the stream is reached.
            <para />
            This call MUST have been preceded by a corresponding call to <see cref="M:Sirenix.Serialization.IDataReader.EnterArray(System.Int64@)" />.
            <para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> to the correct values for the node that was prior to the exited array node.
            </summary>
            <returns>
              <c>true</c> if the method exited an array, <c>false</c> if it reached the end of the stream.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadPrimitiveArray``1(``0[]@)">
            <summary>
            Reads a primitive array value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.PrimitiveArray" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)" />.</typeparam>
            <param name="array">The resulting primitive array.</param>
            <returns>
              <c>true</c> if reading a primitive array succeeded, otherwise <c>false</c>
            </returns>
            <exception cref="T:System.ArgumentException">Type  + typeof(T).Name +  is not a valid primitive array type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadBoolean(System.Boolean@)">
            <summary>
            Reads a <see cref="T:System.Boolean" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Boolean" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadInternalReference(System.Int32@)">
            <summary>
            Reads an internal reference id. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.InternalReference" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="id">The internal reference id.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadExternalReference(System.Int32@)">
            <summary>
            Reads an external reference index. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByIndex" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="index">The external reference index.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadExternalReference(System.Guid@)">
            <summary>
            Reads an external reference guid. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByGuid" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="guid">The external reference guid.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadExternalReference(System.String@)">
            <summary>
            Reads an external reference string. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.ExternalReferenceByString" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="id">The external reference string.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadChar(System.Char@)">
            <summary>
            Reads a <see cref="T:System.Char" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String" />.
            <para />
            If the string of the entry is longer than 1 character, the first character of the string will be taken as the result.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadString(System.String@)">
            <summary>
            Reads a <see cref="T:System.String" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.String" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadGuid(System.Guid@)">
            <summary>
            Reads a <see cref="T:System.Guid" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Guid" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadSByte(System.SByte@)">
            <summary>
            Reads an <see cref="T:System.SByte" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.SByte.MinValue" /> or larger than <see cref="F:System.SByte.MaxValue" />, the result will be default(<see cref="T:System.SByte" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadInt16(System.Int16@)">
            <summary>
            Reads a <see cref="T:System.Int16" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int16.MinValue" /> or larger than <see cref="F:System.Int16.MaxValue" />, the result will be default(<see cref="T:System.Int16" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadInt32(System.Int32@)">
            <summary>
            Reads an <see cref="T:System.Int32" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int32.MinValue" /> or larger than <see cref="F:System.Int32.MaxValue" />, the result will be default(<see cref="T:System.Int32" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadInt64(System.Int64@)">
            <summary>
            Reads a <see cref="T:System.Int64" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Int64.MinValue" /> or larger than <see cref="F:System.Int64.MaxValue" />, the result will be default(<see cref="T:System.Int64" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadByte(System.Byte@)">
            <summary>
            Reads a <see cref="T:System.Byte" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.Byte.MinValue" /> or larger than <see cref="F:System.Byte.MaxValue" />, the result will be default(<see cref="T:System.Byte" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadUInt16(System.UInt16@)">
            <summary>
            Reads an <see cref="T:System.UInt16" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt16.MinValue" /> or larger than <see cref="F:System.UInt16.MaxValue" />, the result will be default(<see cref="T:System.UInt16" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadUInt32(System.UInt32@)">
            <summary>
            Reads an <see cref="T:System.UInt32" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt32.MinValue" /> or larger than <see cref="F:System.UInt32.MaxValue" />, the result will be default(<see cref="T:System.UInt32" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadUInt64(System.UInt64@)">
            <summary>
            Reads an <see cref="T:System.UInt64" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the value of the stored integer is smaller than <see cref="F:System.UInt64.MinValue" /> or larger than <see cref="F:System.UInt64.MaxValue" />, the result will be default(<see cref="T:System.UInt64" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadDecimal(System.Decimal@)">
            <summary>
            Reads a <see cref="T:System.Decimal" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint" /> or an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Decimal.MinValue" /> or larger than <see cref="F:System.Decimal.MaxValue" />, the result will be default(<see cref="T:System.Decimal" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadSingle(System.Single@)">
            <summary>
            Reads a <see cref="T:System.Single" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint" /> or an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Single.MinValue" /> or larger than <see cref="F:System.Single.MaxValue" />, the result will be default(<see cref="T:System.Single" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadDouble(System.Double@)">
            <summary>
            Reads a <see cref="T:System.Double" /> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.FloatingPoint" /> or an <see cref="F:Sirenix.Serialization.EntryType.Integer" />.
            <para />
            If the stored integer or floating point value is smaller than <see cref="F:System.Double.MinValue" /> or larger than <see cref="F:System.Double.MaxValue" />, the result will be default(<see cref="T:System.Double" />).
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <param name="value">The value that has been read.</param>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadNull">
            <summary>
            Reads a <c>null</c> value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.Null" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <returns>
              <c>true</c> if reading the value succeeded, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.PrepareNewSerializationSession">
            <summary>
            Tells the reader that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same reader is used to deserialize several different, unrelated values.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.PeekEntry">
            <summary>
            Peeks the current entry.
            </summary>
            <returns>The peeked entry.</returns>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataReader.ReadToNextEntry">
            <summary>
            Consumes the current entry, and reads to the next one.
            </summary>
            <returns>The next entry.</returns>
        </member>
        <member name="T:Sirenix.Serialization.JsonDataWriter">
            <summary>
            Writes json data to a stream that can be read by a <see cref="T:Sirenix.Serialization.JsonDataReader"/>.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseDataWriter" />
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.#ctor(System.IO.Stream,Sirenix.Serialization.SerializationContext,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.JsonDataWriter" /> class.
            </summary>
            <param name="stream">The base stream of the writer.</param>
            <param name="context">The serialization context to use.</param>>
            <param name="formatAsReadable">Whether the json should be packed, or formatted as human-readable.</param>
        </member>
        <member name="F:Sirenix.Serialization.JsonDataWriter.FormatAsReadable">
            <summary>
            Gets or sets a value indicating whether the json should be packed, or formatted as human-readable.
            </summary>
            <value>
              <c>true</c> if the json should be formatted as human-readable; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="F:Sirenix.Serialization.JsonDataWriter.EnableTypeOptimization">
            <summary>
            Whether to enable an optimization that ensures any given type name is only written once into the json stream, and thereafter kept track of by ID.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.MarkJustStarted">
            <summary>
            Enable the "just started" flag, causing the writer to start a new "base" json object container.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.FlushToStream">
            <summary>
            Flushes everything that has been written so far to the writer's base stream.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.BeginReferenceNode(System.String,System.Type,System.Int32)">
            <summary>
            Writes the beginning of a reference node.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)" />, with the same name.
            </summary>
            <param name="name">The name of the reference node.</param>
            <param name="type">The type of the reference node. If null, no type metadata will be written.</param>
            <param name="id">The id of the reference node. This id is acquired by calling <see cref="M:Sirenix.Serialization.SerializationContext.TryRegisterInternalReference(System.Object,System.Int32@)" />.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.BeginStructNode(System.String,System.Type)">
            <summary>
            Begins a struct/value type node. This is essentially the same as a reference node, except it has no internal reference id.
            <para />
            This call MUST eventually be followed by a corresponding call to <see cref="M:Sirenix.Serialization.IDataWriter.EndNode(System.String)" />, with the same name.
            </summary>
            <param name="name">The name of the struct node.</param>
            <param name="type">The type of the struct node. If null, no type metadata will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.EndNode(System.String)">
            <summary>
            Ends the current node with the given name. If the current node has another name, an <see cref="T:System.InvalidOperationException" /> is thrown.
            </summary>
            <param name="name">The name of the node to end. This has to be the name of the current node.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.BeginArrayNode(System.Int64)">
            <summary>
            Begins an array node of the given length.
            </summary>
            <param name="length">The length of the array to come.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.EndArrayNode">
            <summary>
            Ends the current array node, if the current node is an array node.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WritePrimitiveArray``1(``0[])">
            <summary>
            Writes a primitive array to the stream.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)" />.</typeparam>
            <param name="array">The primitive array to write.</param>
            <exception cref="T:System.ArgumentException">Type  + typeof(T).Name +  is not a valid primitive array type.</exception>
            <exception cref="T:System.ArgumentNullException">array</exception>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteBoolean(System.String,System.Boolean)">
            <summary>
            Writes a <see cref="T:System.Boolean" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteByte(System.String,System.Byte)">
            <summary>
            Writes a <see cref="T:System.Byte" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteChar(System.String,System.Char)">
            <summary>
            Writes a <see cref="T:System.Char" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteDecimal(System.String,System.Decimal)">
            <summary>
            Writes a <see cref="T:System.Decimal" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteDouble(System.String,System.Double)">
            <summary>
            Writes a <see cref="T:System.Double" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteInt32(System.String,System.Int32)">
            <summary>
            Writes an <see cref="T:System.Int32" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteInt64(System.String,System.Int64)">
            <summary>
            Writes a <see cref="T:System.Int64" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteNull(System.String)">
            <summary>
            Writes a null value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteInternalReference(System.String,System.Int32)">
            <summary>
            Writes an internal reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteSByte(System.String,System.SByte)">
            <summary>
            Writes an <see cref="T:System.SByte" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteInt16(System.String,System.Int16)">
            <summary>
            Writes a <see cref="T:System.Int16" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteSingle(System.String,System.Single)">
            <summary>
            Writes a <see cref="T:System.Single" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteString(System.String,System.String)">
            <summary>
            Writes a <see cref="T:System.String" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteGuid(System.String,System.Guid)">
            <summary>
            Writes a <see cref="T:System.Guid" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteUInt32(System.String,System.UInt32)">
            <summary>
            Writes an <see cref="T:System.UInt32" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteUInt64(System.String,System.UInt64)">
            <summary>
            Writes an <see cref="T:System.UInt64" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteExternalReference(System.String,System.Int32)">
            <summary>
            Writes an external index reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="index">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteExternalReference(System.String,System.Guid)">
            <summary>
            Writes an external guid reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="guid">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteExternalReference(System.String,System.String)">
            <summary>
            Writes an external string reference to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="id">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.WriteUInt16(System.String,System.UInt16)">
            <summary>
            Writes an <see cref="T:System.UInt16" /> value to the stream.
            </summary>
            <param name="name">The name of the value. If this is null, no name will be written.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.Dispose">
            <summary>
            Disposes all resources kept by the data writer, except the stream, which can be reused later.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonDataWriter.PrepareNewSerializationSession">
            <summary>
            Tells the writer that a new serialization session is about to begin, and that it should clear all cached values left over from any prior serialization sessions.
            This method is only relevant when the same writer is used to serialize several different, unrelated values.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.JsonTextReader">
            <summary>
            Parses json entries from a stream.
            </summary>
            <seealso cref="T:System.IDisposable" />
        </member>
        <member name="P:Sirenix.Serialization.JsonTextReader.Context">
            <summary>
            The current deserialization context used by the text reader.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonTextReader.#ctor(System.IO.Stream,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.JsonTextReader" /> class.
            </summary>
            <param name="stream">The stream to parse from.</param>
            <param name="context">The deserialization context to use.</param>
            <exception cref="T:System.ArgumentNullException">The stream is null.</exception>
            <exception cref="T:System.ArgumentException">Cannot read from the stream.</exception>
        </member>
        <member name="M:Sirenix.Serialization.JsonTextReader.Reset">
            <summary>
            Resets the reader instance's currently peeked char and emergency playback queue.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonTextReader.Dispose">
            <summary>
            Disposes all resources kept by the text reader, except the stream, which can be reused later.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.JsonTextReader.ReadToNextEntry(System.String@,System.String@,Sirenix.Serialization.EntryType@)">
            <summary>
            Reads to (but not past) the beginning of the next json entry, and returns the entry name, contents and type.
            </summary>
            <param name="name">The name of the entry that was parsed.</param>
            <param name="valueContent">The content of the entry that was parsed.</param>
            <param name="entry">The type of the entry that was parsed.</param>
        </member>
        <member name="T:Sirenix.Serialization.SerializationNode">
            <summary>
            A serialization node as used by the <see cref="F:Sirenix.Serialization.DataFormat.Nodes"/> format.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationNode.Name">
            <summary>
            The name of the node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationNode.Entry">
            <summary>
            The entry type of the node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationNode.Data">
            <summary>
            The data contained in the node. Depending on the entry type and name, as well as nodes encountered prior to this one, the format can vary wildly.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializationNodeDataReader">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.#ctor(Sirenix.Serialization.DeserializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationNodeDataReader.Nodes">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationNodeDataReader.Stream">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.Dispose">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.PrepareNewSerializationSession">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.PeekEntry(System.String@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.EnterArray(System.Int64@)">
            <summary>
            Tries to enters an array node. This will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.StartOfArray" />.
            <para />
            This call MUST (eventually) be followed by a corresponding call to <see cref="!:IDataReader.ExitArray(DeserializationContext)" /><para />
            This call will change the values of the <see cref="P:Sirenix.Serialization.IDataReader.IsInArrayNode" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeName" />, <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeId" /> and <see cref="P:Sirenix.Serialization.IDataReader.CurrentNodeDepth" /> properties to the correct values for the current array node.
            </summary>
            <param name="length">The length of the array that was entered.</param>
            <returns>
              <c>true</c> if an array was entered, otherwise <c>false</c>
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.EnterNode(System.Type@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ExitArray">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ExitNode">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadBoolean(System.Boolean@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadByte(System.Byte@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadChar(System.Char@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadDecimal(System.Decimal@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadDouble(System.Double@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadExternalReference(System.Guid@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadExternalReference(System.String@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadExternalReference(System.Int32@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadGuid(System.Guid@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadInt16(System.Int16@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadInt32(System.Int32@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadInt64(System.Int64@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadInternalReference(System.Int32@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadNull">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadPrimitiveArray``1(``0[]@)">
            <summary>
            Reads a primitive array value. This call will succeed if the next entry is an <see cref="F:Sirenix.Serialization.EntryType.PrimitiveArray" />.
            <para />
            If the call fails (and returns <c>false</c>), it will skip the current entry value, unless that entry is an <see cref="F:Sirenix.Serialization.EntryType.EndOfNode" /> or an <see cref="F:Sirenix.Serialization.EntryType.EndOfArray" />.
            </summary>
            <typeparam name="T">The element type of the primitive array. Valid element types can be determined using <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)" />.</typeparam>
            <param name="array">The resulting primitive array.</param>
            <returns>
              <c>true</c> if reading a primitive array succeeded, otherwise <c>false</c>
            </returns>
            <exception cref="T:System.ArgumentException">Type  + typeof(T).Name +  is not a valid primitive array type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadSByte(System.SByte@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadSingle(System.Single@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadString(System.String@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadUInt16(System.UInt16@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadUInt32(System.UInt32@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadUInt64(System.UInt64@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.PeekEntry">
            <summary>
            Peeks the current entry.
            </summary>
            <returns>The peeked entry.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataReader.ReadToNextEntry">
            <summary>
            Consumes the current entry, and reads to the next one.
            </summary>
            <returns>The next entry.</returns>
        </member>
        <member name="T:Sirenix.Serialization.SerializationNodeDataReaderWriterConfig">
            <summary>
            Shared config class for <see cref="T:Sirenix.Serialization.SerializationNodeDataReader"/> and <see cref="T:Sirenix.Serialization.SerializationNodeDataWriter"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationNodeDataReaderWriterConfig.NodeIdSeparator">
            <summary>
            The string to use to separate node id's from their names.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializationNodeDataWriter">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationNodeDataWriter.Nodes">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.#ctor(Sirenix.Serialization.SerializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationNodeDataWriter.Stream">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.BeginArrayNode(System.Int64)">
            <summary>
            Begins an array node of the given length.
            </summary>
            <param name="length">The length of the array to come.</param>
            <exception cref="T:System.NotImplementedException"></exception>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.BeginReferenceNode(System.String,System.Type,System.Int32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.BeginStructNode(System.String,System.Type)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.Dispose">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.EndArrayNode">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.EndNode(System.String)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.PrepareNewSerializationSession">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteBoolean(System.String,System.Boolean)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteByte(System.String,System.Byte)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteChar(System.String,System.Char)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteDecimal(System.String,System.Decimal)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteSingle(System.String,System.Single)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteDouble(System.String,System.Double)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteExternalReference(System.String,System.Guid)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteExternalReference(System.String,System.String)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteExternalReference(System.String,System.Int32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteGuid(System.String,System.Guid)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteInt16(System.String,System.Int16)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteInt32(System.String,System.Int32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteInt64(System.String,System.Int64)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteInternalReference(System.String,System.Int32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteNull(System.String)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WritePrimitiveArray``1(``0[])">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteSByte(System.String,System.SByte)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteString(System.String,System.String)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteUInt16(System.String,System.UInt16)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteUInt32(System.String,System.UInt32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.WriteUInt64(System.String,System.UInt64)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationNodeDataWriter.FlushToStream">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.FormatterLocator">
            <summary>
            Utility class for locating and caching formatters for all non-primitive types.
            </summary>
        </member>
        <member name="E:Sirenix.Serialization.FormatterLocator.OnLocatedEmittableFormatterForType">
            <summary>
            Editor-only event that fires whenever an emittable formatter has been located.
            This event is used by the AOT formatter pre-emitter to locate types that need to have formatters pre-emitted.
            </summary>
        </member>
        <member name="E:Sirenix.Serialization.FormatterLocator.OnLocatedFormatter">
            <summary>
            Editor-only event that fires whenever a formatter has been located.
            </summary>
        </member>
        <member name="E:Sirenix.Serialization.FormatterLocator.FormatterResolve">
            <summary>
            This event is invoked before everything else when a formatter is being resolved for a given type. If any invoked delegate returns a valid formatter, that formatter is used and the resolve process stops there.
            <para />
            This can be used to hook into and extend the serialization system's formatter resolution logic.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.FormatterLocator.GetFormatter``1(Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Gets a formatter for the type <see cref="!:T" />.
            </summary>
            <typeparam name="T">The type to get a formatter for.</typeparam>
            <param name="policy">The serialization policy to use if a formatter has to be emitted. If null, <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/> is used.</param>
            <returns>
            A formatter for the type <see cref="!:T" />.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.FormatterLocator.GetFormatter(System.Type,Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Gets a formatter for a given type.
            </summary>
            <param name="type">The type to get a formatter for.</param>
            <param name="policy">The serialization policy to use if a formatter has to be emitted. If null, <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/> is used.</param>
            <returns>
            A formatter for the given type.
            </returns>
            <exception cref="T:System.ArgumentNullException">The type argument is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.FormatterLocator.GetFormatter(System.Type,Sirenix.Serialization.ISerializationPolicy,System.Boolean)">
            <summary>
            Gets a formatter for a given type.
            </summary>
            <param name="type">The type to get a formatter for.</param>
            <param name="policy">The serialization policy to use if a formatter has to be emitted. If null, <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/> is used.</param>
            <param name="allowWeakFallbackFormatters">Whether to allow the use of weak fallback formatters which do not implement the strongly typed <see cref="T:Sirenix.Serialization.IFormatter`1"/>, but which conversely do not need to have had AOT support generated.</param>
            <returns>
            A formatter for the given type.
            </returns>
            <exception cref="T:System.ArgumentNullException">The type argument is null.</exception>
        </member>
        <member name="T:Sirenix.Serialization.ArrayFormatter`1">
            <summary>
            Formatter for all non-primitive one-dimensional arrays.
            </summary>
            <typeparam name="T">The element type of the formatted array.</typeparam>
            <seealso cref="!:BaseFormatter&lt;T[]&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.ArrayFormatter`1.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.ArrayFormatter`1.DeserializeImplementation(`0[]@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.ArrayFormatter`1.SerializeImplementation(`0[]@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.ArrayListFormatter">
            <summary>
            Custom formatter for the type <see cref="T:System.Collections.ArrayList"/>.
            </summary>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.List&lt;T&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.ArrayListFormatter.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.ArrayListFormatter.DeserializeImplementation(System.Collections.ArrayList@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.ArrayListFormatter.SerializeImplementation(System.Collections.ArrayList@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.BaseFormatter`1">
            <summary>
            Provides common functionality for serializing and deserializing values of type <see cref="!:T"/>, and provides automatic support for the following common serialization conventions:
            <para />
            <see cref="T:System.Runtime.Serialization.IObjectReference"/>, <see cref="!:ISerializationCallbackReceiver"/>, <see cref="T:System.Runtime.Serialization.OnSerializingAttribute"/>, <see cref="T:System.Runtime.Serialization.OnSerializedAttribute"/>, <see cref="T:System.Runtime.Serialization.OnDeserializingAttribute"/> and <see cref="T:System.Runtime.Serialization.OnDeserializedAttribute"/>.
            </summary>
            <typeparam name="T">The type which can be serialized and deserialized by the formatter.</typeparam>
            <seealso cref="T:Sirenix.Serialization.IFormatter`1" />
        </member>
        <member name="F:Sirenix.Serialization.BaseFormatter`1.OnSerializingCallbacks">
            <summary>
            The on serializing callbacks for type <see cref="!:T"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BaseFormatter`1.OnSerializedCallbacks">
            <summary>
            The on serialized callbacks for type <see cref="!:T"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BaseFormatter`1.OnDeserializingCallbacks">
            <summary>
            The on deserializing callbacks for type <see cref="!:T"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BaseFormatter`1.OnDeserializedCallbacks">
            <summary>
            The on deserialized callbacks for type <see cref="!:T"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.BaseFormatter`1.IsValueType">
            <summary>
            Whether the serialized value is a value type.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.BaseFormatter`1.SerializedType">
            <summary>
            Gets the type that the formatter can serialize.
            </summary>
            <value>
            The type that the formatter can serialize.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.Sirenix#Serialization#IFormatter#Serialize(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value using a specified <see cref="T:Sirenix.Serialization.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.Sirenix#Serialization#IFormatter#Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value using a specified <see cref="T:Sirenix.Serialization.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value of type <see cref="!:T" /> using a specified <see cref="T:Sirenix.Serialization.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.Serialize(`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value of type <see cref="!:T" /> using a specified <see cref="T:Sirenix.Serialization.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T"/>. WARNING: If you override this and return null, the object's ID will not be automatically registered and its OnDeserializing callbacks will not be automatically called, before deserialization begins.
            You will have to call <see cref="M:Sirenix.Serialization.BaseFormatter`1.RegisterReferenceID(`0,Sirenix.Serialization.IDataReader)"/> and <see cref="M:Sirenix.Serialization.BaseFormatter`1.InvokeOnDeserializingCallbacks(`0@,Sirenix.Serialization.DeserializationContext)"/> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>An uninitialized object of type <see cref="!:T"/>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.RegisterReferenceID(`0,Sirenix.Serialization.IDataReader)">
            <summary>
            Registers the given object reference in the deserialization context.
            <para />
            NOTE that this method only does anything if <see cref="!:T"/> is not a value type.
            </summary>
            <param name="value">The value to register.</param>
            <param name="reader">The reader which is currently being used.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.InvokeOnDeserializingCallbacks(`0,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Invokes all methods on the object with the [OnDeserializing] attribute.
            <para />
            WARNING: This method will not be called automatically if you override GetUninitializedObject and return null! You will have to call it manually after having created the object instance during deserialization.
            </summary>
            <param name="value">The value to invoke the callbacks on.</param>
            <param name="context">The deserialization context.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.InvokeOnDeserializingCallbacks(`0@,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Invokes all methods on the object with the [OnDeserializing] attribute.
            <para />
            WARNING: This method will not be called automatically if you override GetUninitializedObject and return null! You will have to call it manually after having created the object instance during deserialization.
            </summary>
            <param name="value">The value to invoke the callbacks on.</param>
            <param name="context">The deserialization context.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.BaseFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.WeakBaseFormatter">
            <summary>
            Provides common functionality for serializing and deserializing weakly typed values of a given type, and provides automatic support for the following common serialization conventions:
            <para />
            <see cref="T:System.Runtime.Serialization.IObjectReference"/>, <see cref="!:ISerializationCallbackReceiver"/>, <see cref="T:System.Runtime.Serialization.OnSerializingAttribute"/>, <see cref="T:System.Runtime.Serialization.OnSerializedAttribute"/>, <see cref="T:System.Runtime.Serialization.OnDeserializingAttribute"/> and <see cref="T:System.Runtime.Serialization.OnDeserializedAttribute"/>.
            </summary>
            <seealso cref="T:Sirenix.Serialization.IFormatter" />
        </member>
        <member name="M:Sirenix.Serialization.WeakBaseFormatter.Serialize(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value using a specified <see cref="T:Sirenix.Serialization.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakBaseFormatter.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value using a specified <see cref="T:Sirenix.Serialization.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakBaseFormatter.RegisterReferenceID(System.Object,Sirenix.Serialization.IDataReader)">
            <summary>
            Registers the given object reference in the deserialization context.
            <para />
            NOTE that this method only does anything if <see cref="!:T"/> is not a value type.
            </summary>
            <param name="value">The value to register.</param>
            <param name="reader">The reader which is currently being used.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakBaseFormatter.InvokeOnDeserializingCallbacks(System.Object,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Invokes all methods on the object with the [OnDeserializing] attribute.
            <para />
            WARNING: This method will not be called automatically if you override GetUninitializedObject and return null! You will have to call it manually after having created the object instance during deserialization.
            </summary>
            <param name="value">The value to invoke the callbacks on.</param>
            <param name="context">The deserialization context.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakBaseFormatter.DeserializeImplementation(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakBaseFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.DateTimeFormatter">
            <summary>
            Custom formatter for the <see cref="T:System.DateTime"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;System.DateTime&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.DateTimeFormatter.Read(System.DateTime@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.DateTimeFormatter.Write(System.DateTime@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.DateTimeOffsetFormatter">
            <summary>
            Custom formatter for the <see cref="T:System.DateTimeOffset"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;System.DateTimeOffset&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.DateTimeOffsetFormatter.Read(System.DateTimeOffset@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.DateTimeOffsetFormatter.Write(System.DateTimeOffset@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.DelegateFormatter`1">
            <summary>
            Formatter for all delegate types.
            <para />
            This formatter can handle anything but delegates for dynamic methods.
            </summary>
            <typeparam name="T"></typeparam>
            <seealso cref="T:Sirenix.Serialization.BaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.DelegateFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:OdinSerializer.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.DelegateFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.DelegateFormatter`1.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T" />. WARNING: If you override this and return null, the object's ID will not be automatically registered and its OnDeserializing callbacks will not be automatically called, before deserialization begins.
            You will have to call <see cref="M:OdinSerializer.BaseFormatter`1.RegisterReferenceID(`0,OdinSerializer.IDataReader)" /> and <see cref="M:OdinSerializer.BaseFormatter`1.InvokeOnDeserializingCallbacks(`0,OdinSerializer.DeserializationContext)" /> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>
            An uninitialized object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.DerivedDictionaryFormatter`3">
            <summary>
            Emergency hack class to support serialization of types derived from dictionary
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DerivedDictionaryFormatter`3.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A value of null.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.DerivedDictionaryFormatter`3.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.DerivedDictionaryFormatter`3.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.DictionaryFormatter`2">
            <summary>
            Custom generic formatter for the generic type definition <see cref="T:System.Collections.Generic.Dictionary`2"/>.
            </summary>
            <typeparam name="TKey">The type of the dictionary key.</typeparam>
            <typeparam name="TValue">The type of the dictionary value.</typeparam>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.Dictionary&lt;TKey, TValue&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.DictionaryFormatter`2.#ctor">
            <summary>
            Creates a new instance of <see cref="T:Sirenix.Serialization.DictionaryFormatter`2"/>.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryFormatter`2.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A value of null.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryFormatter`2.DeserializeImplementation(System.Collections.Generic.Dictionary{`0,`1}@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryFormatter`2.SerializeImplementation(System.Collections.Generic.Dictionary{`0,`1}@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.DoubleLookupDictionaryFormatter`3">
            <summary>
            Custom Odin serialization formatter for <see cref="T:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3"/>.
            </summary>
            <typeparam name="TPrimary">Type of primary key.</typeparam>
            <typeparam name="TSecondary">Type of secondary key.</typeparam>
            <typeparam name="TValue">Type of value.</typeparam>
        </member>
        <member name="M:Sirenix.Serialization.DoubleLookupDictionaryFormatter`3.#ctor">
            <summary>
            Creates a new instance of <see cref="T:Sirenix.Serialization.DoubleLookupDictionaryFormatter`3"/>.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DoubleLookupDictionaryFormatter`3.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DoubleLookupDictionaryFormatter`3.SerializeImplementation(Sirenix.Serialization.Utilities.DoubleLookupDictionary{`0,`1,`2}@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.DoubleLookupDictionaryFormatter`3.DeserializeImplementation(Sirenix.Serialization.Utilities.DoubleLookupDictionary{`0,`1,`2}@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:OdinSerializer.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.EasyBaseFormatter`1">
            <summary>
            Provides an easy way of implementing custom formatters.
            </summary>
            <typeparam name="T">The type which can be serialized and deserialized by the formatter.</typeparam>
        </member>
        <member name="M:Sirenix.Serialization.EasyBaseFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads through all entries in the current node one at a time, and calls <see cref="!:EasyBaseFormatter&lt;T&gt;.ReadDataEntry(ref T, string, EntryType, IDataReader, DeserializationContext)" /> for each entry.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.EasyBaseFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Calls <see cref="M:Sirenix.Serialization.EasyBaseFormatter`1.WriteDataEntries(`0@,Sirenix.Serialization.IDataWriter)" /> directly.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.EasyBaseFormatter`1.ReadDataEntry(`0@,System.String,Sirenix.Serialization.EntryType,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a data entry into the value denoted by the entry name.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="entryName">The name of the entry.</param>
            <param name="entryType">The type of the entry.</param>
            <param name="reader">The reader currently used for deserialization.</param>
        </member>
        <member name="M:Sirenix.Serialization.EasyBaseFormatter`1.WriteDataEntries(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Write the serialized values of a value of type <see cref="!:t" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer currently used for serialization.</param>
        </member>
        <member name="T:Sirenix.Serialization.EmittedFormatterAttribute">
            <summary>
            Indicates that this formatter type has been emitted. Never put this on a type!
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.EmptyTypeFormatter`1">
            <summary>
            A formatter for empty types. It writes no data, and skips all data that is to be read, deserializing a "default" value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.EmptyTypeFormatter`1.ReadDataEntry(`0@,System.String,Sirenix.Serialization.EntryType,Sirenix.Serialization.IDataReader)">
            <summary>
            Skips the entry to read.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.EmptyTypeFormatter`1.WriteDataEntries(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Does nothing at all.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.FormatterEmitter">
            <summary>
            Utility class for emitting formatters using the <see cref="N:System.Reflection.Emit"/> namespace.
            <para />
            NOTE: Some platforms do not support emitting. Check whether you can emit on the current platform using <see cref="P:Sirenix.Serialization.Utilities.EmitUtilities.CanEmit"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.FormatterEmitter.helperFormatterNameId">
            <summary>
            Used for generating unique formatter helper type names.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.FormatterEmitter.PRE_EMITTED_ASSEMBLY_NAME">
            <summary>
            The name of the pre-generated assembly that contains pre-emitted formatters for use on AOT platforms where emitting is not supported. Note that this assembly is not always present.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.FormatterEmitter.RUNTIME_EMITTED_ASSEMBLY_NAME">
            <summary>
            The name of the runtime-generated assembly that contains runtime-emitted formatters for use on non-AOT platforms where emitting is supported. Note that this assembly is not always present.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.FormatterEmitter.AOTEmittedFormatter`1">
            <summary>
            Base type for all AOT-emitted formatters.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.FormatterEmitter.EmptyAOTEmittedFormatter`1">
            <summary>
            Shortcut class that makes it easier to emit empty AOT formatters.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.FormatterEmitter.EmptyAOTEmittedFormatter`1.ReadDataEntry(`0@,System.String,Sirenix.Serialization.EntryType,Sirenix.Serialization.IDataReader)">
            <summary>
            Skips the entry to read.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.FormatterEmitter.EmptyAOTEmittedFormatter`1.WriteDataEntries(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Does nothing at all.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.FormatterEmitter.GetEmittedFormatter(System.Type,Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Gets an emitted formatter for a given type.
            <para />
            NOTE: Some platforms do not support emitting. On such platforms, this method logs an error and returns null. Check whether you can emit on the current platform using <see cref="P:Sirenix.Serialization.Utilities.EmitUtilities.CanEmit"/>.
            </summary>
            <param name="type">The type to emit a formatter for.</param>
            <param name="policy">The serialization policy to use to determine which members the emitted formatter should serialize. If null, <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/> is used.</param>
            <returns>The type of the emitted formatter.</returns>
            <exception cref="T:System.ArgumentNullException">The type argument is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.FormatterEmitter.EmitAOTFormatter(System.Type,System.Reflection.Emit.ModuleBuilder,Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Emits a formatter for a given type into a given module builder, using a given serialization policy to determine which members to serialize.
            </summary>
            <param name="formattedType">Type to create a formatter for.</param>
            <param name="moduleBuilder">The module builder to emit a formatter into.</param>
            <param name="policy">The serialization policy to use for creating the formatter.</param>
            <returns>The fully constructed, emitted formatter type.</returns>
        </member>
        <member name="T:Sirenix.Serialization.GenericCollectionFormatter">
            <summary>
            Utility class for the <see cref="T:Sirenix.Serialization.GenericCollectionFormatter`2"/> class.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.GenericCollectionFormatter.CanFormat(System.Type,System.Type@)">
            <summary>
            Determines whether the specified type can be formatted by a <see cref="T:Sirenix.Serialization.GenericCollectionFormatter`2"/>.
            <para />
            The following criteria are checked: type implements <see cref="T:System.Collections.Generic.ICollection`1"/>, type is not abstract, type is not a generic type definition, type is not an interface, type has a public parameterless constructor.
            </summary>
            <param name="type">The collection type to check.</param>
            <param name="elementType">The element type of the collection.</param>
            <returns><c>true</c> if the type can be formatted by a <see cref="T:Sirenix.Serialization.GenericCollectionFormatter`2"/>, otherwise <c>false</c></returns>
            <exception cref="T:System.ArgumentNullException">The type argument is null.</exception>
        </member>
        <member name="T:Sirenix.Serialization.GenericCollectionFormatter`2">
            <summary>
            Formatter for all eligible types that implement the interface <see cref="T:System.Collections.Generic.ICollection`1"/>, and which have no other formatters specified.
            <para />
            Eligibility for formatting by this class is determined by the <see cref="M:Sirenix.Serialization.GenericCollectionFormatter.CanFormat(System.Type,System.Type@)"/> method.
            </summary>
            <typeparam name="TCollection">The type of the collection.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
        </member>
        <member name="M:Sirenix.Serialization.GenericCollectionFormatter`2.#ctor">
            <summary>
            Creates a new instance of <see cref="T:Sirenix.Serialization.GenericCollectionFormatter`2"/>.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.GenericCollectionFormatter`2.GetUninitializedObject">
            <summary>
            Gets a new object of type <see cref="!:T" />.
            </summary>
            <returns>
            A new object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.GenericCollectionFormatter`2.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.GenericCollectionFormatter`2.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakGenericCollectionFormatter.GetUninitializedObject">
            <summary>
            Gets a new object of type <see cref="!:T" />.
            </summary>
            <returns>
            A new object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakGenericCollectionFormatter.DeserializeImplementation(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakGenericCollectionFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.HashSetFormatter`1">
            <summary>
            Custom generic formatter for the generic type definition <see cref="T:System.Collections.Generic.HashSet`1"/>.
            </summary>
            <typeparam name="T">The element type of the formatted list.</typeparam>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.HashSet&lt;T&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.HashSetFormatter`1.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.HashSetFormatter`1.DeserializeImplementation(System.Collections.Generic.HashSet{`0}@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.HashSetFormatter`1.SerializeImplementation(System.Collections.Generic.HashSet{`0}@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakHashSetFormatter.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakHashSetFormatter.DeserializeImplementation(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakHashSetFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.IFormatter">
            <summary>
            Serializes and deserializes a given type.
            <para />
            NOTE that if you are implementing a custom formatter and registering it using the <see cref="T:Sirenix.Serialization.CustomFormatterAttribute"/>, it is not enough to implement <see cref="T:Sirenix.Serialization.IFormatter"/> - you have to implement <see cref="T:Sirenix.Serialization.IFormatter`1"/>.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.IFormatter.SerializedType">
            <summary>
            Gets the type that the formatter can serialize.
            </summary>
            <value>
            The type that the formatter can serialize.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.IFormatter.Serialize(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value using a specified <see cref="T:Sirenix.Serialization.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.IFormatter.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value using a specified <see cref="T:Sirenix.Serialization.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.IFormatter`1">
            <summary>
            Serializes and deserializes a given type T.
            </summary>
            <typeparam name="T">The type which can be serialized and deserialized by the formatter.</typeparam>
        </member>
        <member name="M:Sirenix.Serialization.IFormatter`1.Serialize(`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value of type <see cref="!:T" /> using a specified <see cref="T:Sirenix.Serialization.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.IFormatter`1.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value of type <see cref="!:T" /> using a specified <see cref="T:Sirenix.Serialization.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.KeyValuePairFormatter`2">
            <summary>
            Custom generic formatter for the generic type definition <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TValue">The type of the value.</typeparam>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.KeyValuePair&lt;TKey, TValue&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.KeyValuePairFormatter`2.SerializeImplementation(System.Collections.Generic.KeyValuePair{`0,`1}@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.KeyValuePairFormatter`2.DeserializeImplementation(System.Collections.Generic.KeyValuePair{`0,`1}@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.ListFormatter`1">
            <summary>
            Custom generic formatter for the generic type definition <see cref="T:System.Collections.Generic.List`1"/>.
            </summary>
            <typeparam name="T">The element type of the formatted list.</typeparam>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.List&lt;T&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.ListFormatter`1.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.ListFormatter`1.DeserializeImplementation(System.Collections.Generic.List{`0}@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.ListFormatter`1.SerializeImplementation(System.Collections.Generic.List{`0}@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.MethodInfoFormatter`1">
            <summary>
            Custom formatter for MethodInfo, since Unity Mono's MethodInfo ISerializable implementation will often crash if the method no longer exists upon deserialization.
            </summary>
            <seealso cref="T:Sirenix.Serialization.BaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.MethodInfoFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:OdinSerializer.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.MethodInfoFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.MethodInfoFormatter`1.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T" />. WARNING: If you override this and return null, the object's ID will not be automatically registered and its OnDeserializing callbacks will not be automatically called, before deserialization begins.
            You will have to call <see cref="M:OdinSerializer.BaseFormatter`1.RegisterReferenceID(`0,OdinSerializer.IDataReader)" /> and <see cref="M:OdinSerializer.BaseFormatter`1.InvokeOnDeserializingCallbacks(`0,OdinSerializer.DeserializationContext)" /> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>
            An uninitialized object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.MinimalBaseFormatter`1">
            <summary>
            Minimal baseline formatter. Doesn't come with all the bells and whistles of any of the other BaseFormatter classes.
            Common serialization conventions aren't automatically supported, and common deserialization callbacks are not automatically invoked.
            </summary>
            <typeparam name="T">The type which can be serialized and deserialized by the formatter.</typeparam>
        </member>
        <member name="F:Sirenix.Serialization.MinimalBaseFormatter`1.IsValueType">
            <summary>
            Whether the serialized value is a value type.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.MinimalBaseFormatter`1.SerializedType">
            <summary>
            Gets the type that the formatter can serialize.
            </summary>
            <value>
            The type that the formatter can serialize.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value of type <see cref="!:T" /> using a specified <see cref="T:OdinSerializer.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.Serialize(`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value of type <see cref="!:T" /> using a specified <see cref="T:OdinSerializer.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.Sirenix#Serialization#IFormatter#Serialize(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes a value using a specified <see cref="T:Sirenix.Serialization.IDataWriter" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.Sirenix#Serialization#IFormatter#Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value using a specified <see cref="T:Sirenix.Serialization.IDataReader" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T"/>. WARNING: If you override this and return null, the object's ID will not be automatically registered.
            You will have to call <see cref="!:MinimalBaseFormatter&lt;T&gt;&lt;T&gt;.RegisterReferenceID(T, IDataReader, DeserializationContext)"/> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>An uninitialized object of type <see cref="!:T"/>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.Read(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.Write(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.MinimalBaseFormatter`1.RegisterReferenceID(`0,Sirenix.Serialization.IDataReader)">
            <summary>
            Registers the given object reference in the deserialization context.
            <para />
            NOTE that this method only does anything if <see cref="!:T"/> is not a value type.
            </summary>
            <param name="value">The value to register.</param>
            <param name="reader">The reader which is currently being used.</param>
        </member>
        <member name="F:Sirenix.Serialization.WeakMinimalBaseFormatter.IsValueType">
            <summary>
            Whether the serialized value is a value type.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.WeakMinimalBaseFormatter.Sirenix#Serialization#IFormatter#SerializedType">
            <summary>
            Gets the type that the formatter can serialize.
            </summary>
            <value>
            The type that the formatter can serialize.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.WeakMinimalBaseFormatter.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T"/>. WARNING: If you override this and return null, the object's ID will not be automatically registered.
            You will have to call <see cref="!:MinimalBaseFormatter&lt;T&gt;&lt;T&gt;.RegisterReferenceID(T, IDataReader, DeserializationContext)"/> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>An uninitialized object of type <see cref="!:T"/>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakMinimalBaseFormatter.Read(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakMinimalBaseFormatter.Write(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakMinimalBaseFormatter.RegisterReferenceID(System.Object,Sirenix.Serialization.IDataReader)">
            <summary>
            Registers the given object reference in the deserialization context.
            <para />
            NOTE that this method only does anything if the serialized type is not a value type.
            </summary>
            <param name="value">The value to register.</param>
            <param name="reader">The reader which is currently being used.</param>
        </member>
        <member name="T:Sirenix.Serialization.MultiDimensionalArrayFormatter`2">
            <summary>
            Formatter for all arrays with more than one dimension.
            </summary>
            <typeparam name="TArray">The type of the formatted array.</typeparam>
            <typeparam name="TElement">The element type of the formatted array.</typeparam>
            <seealso cref="T:Sirenix.Serialization.BaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.MultiDimensionalArrayFormatter`2.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.MultiDimensionalArrayFormatter`2.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.MultiDimensionalArrayFormatter`2.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakMultiDimensionalArrayFormatter.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakMultiDimensionalArrayFormatter.DeserializeImplementation(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakMultiDimensionalArrayFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.NullableFormatter`1">
            <summary>
            Formatter for all <see cref="T:System.Nullable`1"/> types.
            </summary>
            <typeparam name="T">The type that is nullable.</typeparam>
            <seealso cref="!:BaseFormatter&lt;T?&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.NullableFormatter`1.#ctor">
            <summary>
            Creates a new instance of <see cref="T:Sirenix.Serialization.NullableFormatter`1"/>.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.NullableFormatter`1.DeserializeImplementation(System.Nullable{`0}@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:OdinSerializer.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.NullableFormatter`1.SerializeImplementation(System.Nullable{`0}@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.PrimitiveArrayFormatter`1">
            <summary>
            Formatter for all primitive one-dimensional arrays.
            </summary>
            <typeparam name="T">The element type of the formatted array. This type must be an eligible primitive array type, as determined by <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)"/>.</typeparam>
            <seealso cref="!:MinimalBaseFormatter&lt;T[]&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.PrimitiveArrayFormatter`1.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.PrimitiveArrayFormatter`1.Read(`0[]@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.PrimitiveArrayFormatter`1.Write(`0[]@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakPrimitiveArrayFormatter.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakPrimitiveArrayFormatter.Read(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakPrimitiveArrayFormatter.Write(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.QueueFormatter`2">
            <summary>
            Custom generic formatter for the generic type definition <see cref="T:System.Collections.Generic.Queue`1"/>.
            </summary>
            <typeparam name="T">The element type of the formatted queue.</typeparam>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.Queue&lt;T&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.QueueFormatter`2.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.QueueFormatter`2.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.QueueFormatter`2.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.ReflectionFormatter`1">
            <summary>
            Final fallback formatter for all types which have no other formatters. This formatter relies on reflection to work, and is thus comparatively slow and creates more garbage than a custom formatter.
            </summary>
            <typeparam name="T">The type which can be serialized and deserialized by the formatter.</typeparam>
            <seealso cref="T:Sirenix.Serialization.BaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.ReflectionFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.ReflectionFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.SelfFormatterFormatter`1">
            <summary>
            Formatter for types that implement the <see cref="T:Sirenix.Serialization.ISelfFormatter"/> interface.
            </summary>
            <typeparam name="T"></typeparam>
            <seealso cref="T:Sirenix.Serialization.BaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.SelfFormatterFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Calls <see cref="M:Sirenix.Serialization.ISelfFormatter.Deserialize(Sirenix.Serialization.IDataReader)" />  on the value to deserialize.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SelfFormatterFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Calls <see cref="M:Sirenix.Serialization.ISelfFormatter.Serialize(Sirenix.Serialization.IDataWriter)" />  on the value to deserialize.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.WeakSelfFormatterFormatter.DeserializeImplementation(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Calls <see cref="M:Sirenix.Serialization.ISelfFormatter.Deserialize(Sirenix.Serialization.IDataReader)" />  on the value to deserialize.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.WeakSelfFormatterFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Calls <see cref="M:Sirenix.Serialization.ISelfFormatter.Serialize(Sirenix.Serialization.IDataWriter)" />  on the value to deserialize.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializableFormatter`1">
            <summary>
            Formatter for all types that implement the ISerializable interface.
            </summary>
            <typeparam name="T">The type which can be serialized and deserialized by the formatter.</typeparam>
            <seealso cref="T:Sirenix.Serialization.BaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.SerializableFormatter`1.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T" />. WARNING: If you override this and return null, the object's ID will not be automatically registered and its OnDeserializing callbacks will not be automatically called, before deserialization begins.
            You will have to call <see cref="!:BaseFormatter&lt;T&gt;.RegisterReferenceID(T, IDataReader, DeserializationContext)" /> and <see cref="!:BaseFormatter&lt;T&gt;.InvokeOnDeserializingCallbacks(T, IDataReader, DeserializationContext)" /> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>
            An uninitialized object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializableFormatter`1.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializableFormatter`1.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializableFormatter`1.ReadSerializationInfo(Sirenix.Serialization.IDataReader)">
            <summary>
            Creates and reads into a <see cref="T:System.Runtime.Serialization.SerializationInfo" /> instance using a given reader and context.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> which was read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializableFormatter`1.WriteSerializationInfo(System.Runtime.Serialization.SerializationInfo,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes the given <see cref="T:System.Runtime.Serialization.SerializationInfo" /> using the given writer.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakSerializableFormatter.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T" />. WARNING: If you override this and return null, the object's ID will not be automatically registered and its OnDeserializing callbacks will not be automatically called, before deserialization begins.
            You will have to call <see cref="!:BaseFormatter&lt;T&gt;.RegisterReferenceID(T, IDataReader, DeserializationContext)" /> and <see cref="!:BaseFormatter&lt;T&gt;.InvokeOnDeserializingCallbacks(T, IDataReader, DeserializationContext)" /> immediately after creating the object yourself during deserialization.
            </summary>
            <returns>
            An uninitialized object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.WeakSerializableFormatter.DeserializeImplementation(System.Object@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakSerializableFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.StackFormatter`2">
            <summary>
            Custom generic formatter for the generic type definition <see cref="T:System.Collections.Generic.Stack`1"/> and types derived from it.
            </summary>
            <typeparam name="T">The element type of the formatted stack.</typeparam>
            <seealso cref="!:BaseFormatter&lt;System.Collections.Generic.Stack&lt;T&gt;&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.StackFormatter`2.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.StackFormatter`2.DeserializeImplementation(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Provides the actual implementation for deserializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The uninitialized value to serialize into. This value will have been created earlier using <see cref="M:Sirenix.Serialization.BaseFormatter`1.GetUninitializedObject" />.</param>
            <param name="reader">The reader to deserialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.StackFormatter`2.SerializeImplementation(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="M:Sirenix.Serialization.WeakStackFormatter.SerializeImplementation(System.Object@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Provides the actual implementation for serializing a value of type <see cref="!:T" />.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to serialize with.</param>
        </member>
        <member name="T:Sirenix.Serialization.TimeSpanFormatter">
            <summary>
            Custom formatter for the <see cref="T:System.TimeSpan"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;System.TimeSpan&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.TimeSpanFormatter.Read(System.TimeSpan@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.TimeSpanFormatter.Write(System.TimeSpan@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.TypeFormatter">
            <summary>
            Formatter for the <see cref="T:System.Type"/> type which uses the reader/writer's <see cref="T:Sirenix.Serialization.TwoWaySerializationBinder"/> to bind types.
            </summary>
            <seealso cref="T:Sirenix.Serialization.MinimalBaseFormatter`1" />
        </member>
        <member name="M:Sirenix.Serialization.TypeFormatter.Read(System.Type@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.TypeFormatter.Write(System.Type@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.TypeFormatter.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>null.</returns>
        </member>
        <member name="T:Sirenix.Serialization.VersionFormatter">
            <summary>
            Custom formatter for the <see cref="T:System.Version"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;System.Version&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.VersionFormatter.Read(System.Version@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.VersionFormatter.Write(System.Version@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.AllowDeserializeInvalidDataAttribute">
            <summary>
            <para>
            Applying this attribute to a type indicates that in the case where, when expecting to deserialize an instance of the type
            or any of its derived types, but encountering an incompatible, uncastable type in the data being read, the serializer
            should attempt to deserialize an instance of the expected type using the stored, possibly invalid data.
            </para>
            <para>
            This is equivalent to the <see cref="F:Sirenix.Serialization.SerializationConfig.AllowDeserializeInvalidData"/> option, expect type-specific instead
            of global.
            </para>
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.AlwaysFormatsSelfAttribute">
            <summary>
            Use this attribute to specify that a type that implements the <see cref="T:Sirenix.Serialization.ISelfFormatter"/>
            interface should *always* format itself regardless of other formatters being specified.
            <para />
            This means that the interface will be used to format all types derived from the type that
            is decorated with this attribute, regardless of custom formatters for the derived types.
            </summary>
            <seealso cref="T:System.Attribute" />
        </member>
        <member name="T:Sirenix.Serialization.ArchitectureInfo">
            <summary>
            This class gathers info about the current architecture for the purpose of determinining
            the unaligned read/write capabilities that we have to work with.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.ArchitectureInfo.Architecture_Supports_All_Unaligned_ReadWrites">
            <summary>
            This will be false on some ARM architectures, such as ARMv7.
            In these cases, we will have to perform slower but safer int-by-int read/writes of data.
            <para />
            Since this value will never change at runtime, performance hits from checking this 
            everywhere should hopefully be negligible, since branch prediction from speculative
            execution will always predict it correctly.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Buffer`1">
            <summary>
            Provides a way of claiming and releasing cached array buffers.
            </summary>
            <typeparam name="T">The element type of the array to buffer.</typeparam>
            <seealso cref="T:System.IDisposable" />
        </member>
        <member name="P:Sirenix.Serialization.Buffer`1.Count">
            <summary>
            Gets the total element count of the buffered array. This will always be a power of two.
            </summary>
            <value>
            The total element count of the buffered array.
            </value>
            <exception cref="T:System.InvalidOperationException">Cannot access a buffer while it is freed.</exception>
        </member>
        <member name="P:Sirenix.Serialization.Buffer`1.Array">
            <summary>
            Gets the buffered array.
            </summary>
            <value>
            The buffered array.
            </value>
            <exception cref="T:System.InvalidOperationException">Cannot access a buffer while it is freed.</exception>
        </member>
        <member name="P:Sirenix.Serialization.Buffer`1.IsFree">
            <summary>
            Gets a value indicating whether this buffer is free.
            </summary>
            <value>
              <c>true</c> if this buffer is free; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.Buffer`1.Claim(System.Int32)">
            <summary>
            Claims a buffer with the specified minimum capacity. Note: buffers always have a capacity equal to or larger than 256.
            </summary>
            <param name="minimumCapacity">The minimum capacity.</param>
            <returns>A buffer which has a capacity equal to or larger than the specified minimum capacity.</returns>
            <exception cref="T:System.ArgumentException">Requested size of buffer must be larger than 0.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Buffer`1.Free(Sirenix.Serialization.Buffer{`0})">
            <summary>
            Frees the specified buffer.
            </summary>
            <param name="buffer">The buffer to free.</param>
            <exception cref="T:System.ArgumentNullException">The buffer argument is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Buffer`1.Free">
            <summary>
            Frees this buffer.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Buffer`1.Dispose">
            <summary>
            Frees this buffer.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.CustomFormatterAttribute">
            <summary>
            Attribute indicating that a class which implements the <see cref="T:Sirenix.Serialization.IFormatter`1" /> interface somewhere in its hierarchy is a custom formatter for the type T.
            </summary>
            <seealso cref="T:System.Attribute" />
        </member>
        <member name="F:Sirenix.Serialization.CustomFormatterAttribute.Priority">
            <summary>
            The priority of the formatter. Of all the available custom formatters, the formatter with the highest priority is always chosen.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CustomFormatterAttribute.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.CustomFormatterAttribute"/> class with priority 0.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CustomFormatterAttribute.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.CustomFormatterAttribute"/> class.
            </summary>
            <param name="priority">The priority of the formatter. Of all the available custom formatters, the formatter with the highest priority is always chosen.</param>
        </member>
        <member name="T:Sirenix.Serialization.CustomGenericFormatterAttribute">
            <summary>
            Attribute indicating that a generic type definition class which implements the <see cref="T:Sirenix.Serialization.IFormatter`1" /> interface somewhere in its hierarchy is a custom formatter for *any variation* of the generic type definition T.
            <para />
            The formatter's generic type parameters are mapped onto the serialized type's generic type parameters.
            <para />
            For example, <see cref="T:Sirenix.Serialization.DictionaryFormatter`2"/> implements <see cref="T:Sirenix.Serialization.IFormatter`1"/>, where T is <see cref="T:System.Collections.Generic.Dictionary`2"/>.
            </summary>
            <seealso cref="T:Sirenix.Serialization.CustomFormatterAttribute" />
        </member>
        <member name="F:Sirenix.Serialization.CustomGenericFormatterAttribute.SerializedGenericTypeDefinition">
            <summary>
            The generic type definition of the serialized type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CustomGenericFormatterAttribute.#ctor(System.Type,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.CustomGenericFormatterAttribute"/> class.
            </summary>
            <param name="serializedGenericTypeDefinition">The generic type definition of the serialized type.</param>
            <param name="priority">The priority of the formatter. Of all the available custom formatters, the formatter with the highest priority is always chosen.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="serializedGenericTypeDefinition"/> was null.</exception>
            <exception cref="T:System.ArgumentException">The type given in <paramref name="serializedGenericTypeDefinition"/> is not a generic type definition.</exception>
        </member>
        <member name="T:Sirenix.Serialization.CustomSerializationPolicy">
            <summary>
            Helper class for quickly and easily implementing the <see cref="T:Sirenix.Serialization.ISerializationPolicy"/> interface.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CustomSerializationPolicy.#ctor(System.String,System.Boolean,System.Func{System.Reflection.MemberInfo,System.Boolean})">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.CustomSerializationPolicy"/> class.
            </summary>
            <param name="id">The policy ID.</param>
            <param name="allowNonSerializableTypes">if set to <c>true</c> non serializable types will be allowed.</param>
            <param name="shouldSerializeFunc">The delegate to use for determining whether members should be serialized.</param>
            <exception cref="T:System.ArgumentNullException">
            The id argument or the shouldSerializeFunc argument was null.
            </exception>
        </member>
        <member name="P:Sirenix.Serialization.CustomSerializationPolicy.ID">
            <summary>
            Gets the identifier of the policy. This can be stored in the serialization metadata, so the policy used to serialize it can be recovered without knowing the policy at runtime. This ID should preferably be unique.
            </summary>
            <value>
            The identifier of the policy.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.CustomSerializationPolicy.AllowNonSerializableTypes">
            <summary>
            Gets a value indicating whether to allow non serializable types. (Types which are not decorated with <see cref="T:System.SerializableAttribute" />.)
            </summary>
            <value>
            <c>true</c> if serializable types are allowed; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.CustomSerializationPolicy.ShouldSerializeMember(System.Reflection.MemberInfo)">
            <summary>
            Gets a value indicating whether a given <see cref="T:System.Reflection.MemberInfo" /> should be serialized or not.
            </summary>
            <param name="member">The member to check.</param>
            <returns>
              <c>true</c> if the given member should be serialized, otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.BindTypeNameToTypeAttribute">
             <summary>
             An attribute that lets you help the DefaultSerializationBinder bind type names to types. This is useful if you're renaming a type,
             that would result in data loss, and what to specify the new type name to avoid loss of data.
             </summary>
             <seealso cref="T:Sirenix.Serialization.DefaultSerializationBinder" />
             <example>
             <code>
             [assembly: OdinSerializer.BindTypeNameToType("Namespace.OldTypeName", typeof(Namespace.NewTypeName))]
             //[assembly: OdinSerializer.BindTypeNameToType("Namespace.OldTypeName, OldFullAssemblyName", typeof(Namespace.NewTypeName))]
            
             namespace Namespace
             {
                 public class SomeComponent : SerializedMonoBehaviour
                 {
                     public IInterface test; // Contains an instance of OldTypeName;
                 }
            
                 public interface IInterface { }
            
                 public class NewTypeName : IInterface { }
            
                 //public class OldTypeName : IInterface { }
             }
             </code>
             </example>
        </member>
        <member name="M:Sirenix.Serialization.BindTypeNameToTypeAttribute.#ctor(System.String,System.Type)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.BindTypeNameToTypeAttribute"/> class.
            </summary>
            <param name="oldFullTypeName">Old old full type name. If it's moved to new a new assembly you must specify the old assembly name as well. See example code in the documentation.</param>
            <param name="newType">The new type.</param>
        </member>
        <member name="T:Sirenix.Serialization.DefaultSerializationBinder">
            <summary>
            Provides a default, catch-all <see cref="T:Sirenix.Serialization.TwoWaySerializationBinder"/> implementation. This binder only includes assembly names, without versions and tokens, in order to increase compatibility.
            </summary>
            <seealso cref="T:Sirenix.Serialization.TwoWaySerializationBinder" />
            <seealso cref="T:Sirenix.Serialization.BindTypeNameToTypeAttribute" />
        </member>
        <member name="M:Sirenix.Serialization.DefaultSerializationBinder.BindToName(System.Type,Sirenix.Serialization.DebugContext)">
            <summary>
            Bind a type to a name.
            </summary>
            <param name="type">The type to bind.</param>
            <param name="debugContext">The debug context to log to.</param>
            <returns>
            The name that the type has been bound to.
            </returns>
            <exception cref="T:System.ArgumentNullException">The type argument is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.DefaultSerializationBinder.ContainsType(System.String)">
            <summary>
            Determines whether the specified type name is mapped.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DefaultSerializationBinder.BindToType(System.String,Sirenix.Serialization.DebugContext)">
            <summary>
            Binds a name to type.
            </summary>
            <param name="typeName">The name of the type to bind.</param>
            <param name="debugContext">The debug context to log to.</param>
            <returns>
            The type that the name has been bound to, or null if the type could not be resolved.
            </returns>
            <exception cref="T:System.ArgumentNullException">The typeName argument is null.</exception>
        </member>
        <member name="T:Sirenix.Serialization.DeserializationContext">
            <summary>
            The context of a given deserialization session. This class maintains all internal and external references during deserialization.
            </summary>
            <seealso cref="T:Sirenix.Serialization.Utilities.ICacheNotificationReceiver" />
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.DeserializationContext"/> class.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.#ctor(System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.DeserializationContext"/> class.
            </summary>
            <param name="context">The streaming context to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.#ctor(System.Runtime.Serialization.FormatterConverter)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.DeserializationContext"/> class.
            </summary>
            <param name="formatterConverter">The formatter converter to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.#ctor(System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.FormatterConverter)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.DeserializationContext"/> class.
            </summary>
            <param name="context">The streaming context to use.</param>
            <param name="formatterConverter">The formatter converter to use.</param>
            <exception cref="T:System.ArgumentNullException">The formatterConverter parameter is null.</exception>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.Binder">
            <summary>
            Gets or sets the context's type binder.
            </summary>
            <value>
            The context's serialization binder.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.StringReferenceResolver">
            <summary>
            Gets or sets the string reference resolver.
            </summary>
            <value>
            The string reference resolver.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.GuidReferenceResolver">
            <summary>
            Gets or sets the Guid reference resolver.
            </summary>
            <value>
            The Guid reference resolver.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.IndexReferenceResolver">
            <summary>
            Gets or sets the index reference resolver.
            </summary>
            <value>
            The index reference resolver.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.StreamingContext">
            <summary>
            Gets the streaming context.
            </summary>
            <value>
            The streaming context.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.FormatterConverter">
            <summary>
            Gets the formatter converter.
            </summary>
            <value>
            The formatter converter.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.DeserializationContext.Config">
            <summary>
            Gets or sets the serialization configuration.
            </summary>
            <value>
            The serialization configuration.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.RegisterInternalReference(System.Int32,System.Object)">
            <summary>
            Registers an internal reference to a given id.
            </summary>
            <param name="id">The id to register the reference with.</param>
            <param name="reference">The reference to register.</param>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.GetInternalReference(System.Int32)">
            <summary>
            Gets an internal reference from a given id, or null if the id has not been registered.
            </summary>
            <param name="id">The id of the reference to get.</param>
            <returns>An internal reference from a given id, or null if the id has not been registered.</returns>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.GetExternalObject(System.Int32)">
            <summary>
            Gets an external object reference by index, or null if the index could not be resolved.
            </summary>
            <param name="index">The index to resolve.</param>
            <returns>An external object reference by the given index, or null if the index could not be resolved.</returns>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.GetExternalObject(System.Guid)">
            <summary>
            Gets an external object reference by guid, or null if the guid could not be resolved.
            </summary>
            <param name="guid">The guid to resolve.</param>
            <returns>An external object reference by the given guid, or null if the guid could not be resolved.</returns>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.GetExternalObject(System.String)">
            <summary>
            Gets an external object reference by an id string, or null if the id string could not be resolved.
            </summary>
            <param name="id">The id string to resolve.</param>
            <returns>An external object reference by an id string, or null if the id string could not be resolved.</returns>
        </member>
        <member name="M:Sirenix.Serialization.DeserializationContext.Reset">
            <summary>
            Resets the deserialization context completely to baseline status, as if its constructor has just been called.
            This allows complete reuse of a deserialization context, with all of its internal reference buffers.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.EntryType">
            <summary>
            An entry type which is part of a stream being read by a <see cref="T:Sirenix.Serialization.IDataReader"/>.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.Invalid">
            <summary>
            Could not parse entry.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.String">
            <summary>
            Entry is a primitive value of type string or char.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.Guid">
            <summary>
            Entry is a primitive value of type guid.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.Integer">
            <summary>
            Entry is a primitive value of type sbyte, byte, short, ushort, int, uint, long or ulong.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.FloatingPoint">
            <summary>
            Entry is a primitive value of type float, double or decimal.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.Boolean">
            <summary>
            Entry is a primitive boolean value.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.Null">
            <summary>
            Entry is a null value.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.StartOfNode">
            <summary>
            Entry marks the start of a node, IE, a complex type that contains values of its own.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.EndOfNode">
            <summary>
            Entry marks the end of a node, IE, a complex type that contains values of its own.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.InternalReference">
            <summary>
            Entry contains an ID that is a reference to a node defined previously in the stream.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.ExternalReferenceByIndex">
            <summary>
            Entry contains the index of an external object in the DeserializationContext.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.ExternalReferenceByGuid">
            <summary>
            Entry contains the guid of an external object in the DeserializationContext.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.StartOfArray">
            <summary>
            Entry marks the start of an array.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.EndOfArray">
            <summary>
            Entry marks the end of an array.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.PrimitiveArray">
            <summary>
            Entry marks a primitive array.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.EndOfStream">
            <summary>
            Entry indicating that the reader has reached the end of the data stream.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.EntryType.ExternalReferenceByString">
            <summary>
            Entry contains the string id of an external object in the DeserializationContext.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.ExcludeDataFromInspectorAttribute">
            <summary>
            <para>
            Causes Odin's inspector to completely ignore a given member, preventing it from even being included in an Odin PropertyTree,
            and such will not cause any performance hits in the inspector.
            </para>
            <para>Note that Odin can still serialize an excluded member - it is merely ignored in the inspector itself.</para>
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.FormatterUtilities">
            <summary>
            Provides an array of utility methods which are commonly used by serialization formatters.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.GetSerializableMembersMap(System.Type,Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Gets a map of all serializable members on the given type. This will also properly map names extracted from <see cref="T:UnityEngine.Serialization.FormerlySerializedAsAttribute"/> and <see cref="T:Sirenix.Serialization.PreviouslySerializedAsAttribute"/> to their corresponding members.
            </summary>
            <param name="type">The type to get a map for.</param>
            <param name="policy">The serialization policy to use. If null, <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/> is used.</param>
            <returns>A map of all serializable members on the given type.</returns>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.GetSerializableMembers(System.Type,Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Gets an array of all serializable members on the given type.
            </summary>
            <param name="type">The type to get serializable members for.</param>
            <param name="policy">The serialization policy to use. If null, <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/> is used.</param>
            <returns>An array of all serializable members on the given type.</returns>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.CreateUnityNull(System.Type,System.Type)">
            <summary>
            Creates a fake Unity null value of a given type, for the given <see cref="T:UnityEngine.Object"/>-derived owning type.
            <para />
            Unity uses these kinds of values to indicate missing object references.
            </summary>
            <param name="nullType">Type of the null value.</param>
            <param name="owningType">Type of the owning value. This is the value which changes the <see cref="T:UnityEngine.MissingReferenceException"/> which you get.</param>
            <returns>A fake Unity null value of a given type.</returns>
            <exception cref="T:System.ArgumentNullException">The nullType or owningType parameter is null.</exception>
            <exception cref="T:System.ArgumentException">
            The type given in the nullType parameter is not a Unity object.
            or
            The type given in the owningType parameter is not a Unity object.
            </exception>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveType(System.Type)">
            <summary>
            Determines whether a given type is a primitive type to the serialization system.
            <para />
            The following criteria are checked: type.IsPrimitive or type.IsEnum, or type is a <see cref="T:System.Decimal"/>, <see cref="T:System.String"/> or <see cref="T:System.Guid"/>.
            </summary>
            <param name="type">The type to check.</param>
            <returns><c>true</c> if the given type is a primitive type; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveArrayType(System.Type)">
            <summary>
            Determines whether a given type is a primitive array type. Namely, arrays with primitive array types as elements are primitive arrays.
            <para />
            The following types are primitive array types: <see cref="T:System.Char"/>, <see cref="T:System.SByte"/>, <see cref="T:System.Int16"/>, <see cref="T:System.Int32"/>, <see cref="T:System.Int64"/>, <see cref="T:System.Byte"/>, <see cref="T:System.UInt16"/>, <see cref="T:System.UInt32"/>, <see cref="T:System.UInt64"/>, <see cref="T:System.Decimal"/>, <see cref="T:System.Boolean"/>, <see cref="T:System.Single"/>, <see cref="T:System.Double"/> and <see cref="T:System.Guid"/>.
            </summary>
            <param name="type">The type to check.</param>
            <returns><c>true</c> if the given type is a primitive array type; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.GetContainedType(System.Reflection.MemberInfo)">
            <summary>
            Gets the type contained in the given <see cref="T:System.Reflection.MemberInfo"/>. Currently only <see cref="T:System.Reflection.FieldInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/> is supported.
            </summary>
            <param name="member">The <see cref="T:System.Reflection.MemberInfo"/> to get the contained type of.</param>
            <returns>The type contained in the given <see cref="T:System.Reflection.MemberInfo"/>.</returns>
            <exception cref="T:System.ArgumentException">Can't get the contained type of the given <see cref="T:System.Reflection.MemberInfo"/> type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.GetMemberValue(System.Reflection.MemberInfo,System.Object)">
            <summary>
            Gets the value contained in a given <see cref="T:System.Reflection.MemberInfo"/>. Currently only <see cref="T:System.Reflection.FieldInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/> is supported.
            </summary>
            <param name="member">The <see cref="T:System.Reflection.MemberInfo"/> to get the value of.</param>
            <param name="obj">The instance to get the value from.</param>
            <returns>The value contained in the given <see cref="T:System.Reflection.MemberInfo"/>.</returns>
            <exception cref="T:System.ArgumentException">Can't get the value of the given <see cref="T:System.Reflection.MemberInfo"/> type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.SetMemberValue(System.Reflection.MemberInfo,System.Object,System.Object)">
            <summary>
            Sets the value of a given MemberInfo. Currently only <see cref="T:System.Reflection.FieldInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/> is supported.
            </summary>
            <param name="member">The <see cref="T:System.Reflection.MemberInfo"/> to set the value of.</param>
            <param name="obj">The object to set the value on.</param>
            <param name="value">The value to set.</param>
            <exception cref="T:System.ArgumentException">
            Property has no setter
            or
            Can't set the value of the given <see cref="T:System.Reflection.MemberInfo"/> type.
            </exception>
        </member>
        <member name="M:Sirenix.Serialization.FormatterUtilities.GetPrivateMemberAlias(System.Reflection.MemberInfo,System.String,System.String)">
            <summary>
            Gets an aliased version of a member, with the declaring type name included in the member name, so that there are no conflicts with private fields and properties with the same name in different classes in the same inheritance hierarchy.
            <para/>
            Marked internal in Odin because this method MUST NOT BE CALLED FROM ODIN'S INSPECTOR CODE.
            Odin has its own version of this, and there must be no conflict. These aliases must not be
            mixed into Odin's own. Use InspectorPropertyInfoUtility.GetPrivateMemberAlias instead.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.IExternalGuidReferenceResolver">
            <summary>
            Resolves external guid references to reference objects during serialization and deserialization.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.IExternalGuidReferenceResolver.NextResolver">
            <summary>
            Gets or sets the next resolver in the chain.
            </summary>
            <value>
            The next resolver in the chain.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.IExternalGuidReferenceResolver.TryResolveReference(System.Guid,System.Object@)">
            <summary>
            Tries to resolve a reference from a given Guid.
            </summary>
            <param name="guid">The Guid to resolve.</param>
            <param name="value">The resolved value.</param>
            <returns><c>true</c> if the value was resolved; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.IExternalGuidReferenceResolver.CanReference(System.Object,System.Guid@)">
            <summary>
            Determines whether this resolver can reference the specified value with a Guid.
            </summary>
            <param name="value">The value to check.</param>
            <param name="guid">The Guid which references the value.</param>
            <returns><c>true</c> if the value can be referenced; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:Sirenix.Serialization.IExternalIndexReferenceResolver">
            <summary>
            Resolves external index references to reference objects during serialization and deserialization.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IExternalIndexReferenceResolver.TryResolveReference(System.Int32,System.Object@)">
            <summary>
            Tries to resolve the given reference index to a reference value.
            </summary>
            <param name="index">The index to resolve.</param>
            <param name="value">The resolved value.</param>
            <returns><c>true</c> if the index could be resolved to a value, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.IExternalIndexReferenceResolver.CanReference(System.Object,System.Int32@)">
            <summary>
            Determines whether the specified value can be referenced externally via this resolver.
            </summary>
            <param name="value">The value to reference.</param>
            <param name="index">The index of the resolved value, if it can be referenced.</param>
            <returns><c>true</c> if the reference can be resolved, otherwise <c>false</c>.</returns>
        </member>
        <member name="T:Sirenix.Serialization.IExternalStringReferenceResolver">
            <summary>
            Resolves external strings references to reference objects during serialization and deserialization.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.IExternalStringReferenceResolver.NextResolver">
            <summary>
            Gets or sets the next resolver in the chain.
            </summary>
            <value>
            The next resolver in the chain.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.IExternalStringReferenceResolver.TryResolveReference(System.String,System.Object@)">
            <summary>
            Tries to resolve a reference from a given Guid.
            </summary>
            <param name="id">The <see cref="T:System.String"/> to resolve.</param>
            <param name="value">The resolved value.</param>
            <returns><c>true</c> if the value was resolved; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.IExternalStringReferenceResolver.CanReference(System.Object,System.String@)">
            <summary>
            Determines whether this resolver can reference the specified value with a string.
            </summary>
            <param name="value">The value to check.</param>
            <param name="id">The string which references the value.</param>
            <returns><c>true</c> if the value can be referenced; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:Sirenix.Serialization.ISelfFormatter">
            <summary>
            Specifies that a type is capable of serializing itself using an <see cref="T:Sirenix.Serialization.IDataWriter"/> and an
            <see cref="T:Sirenix.Serialization.IDataReader"/>.
            <para />
            The deserialized type instance will be created without a constructor call using the
            <see cref="M:System.Runtime.Serialization.FormatterServices.GetUninitializedObject(System.Type)"/>
            method if it is a reference type, otherwise it will be created using default(type).
            <para />
            Use <see cref="T:Sirenix.Serialization.AlwaysFormatsSelfAttribute"/> to specify that a class which implements this
            interface should *always* format itself regardless of other formatters being specified.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.ISelfFormatter.Serialize(Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes the instance's data using the given writer.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.ISelfFormatter.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes data into the instance using the given reader.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.ISerializationPolicy">
            <summary>
            Defines which members to serialize and deserialize when there aren't any custom formatters for a type.
            Usually, it governs the behaviour of the <see cref="T:Sirenix.Serialization.FormatterEmitter"/> and <see cref="T:Sirenix.Serialization.ReflectionFormatter`1"/> classes.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.ISerializationPolicy.ID">
            <summary>
            Gets the identifier of the policy. This can be stored in the serialization metadata, so the policy used to serialize can be recovered upon deserialization without knowing the policy ahead of time. This ID should preferably be unique.
            </summary>
            <value>
            The identifier of the policy.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.ISerializationPolicy.AllowNonSerializableTypes">
            <summary>
            Gets a value indicating whether to allow non serializable types. (Types which are not decorated with <see cref="T:System.SerializableAttribute"/>.)
            </summary>
            <value>
            <c>true</c> if serializable types are allowed; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.ISerializationPolicy.ShouldSerializeMember(System.Reflection.MemberInfo)">
            <summary>
            Gets a value indicating whether a given <see cref="T:System.Reflection.MemberInfo"/> should be serialized or not.
            </summary>
            <param name="member">The member to check.</param>
            <returns><c>true</c> if the given member should be serialized, otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:Sirenix.Serialization.NodeInfo">
            <summary>
            Contains information about a node during deserialization and serialization.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.NodeInfo.Empty">
            <summary>
            An empty node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.NodeInfo.Name">
            <summary>
            The name of the node.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.NodeInfo.Id">
            <summary>
            The id of the node, or -1 if the node has no id.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.NodeInfo.Type">
            <summary>
            The type of the node, or null if the node has no type metadata.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.NodeInfo.IsArray">
            <summary>
            Whether the node is an array or not.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.NodeInfo.IsEmpty">
            <summary>
            Whether the node is an empty node.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.NodeInfo.#ctor(System.String,System.Int32,System.Type,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.NodeInfo"/> struct.
            </summary>
            <param name="name">The name of the node.</param>
            <param name="id">The id of the node.</param>
            <param name="type">The type of the node.</param>
            <param name="isArray">If set to <c>true</c> the node is an array node.</param>
        </member>
        <member name="M:Sirenix.Serialization.NodeInfo.op_Equality(Sirenix.Serialization.NodeInfo,Sirenix.Serialization.NodeInfo)">
            <summary>
            Implements the operator == between <see cref="T:Sirenix.Serialization.NodeInfo"/> and <see cref="T:Sirenix.Serialization.NodeInfo"/>.
            </summary>
            <param name="a">The first <see cref="T:Sirenix.Serialization.NodeInfo"/>.</param>
            <param name="b">The second <see cref="T:Sirenix.Serialization.NodeInfo"/>.</param>
            <returns>
            <c>true</c> if the nodes were equal; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.NodeInfo.op_Inequality(Sirenix.Serialization.NodeInfo,Sirenix.Serialization.NodeInfo)">
            <summary>
            Implements the operator != between <see cref="T:Sirenix.Serialization.NodeInfo"/> and <see cref="T:Sirenix.Serialization.NodeInfo"/>.
            </summary>
            <param name="a">The first <see cref="T:Sirenix.Serialization.NodeInfo"/>.</param>
            <param name="b">The second <see cref="T:Sirenix.Serialization.NodeInfo"/>.</param>
            <returns>
            <c>true</c> if the nodes were not equal; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.NodeInfo.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object" />, is equal to this instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this instance.</param>
            <returns>
              <c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.NodeInfo.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>
            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.OdinSerializeAttribute">
            <summary>
            Indicates that an instance field or auto-property should be serialized by Odin.
            </summary>
            <seealso cref="T:System.Attribute" />
        </member>
        <member name="T:Sirenix.Serialization.PrefabModification">
            <summary>
            An Odin-serialized prefab modification, containing all the information necessary to apply the modification.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.ModificationType">
            <summary>
            The type of modification to be made.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.Path">
            <summary>
            The deep reflection path at which to make the modification.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.ReferencePaths">
            <summary>
            A list of all deep reflection paths in the target object where the value referenced by this modification was also located.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.ModifiedValue">
            <summary>
            The modified value to set.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.NewLength">
            <summary>
            The new list length to set.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.DictionaryKeysAdded">
            <summary>
            The dictionary keys to add.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModification.DictionaryKeysRemoved">
            <summary>
            The dictionary keys to remove.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.PrefabModification.Apply(UnityEngine.Object)">
            <summary>
            Applies the modification to the given Object.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.PrefabModificationType">
            <summary>
            Types of prefab modification that can be applied.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModificationType.Value">
            <summary>
            A value has been changed at a given path.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModificationType.ListLength">
            <summary>
            A list length has been changed at a given path.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.PrefabModificationType.Dictionary">
            <summary>
            A dictionary has been changed at a given path.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.PreviouslySerializedAsAttribute">
             <summary>
             Indicates that an instance field or auto-property was previously serialized with a different name, so that values serialized with the old name will be properly deserialized into this member.
            
             This does the same as Unity's FormerlySerializedAs attribute, except it can also be applied to properties.
             </summary>
             <seealso cref="T:System.Attribute" />
        </member>
        <member name="P:Sirenix.Serialization.PreviouslySerializedAsAttribute.Name">
            <summary>
            The former name.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.PreviouslySerializedAsAttribute.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.PreviouslySerializedAsAttribute"/> class.
            </summary>
            <param name="name">The former name.</param>
        </member>
        <member name="T:Sirenix.Serialization.ProperBitConverter">
            <summary>
            Corresponds to the .NET <see cref="T:System.BitConverter"/> class, but works only with buffers and so never allocates garbage.
            <para />
            This class always writes and reads bytes in a little endian format, regardless of system architecture.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.BytesToHexString(System.Byte[],System.Boolean)">
            <summary>
            Converts a byte array into a hexadecimal string.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.HexStringToBytes(System.String)">
            <summary>
            Converts a hexadecimal string into a byte array.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToInt16(System.Byte[],System.Int32)">
            <summary>
            Reads two bytes from a buffer and converts them into a <see cref="T:System.Int16"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToUInt16(System.Byte[],System.Int32)">
            <summary>
            Reads two bytes from a buffer and converts them into a <see cref="T:System.UInt16"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToInt32(System.Byte[],System.Int32)">
            <summary>
            Reads four bytes from a buffer and converts them into an <see cref="T:System.Int32"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToUInt32(System.Byte[],System.Int32)">
            <summary>
            Reads four bytes from a buffer and converts them into an <see cref="T:System.UInt32"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToInt64(System.Byte[],System.Int32)">
            <summary>
            Reads eight bytes from a buffer and converts them into a <see cref="T:System.Int64"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToUInt64(System.Byte[],System.Int32)">
            <summary>
            Reads eight bytes from a buffer and converts them into an <see cref="T:System.UInt64"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToSingle(System.Byte[],System.Int32)">
            <summary>
            Reads four bytes from a buffer and converts them into an <see cref="T:System.Single"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToDouble(System.Byte[],System.Int32)">
            <summary>
            Reads eight bytes from a buffer and converts them into an <see cref="T:System.Double"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToDecimal(System.Byte[],System.Int32)">
            <summary>
            Reads sixteen bytes from a buffer and converts them into a <see cref="T:System.Decimal"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.ToGuid(System.Byte[],System.Int32)">
            <summary>
            Reads sixteen bytes from a buffer and converts them into a <see cref="T:System.Guid"/> value.
            </summary>
            <param name="buffer">The buffer to read from.</param>
            <param name="index">The index to start reading at.</param>
            <returns>The converted value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Int16)">
            <summary>
            Turns a <see cref="T:System.Int16"/> value into two bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.UInt16)">
            <summary>
            Turns an <see cref="T:System.UInt16"/> value into two bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Turns an <see cref="T:System.Int32"/> value into four bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.UInt32)">
            <summary>
            Turns an <see cref="T:System.UInt32"/> value into four bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Int64)">
            <summary>
            Turns a <see cref="T:System.Int64"/> value into eight bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.UInt64)">
            <summary>
            Turns an <see cref="T:System.UInt64"/> value into eight bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Single)">
            <summary>
            Turns a <see cref="T:System.Single"/> value into four bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Double)">
            <summary>
            Turns a <see cref="T:System.Double"/> value into eight bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Decimal)">
            <summary>
            Turns a <see cref="T:System.Decimal"/> value into sixteen bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:Sirenix.Serialization.ProperBitConverter.GetBytes(System.Byte[],System.Int32,System.Guid)">
            <summary>
            Turns a <see cref="T:System.Guid"/> value into sixteen bytes and writes those bytes to a given buffer.
            </summary>
            <param name="buffer">The buffer to write to.</param>
            <param name="index">The index to start writing at.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="T:Sirenix.Serialization.SerializationAbortException">
            <summary>
            An exception thrown when the serialization system has encountered an issue so severe that serialization is being aborted. If this exception is caught in the serialization system somewhere, it should be rethrown.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationAbortException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="!:SerializationException"/> class.
            </summary>
            <param name="message">The message.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationAbortException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="!:SerializationException"/> class.
            </summary>
            <param name="message">The message.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:Sirenix.Serialization.SerializationConfig">
            <summary>
            Defines the configuration during serialization and deserialization. This class is thread-safe.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationConfig.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.SerializationConfig"/> class.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationConfig.AllowDeserializeInvalidData">
            <summary>
            <para>
            Setting this member to true indicates that in the case where, when expecting to deserialize an instance of a certain type, 
            but encountering an incompatible, uncastable type in the data being read, the serializer should attempt to deserialize an 
            instance of the expected type using the stored, possibly invalid data.
            </para>
            <para>
            This is equivalent to applying the <see cref="F:Sirenix.Serialization.SerializationConfig.AllowDeserializeInvalidData"/> attribute, except global 
            instead of specific to a single type. Note that if this member is set to false, individual types may still be deserialized
            with invalid data if they are decorated with the <see cref="F:Sirenix.Serialization.SerializationConfig.AllowDeserializeInvalidData"/> attribute.
            </para>
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationConfig.SerializationPolicy">
            <summary>
            Gets or sets the serialization policy. This value is never null; if set to null, it will default to <see cref="P:Sirenix.Serialization.SerializationPolicies.Unity"/>.
            </summary>
            <value>
            The serialization policy.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationConfig.DebugContext">
            <summary>
            Gets or sets the debug context. This value is never null; if set to null, a new default instance of <see cref="P:Sirenix.Serialization.SerializationConfig.DebugContext"/> will be created upon the next get.
            </summary>
            <value>
            The debug context.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.SerializationConfig.ResetToDefault">
            <summary>
            Resets the configuration to a default configuration, as if the constructor had just been called.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.DebugContext">
            <summary>
            Defines a context for debugging and logging during serialization and deserialization. This class is thread-safe.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.DebugContext.Logger">
            <summary>
            The logger to use for logging messages.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.DebugContext.LoggingPolicy">
            <summary>
            The logging policy to use.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.DebugContext.ErrorHandlingPolicy">
            <summary>
            The error handling policy to use.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DebugContext.LogWarning(System.String)">
            <summary>
            Log a warning. Depending on the logging policy and error handling policy, this message may be suppressed or result in an exception being thrown.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DebugContext.LogError(System.String)">
            <summary>
            Log an error. Depending on the logging policy and error handling policy, this message may be suppressed or result in an exception being thrown.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DebugContext.LogException(System.Exception)">
            <summary>
            Log an exception. Depending on the logging policy and error handling policy, this message may be suppressed or result in an exception being thrown.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializationContext">
            <summary>
            The context of a given serialization session. This class maintains all internal and external references during serialization.
            </summary>
            <seealso cref="T:Sirenix.Serialization.Utilities.ICacheNotificationReceiver" />
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.SerializationContext"/> class.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.#ctor(System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.SerializationContext"/> class.
            </summary>
            <param name="context">The streaming context to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.#ctor(System.Runtime.Serialization.FormatterConverter)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.SerializationContext"/> class.
            </summary>
            <param name="formatterConverter">The formatter converter to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.#ctor(System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.FormatterConverter)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.SerializationContext"/> class.
            </summary>
            <param name="context">The streaming context to use.</param>
            <param name="formatterConverter">The formatter converter to use.</param>
            <exception cref="T:System.ArgumentNullException">The formatterConverter parameter is null.</exception>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.Binder">
            <summary>
            Gets or sets the context's type binder.
            </summary>
            <value>
            The context's serialization binder.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.StreamingContext">
            <summary>
            Gets the streaming context.
            </summary>
            <value>
            The streaming context.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.FormatterConverter">
            <summary>
            Gets the formatter converter.
            </summary>
            <value>
            The formatter converter.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.IndexReferenceResolver">
            <summary>
            Gets or sets the index reference resolver.
            </summary>
            <value>
            The index reference resolver.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.StringReferenceResolver">
            <summary>
            Gets or sets the string reference resolver.
            </summary>
            <value>
            The string reference resolver.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.GuidReferenceResolver">
            <summary>
            Gets or sets the Guid reference resolver.
            </summary>
            <value>
            The Guid reference resolver.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.SerializationContext.Config">
            <summary>
            Gets or sets the serialization configuration.
            </summary>
            <value>
            The serialization configuration.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.TryGetInternalReferenceId(System.Object,System.Int32@)">
            <summary>
            Tries to get the id of an internally referenced object.
            </summary>
            <param name="reference">The reference to get the id of.</param>
            <param name="id">The id that was found, or -1 if no id was found.</param>
            <returns><c>true</c> if a reference was found, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.TryRegisterInternalReference(System.Object,System.Int32@)">
            <summary>
            Tries to register an internal reference. Returns <c>true</c> if the reference was registered, otherwise, <c>false</c> when the reference has already been registered.
            </summary>
            <param name="reference">The reference to register.</param>
            <param name="id">The id of the registered reference.</param>
            <returns><c>true</c> if the reference was registered, otherwise, <c>false</c> when the reference has already been registered.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.TryRegisterExternalReference(System.Object,System.Int32@)">
            <summary>
            Tries to register an external index reference.
            </summary>
            <param name="obj">The object to reference.</param>
            <param name="index">The index of the referenced object.</param>
            <returns><c>true</c> if the object could be referenced by index; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.TryRegisterExternalReference(System.Object,System.Guid@)">
            <summary>
            Tries to register an external guid reference.
            </summary>
            <param name="obj">The object to reference.</param>
            <param name="guid">The guid of the referenced object.</param>
            <returns><c>true</c> if the object could be referenced by guid; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.TryRegisterExternalReference(System.Object,System.String@)">
            <summary>
            Tries to register an external string reference.
            </summary>
            <param name="obj">The object to reference.</param>
            <param name="id">The id string of the referenced object.</param>
            <returns><c>true</c> if the object could be referenced by string; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.ResetInternalReferences">
            <summary>
            Resets the context's internal reference map.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationContext.ResetToDefault">
            <summary>
            Resets the serialization context completely to baseline status, as if its constructor has just been called.
            This allows complete reuse of a serialization context, with all of its internal reference buffers.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializationPolicies">
            <summary>
            Contains a set of default implementations of the <see cref="T:Sirenix.Serialization.ISerializationPolicy"/> interface.
            <para />
            NOTE: Policies are not necessarily compatible with each other in intuitive ways.
            Data serialized with the <see cref="P:Sirenix.Serialization.SerializationPolicies.Everything"/> policy
            will for example fail to deserialize auto-properties with <see cref="P:Sirenix.Serialization.SerializationPolicies.Strict"/>,
            even if only strict data is needed.
            It is best to ensure that you always use the same policy for serialization and deserialization.
            <para />
            This class and all of its policies are thread-safe.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationPolicies.TryGetByID(System.String,Sirenix.Serialization.ISerializationPolicy@)">
            <summary>
            Tries to get a serialization policy by its id, in case a serialization graph has the policy used for serialization stored by name.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationPolicies.Everything">
            <summary>
            All fields not marked with <see cref="T:System.NonSerializedAttribute"/> are serialized. If a field is marked with both <see cref="T:System.NonSerializedAttribute"/> and <see cref="T:Sirenix.Serialization.OdinSerializeAttribute"/>, then the field will be serialized.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationPolicies.Unity">
            <summary>
            Public fields, as well as fields or auto-properties marked with <see cref="T:UnityEngine.SerializeField"/> or <see cref="T:Sirenix.Serialization.OdinSerializeAttribute"/> and not marked with <see cref="T:System.NonSerializedAttribute"/>, are serialized.
            <para />
            There are two exceptions:
            <para/>1) All fields in tuples, as well as in private nested types marked as compiler generated (e.g. lambda capture classes) are also serialized.
            <para/>2) Virtual auto-properties are never serialized. Note that properties specified by an implemented interface are automatically marked virtual by the compiler.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationPolicies.Strict">
            <summary>
            Only fields and auto-properties marked with <see cref="T:UnityEngine.SerializeField"/> or <see cref="T:Sirenix.Serialization.OdinSerializeAttribute"/> and not marked with <see cref="T:System.NonSerializedAttribute"/> are serialized.
            <para />
            There are two exceptions:
            <para/>1) All fields in private nested types marked as compiler generated (e.g. lambda capture classes) are also serialized.
            <para/>2) Virtual auto-properties are never serialized. Note that properties specified by an implemented interface are automatically marked virtual by the compiler.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializationUtility">
            <summary>
            Provides an array of utility wrapper methods for easy serialization and deserialization of objects of any type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.CreateWriter(System.IO.Stream,Sirenix.Serialization.SerializationContext,Sirenix.Serialization.DataFormat)">
            <summary>
            Creates an <see cref="T:Sirenix.Serialization.IDataWriter" /> for a given format.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="context">The serialization context to use.</param>
            <param name="format">The format to write.</param>
            <returns>
            An <see cref="T:Sirenix.Serialization.IDataWriter" /> for a given format.
            </returns>
            <exception cref="T:System.NotImplementedException"></exception>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.CreateReader(System.IO.Stream,Sirenix.Serialization.DeserializationContext,Sirenix.Serialization.DataFormat)">
            <summary>
            Creates an <see cref="T:Sirenix.Serialization.IDataReader" /> for a given format.
            </summary>
            <param name="stream">The stream to read from.</param>
            <param name="context">The deserialization context to use.</param>
            <param name="format">The format to read.</param>
            <returns>
            An <see cref="T:Sirenix.Serialization.IDataReader" /> for a given format.
            </returns>
            <exception cref="T:System.NotImplementedException"></exception>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValueWeak(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes the given value using the given writer.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValueWeak(System.Object,Sirenix.Serialization.IDataWriter,System.Collections.Generic.List{UnityEngine.Object}@)">
            <summary>
            Serializes the given value, using the given writer.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
            <param name="unityObjects">A list of the Unity objects which were referenced during serialization.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValue``1(``0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Serializes the given value using the given writer.
            </summary>
            <typeparam name="T">The type of the value to serialize.</typeparam>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValue``1(``0,Sirenix.Serialization.IDataWriter,System.Collections.Generic.List{UnityEngine.Object}@)">
            <summary>
            Serializes the given value, using the given writer.
            </summary>
            <typeparam name="T">The type of the value to serialize.</typeparam>
            <param name="value">The value to serialize.</param>
            <param name="writer">The writer to use.</param>
            <param name="unityObjects">A list of the Unity objects which were referenced during serialization.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValueWeak(System.Object,System.IO.Stream,Sirenix.Serialization.DataFormat,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value to a given stream in the specified format.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="stream">The stream to serialize to.</param>
            <param name="format">The format to serialize in.</param>
            <param name="context">The context.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValueWeak(System.Object,System.IO.Stream,Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value to a given stream in the specified format.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="stream">The stream to serialize to.</param>
            <param name="format">The format to serialize in.</param>
            <param name="unityObjects">A list of the Unity objects which were referenced during serialization.</param>
            <param name="context">The context.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValue``1(``0,System.IO.Stream,Sirenix.Serialization.DataFormat,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value to a given stream in the specified format.
            </summary>
            <typeparam name="T">The type of the value to serialize.</typeparam>
            <param name="value">The value to serialize.</param>
            <param name="stream">The stream to serialize to.</param>
            <param name="format">The format to serialize in.</param>
            <param name="context">The context.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValue``1(``0,System.IO.Stream,Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value to a given stream in the specified format.
            </summary>
            <typeparam name="T">The type of the value to serialize.</typeparam>
            <param name="value">The value to serialize.</param>
            <param name="stream">The stream to serialize to.</param>
            <param name="format">The format to serialize in.</param>
            <param name="unityObjects">A list of the Unity objects which were referenced during serialization.</param>
            <param name="context">The context.</param>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValueWeak(System.Object,Sirenix.Serialization.DataFormat,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value using the specified format, and returns the result as a byte array.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="format">The format to use.</param>
            <param name="context">The context.</param>
            <returns>A byte array containing the serialized value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValueWeak(System.Object,Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object}@)">
            <summary>
            Serializes the given value using the specified format, and returns the result as a byte array.
            </summary>
            <param name="value">The value to serialize.</param>
            <param name="format">The format to use.</param>
            <param name="unityObjects">A list of the Unity objects which were referenced during serialization.</param>
            <returns>A byte array containing the serialized value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValue``1(``0,Sirenix.Serialization.DataFormat,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value using the specified format, and returns the result as a byte array.
            </summary>
            <typeparam name="T">The type of the value to serialize.</typeparam>
            <param name="value">The value to serialize.</param>
            <param name="format">The format to use.</param>
            <param name="context">The context to use.</param>
            <returns>A byte array containing the serialized value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.SerializeValue``1(``0,Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.SerializationContext)">
            <summary>
            Serializes the given value using the specified format and returns the result as a byte array.
            </summary>
            <typeparam name="T">The type of the value to serialize.</typeparam>
            <param name="value">The value to serialize.</param>
            <param name="format">The format to use.</param>
            <param name="unityObjects">A list of the Unity objects which were referenced during serialization.</param>
            <param name="context">The context to use.</param>
            <returns>A byte array containing the serialized value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValueWeak(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value from the given reader. This might fail with primitive values, as they don't come with metadata.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>The deserialized value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValueWeak(Sirenix.Serialization.IDataReader,System.Collections.Generic.List{UnityEngine.Object})">
            <summary>
            Deserializes a value from the given reader, using the given list of Unity objects for external index reference resolution. This might fail with primitive values, as they don't come with type metadata.
            </summary>
            <param name="reader">The reader to use.</param>
            <param name="referencedUnityObjects">The list of Unity objects to use for external index reference resolution.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValue``1(Sirenix.Serialization.IDataReader)">
            <summary>
            Deserializes a value from the given reader.
            </summary>
            <typeparam name="T">The type to deserialize.</typeparam>
            <param name="reader">The reader to use.</param>
            <returns>The deserialized value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValue``1(Sirenix.Serialization.IDataReader,System.Collections.Generic.List{UnityEngine.Object})">
            <summary>
            Deserializes a value of a given type from the given reader, using the given list of Unity objects for external index reference resolution.
            </summary>
            <typeparam name="T">The type to deserialize.</typeparam>
            <param name="reader">The reader to use.</param>
            <param name="referencedUnityObjects">The list of Unity objects to use for external index reference resolution.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValueWeak(System.IO.Stream,Sirenix.Serialization.DataFormat,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value from the given stream in the given format. This might fail with primitive values, as they don't come with type metadata.
            </summary>
            <param name="stream">The reader to use.</param>
            <param name="format">The format to read.</param>
            <param name="context">The context.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValueWeak(System.IO.Stream,Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object},Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value from the given stream in the given format, using the given list of Unity objects for external index reference resolution. This might fail with primitive values, as they don't come with type metadata.
            </summary>
            <param name="stream">The stream to read from.</param>
            <param name="format">The format to read.</param>
            <param name="referencedUnityObjects">The list of Unity objects to use for external index reference resolution.</param>
            <param name="context">The context.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValue``1(System.IO.Stream,Sirenix.Serialization.DataFormat,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value of a given type from the given stream in the given format.
            </summary>
            <typeparam name="T">The type to deserialize.</typeparam>
            <param name="stream">The stream to read from.</param>
            <param name="format">The format to read.</param>
            <param name="context">The context.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValue``1(System.IO.Stream,Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object},Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value of a given type from the given stream in the given format, using the given list of Unity objects for external index reference resolution.
            </summary>
            <typeparam name="T">The type to deserialize.</typeparam>
            <param name="stream">The stream to read from.</param>
            <param name="format">The format to read.</param>
            <param name="referencedUnityObjects">The list of Unity objects to use for external index reference resolution.</param>
            <param name="context">The context.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValueWeak(System.Byte[],Sirenix.Serialization.DataFormat,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value from the given byte array in the given format. This might fail with primitive values, as they don't come with type metadata.
            </summary>
            <param name="bytes">The bytes to deserialize from.</param>
            <param name="format">The format to read.</param>
            <param name="context">The context.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValueWeak(System.Byte[],Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object})">
            <summary>
            Deserializes a value from the given byte array in the given format, using the given list of Unity objects for external index reference resolution. This might fail with primitive values, as they don't come with type metadata.
            </summary>
            <param name="bytes">The bytes to deserialize from.</param>
            <param name="format">The format to read.</param>
            <param name="referencedUnityObjects">The list of Unity objects to use for external index reference resolution.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValue``1(System.Byte[],Sirenix.Serialization.DataFormat,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value of a given type from the given byte array in the given format.
            </summary>
            <typeparam name="T">The type to deserialize.</typeparam>
            <param name="bytes">The bytes to deserialize from.</param>
            <param name="format">The format to read.</param>
            <param name="context">The context to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.DeserializeValue``1(System.Byte[],Sirenix.Serialization.DataFormat,System.Collections.Generic.List{UnityEngine.Object},Sirenix.Serialization.DeserializationContext)">
            <summary>
            Deserializes a value of a given type from the given byte array in the given format, using the given list of Unity objects for external index reference resolution.
            </summary>
            <typeparam name="T">The type to deserialize.</typeparam>
            <param name="bytes">The bytes to deserialize from.</param>
            <param name="format">The format to read.</param>
            <param name="referencedUnityObjects">The list of Unity objects to use for external index reference resolution.</param>
            <param name="context">The context to use.</param>
            <returns>
            The deserialized value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SerializationUtility.CreateCopy(System.Object)">
            <summary>
            Creates a deep copy of an object. Returns null if null. All Unity objects references will remain the same - they will not get copied.
            Similarly, strings are not copied, nor are reflection types such as System.Type, or types derived from System.Reflection.MemberInfo,
            System.Reflection.Assembly or System.Reflection.Module.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.TwoWaySerializationBinder">
            <summary>
            Binds types to strings during serialization, and strings to types during deserialization.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.TwoWaySerializationBinder.Default">
            <summary>
            Provides a default, catch-all <see cref="T:Sirenix.Serialization.TwoWaySerializationBinder"/> implementation. This binder only includes assembly names, without versions and tokens, in order to increase compatibility.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.TwoWaySerializationBinder.BindToName(System.Type,Sirenix.Serialization.DebugContext)">
            <summary>
            Bind a type to a name.
            </summary>
            <param name="type">The type to bind.</param>
            <param name="debugContext">The debug context to log to.</param>
            <returns>The name that the type has been bound to.</returns>
        </member>
        <member name="M:Sirenix.Serialization.TwoWaySerializationBinder.BindToType(System.String,Sirenix.Serialization.DebugContext)">
            <summary>
            Binds a name to a type.
            </summary>
            <param name="typeName">The name of the type to bind.</param>
            <param name="debugContext">The debug context to log to.</param>
            <returns>The type that the name has been bound to, or null if the type could not be resolved.</returns>
        </member>
        <member name="M:Sirenix.Serialization.TwoWaySerializationBinder.ContainsType(System.String)">
            <summary>
            Determines whether the specified type name is mapped.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.BooleanSerializer">
            <summary>
            Serializer for the <see cref="T:System.Boolean"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Boolean&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.BooleanSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Boolean" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.BooleanSerializer.WriteValue(System.String,System.Boolean,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Boolean" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.ByteSerializer">
            <summary>
            Serializer for the <see cref="T:System.Byte"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Byte&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.ByteSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Byte" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.ByteSerializer.WriteValue(System.String,System.Byte,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Byte" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.CharSerializer">
            <summary>
            Serializer for the <see cref="T:System.Char"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Char&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.CharSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Char" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.CharSerializer.WriteValue(System.String,System.Char,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Char" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.ComplexTypeSerializer`1">
            <summary>
            Serializer for all complex types; IE, types which are not primitives as determined by the <see cref="M:Sirenix.Serialization.FormatterUtilities.IsPrimitiveType(System.Type)" /> method.
            </summary>
            <typeparam name="T">The type which the <see cref="T:Sirenix.Serialization.ComplexTypeSerializer`1" /> can serialize and deserialize.</typeparam>
            <seealso cref="T:Sirenix.Serialization.Serializer`1" />
        </member>
        <member name="M:Sirenix.Serialization.ComplexTypeSerializer`1.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="!:T" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.ComplexTypeSerializer`1.WriteValue(System.String,`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="!:T" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.DecimalSerializer">
            <summary>
            Serializer for the <see cref="T:System.Decimal"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Decimal&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.DecimalSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Decimal" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.DecimalSerializer.WriteValue(System.String,System.Decimal,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Decimal" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.DoubleSerializer">
            <summary>
            Serializer for the <see cref="T:System.Double"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Double&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.DoubleSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Double" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.DoubleSerializer.WriteValue(System.String,System.Double,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Double" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.EnumSerializer`1">
            <summary>
            Serializer for all enums.
            </summary>
            <typeparam name="T">The type of the enum to serialize and deserialize.</typeparam>
            <seealso cref="T:Sirenix.Serialization.Serializer`1" />
        </member>
        <member name="M:Sirenix.Serialization.EnumSerializer`1.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads an enum value of type <see cref="!:T" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.EnumSerializer`1.WriteValue(System.String,`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes an enum value of type <see cref="!:T" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.GuidSerializer">
            <summary>
            Serializer for the <see cref="T:System.Guid"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Guid&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.GuidSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Guid" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.GuidSerializer.WriteValue(System.String,System.Guid,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Guid" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Int16Serializer">
            <summary>
            Serializer for the <see cref="T:System.Int16"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Int16&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Int16Serializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Int16" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Int16Serializer.WriteValue(System.String,System.Int16,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Int16" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Int32Serializer">
            <summary>
            Serializer for the <see cref="T:System.Int32"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Int32&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Int32Serializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Int32" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Int32Serializer.WriteValue(System.String,System.Int32,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Int32" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Int64Serializer">
            <summary>
            Serializer for the <see cref="T:System.Int64"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Int64&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Int64Serializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Int64" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Int64Serializer.WriteValue(System.String,System.Int64,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Int64" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.IntPtrSerializer">
            <summary>
            Serializer for the <see cref="T:System.IntPtr"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.IntPtr&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.IntPtrSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.IntPtr" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.IntPtrSerializer.WriteValue(System.String,System.IntPtr,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.IntPtr" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.SByteSerializer">
            <summary>
            Serializer for the <see cref="T:System.SByte"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.SByte&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.SByteSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.SByte" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SByteSerializer.WriteValue(System.String,System.SByte,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.SByte" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Serializer">
            <summary>
            Serializes and deserializes a given type, and wraps serialization and deserialization with all the proper calls to free formatters from tedious boilerplate.
            <para />
            Whenever serializing or deserializing anything, it is *strongly recommended* to use <see cref="M:Sirenix.Serialization.Serializer.Get``1"/> to get a proper wrapping serializer for that type.
            <para />
            NOTE: This class should NOT be inherited from; it is hard-coded into the system.
            <para />
            To extend the serialization system, instead create custom formatters, which are used by the <see cref="T:Sirenix.Serialization.ComplexTypeSerializer`1"/> class.
            </summary>
        </member>
        <member name="E:Sirenix.Serialization.Serializer.OnSerializedType">
            <summary>
            Editor-only event that fires whenever a serializer serializes a type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.FireOnSerializedType(System.Type)">
            <summary>
            Fires the <see cref="E:Sirenix.Serialization.Serializer.OnSerializedType"/> event.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.GetForValue(System.Object)">
            <summary>
            Gets a <see cref="T:Sirenix.Serialization.Serializer"/> for the given value. If the value is null, it will be treated as a value of type <see cref="T:System.Object"/>.
            </summary>
            <param name="value">The value to get a <see cref="T:Sirenix.Serialization.Serializer"/> for.</param>
            <returns>A <see cref="T:Sirenix.Serialization.Serializer"/> for the given value.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.Get``1">
            <summary>
            Gets a <see cref="T:Sirenix.Serialization.Serializer"/> for type T.
            </summary>
            <typeparam name="T">The type to get a <see cref="T:Sirenix.Serialization.Serializer"/> for.</typeparam>
            <returns>A <see cref="T:Sirenix.Serialization.Serializer"/> for type T.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.Get(System.Type)">
            <summary>
            Gets a <see cref="T:Sirenix.Serialization.Serializer"/> for the given type.
            </summary>
            <param name="type">The type to get a <see cref="T:Sirenix.Serialization.Serializer"/> for.</param>
            <returns>A <see cref="T:Sirenix.Serialization.Serializer"/> for the given type.</returns>
            <exception cref="T:System.ArgumentNullException">The type argument is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.ReadValueWeak(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value weakly, casting it into object. Use this method if you don't know what type you're going to be working with at compile time.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>The value which has been read.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.WriteValueWeak(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a weakly typed value. Use this method if you don't know what type you're going to be working with at compile time.
            </summary>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Serializer.WriteValueWeak(System.String,System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a weakly typed value with a given name. Use this method if you don't know what type you're going to be working with at compile time.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Serializer`1">
            <summary>
            Serializes and deserializes the type <see cref="!:T"/>, and wraps serialization and deserialization with all the proper calls to free formatters from tedious boilerplate.
            <para />
            Whenever serializing or deserializing anything, it is *strongly recommended* to use <see cref="M:Sirenix.Serialization.Serializer.Get``1"/> to get a proper wrapping serializer for that type.
            <para />
            NOTE: This class should NOT be inherited from; it is hard-coded into the system.
            <para />
            To extend the serialization system, instead create custom formatters, which are used by the <see cref="T:Sirenix.Serialization.ComplexTypeSerializer`1"/> class.
            </summary>
            <typeparam name="T">The type which the <see cref="T:Sirenix.Serialization.Serializer`1"/> can serialize and deserialize.</typeparam>
        </member>
        <member name="M:Sirenix.Serialization.Serializer`1.ReadValueWeak(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="!:T"/> weakly, casting it into object. Use this method if you don't know what type you're going to be working with at compile time.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Serializer`1.WriteValueWeak(System.String,System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a weakly typed value of type <see cref="!:T"/> with a given name. Use this method if you don't know what type you're going to be working with at compile time.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Serializer`1.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="!:T"/>.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Serializer`1.WriteValue(`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="!:T"/>.
            </summary>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Serializer`1.WriteValue(System.String,`0,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="!:T"/> with a given name.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Serializer`1.FireOnSerializedType">
            <summary>
            Fires the <see cref="!:OnSerializedType"/> event with the T generic argument of the serializer.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SingleSerializer">
            <summary>
            Serializer for the <see cref="T:System.Single"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.Single&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.SingleSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.Single" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.SingleSerializer.WriteValue(System.String,System.Single,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.Single" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.StringSerializer">
            <summary>
            Serializer for the <see cref="T:System.String"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.String&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.StringSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.String" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.StringSerializer.WriteValue(System.String,System.String,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.String" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.UInt16Serializer">
            <summary>
            Serializer for the <see cref="T:System.UInt16"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.UInt16&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.UInt16Serializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.UInt16" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.UInt16Serializer.WriteValue(System.String,System.UInt16,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.UInt64" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.UInt32Serializer">
            <summary>
            Serializer for the <see cref="T:System.UInt32"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.UInt32&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.UInt32Serializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.UInt32" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.UInt32Serializer.WriteValue(System.String,System.UInt32,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.UInt32" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.UInt64Serializer">
            <summary>
            Serializer for the <see cref="T:System.UInt64"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.UInt64&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.UInt64Serializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.UInt64" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.UInt64Serializer.WriteValue(System.String,System.UInt64,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.UInt64" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.UIntPtrSerializer">
            <summary>
            Serializer for the <see cref="T:System.UIntPtr"/> type.
            </summary>
            <seealso cref="!:Serializer&lt;System.UIntPtr&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.UIntPtrSerializer.ReadValue(Sirenix.Serialization.IDataReader)">
            <summary>
            Reads a value of type <see cref="T:System.UIntPtr" />.
            </summary>
            <param name="reader">The reader to use.</param>
            <returns>
            The value which has been read.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.UIntPtrSerializer.WriteValue(System.String,System.UIntPtr,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes a value of type <see cref="T:System.UIntPtr" />.
            </summary>
            <param name="name">The name of the value to write.</param>
            <param name="value">The value to write.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Editor.AOTSupportUtilities.ScanProjectForSerializedTypes(System.Collections.Generic.List{System.Type}@,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Collections.Generic.List{System.String},System.Boolean)">
            <summary>
            Scans the project's build scenes and resources, plus their dependencies, for serialized types to support. Progress bars are shown during the scan.
            </summary>
            <param name="serializedTypes">The serialized types to support.</param>
            <param name="scanBuildScenes">Whether to scan the project's build scenes.</param>
            <param name="scanAllAssetBundles">Whether to scan all the project's asset bundles.</param>
            <param name="scanPreloadedAssets">Whether to scan the project's preloaded assets.</param>
            <param name="scanResources">Whether to scan the project's resources.</param>
            <param name="resourcesToScan">An optional list of the resource paths to scan. Only has an effect if the scanResources argument is true. All the resources will be scanned if null.</param>
            <returns>true if the scan succeeded, false if the scan failed or was cancelled</returns>
        </member>
        <member name="M:Sirenix.Serialization.Editor.AOTSupportUtilities.GenerateDLL(System.String,System.String,System.Collections.Generic.List{System.Type},System.Boolean)">
            <summary>
            Generates an AOT DLL, using the given parameters.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.BaseDictionaryKeyPathProvider`1">
            <summary>
            Not yet documented.
            </summary>
            <typeparam name="T">Not yet documented.</typeparam>
        </member>
        <member name="P:Sirenix.Serialization.BaseDictionaryKeyPathProvider`1.ProviderID">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.BaseDictionaryKeyPathProvider`1.GetKeyFromPathString(System.String)">
            <summary>
            Not yet documented.
            </summary>
            <param name="pathStr">Not yet documented.</param>
            <returns>Not yet documented.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDictionaryKeyPathProvider`1.GetPathStringFromKey(`0)">
            <summary>
            Not yet documented.
            </summary>
            <param name="key">Not yet documented.</param>
            <returns>Not yet documented.</returns>
        </member>
        <member name="M:Sirenix.Serialization.BaseDictionaryKeyPathProvider`1.Compare(`0,`0)">
            <summary>
            Not yet documented.
            </summary>
            <param name="x">Not yet documented.</param>
            <param name="y">Not yet documented.</param>
            <returns>Not yet documented.</returns>
        </member>
        <member name="T:Sirenix.Serialization.DictionaryKeyUtility">
            <summary>
            Provides utility methods for handling dictionary keys in the prefab modification system.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.DictionaryKeyUtility.KeyComparer`1">
            <summary>
            A smart comparer for dictionary keys, that uses the most appropriate available comparison method for the given key types.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryKeyUtility.KeyComparer`1.Compare(`0,`0)">
            <summary>
            Not yet documented.
            </summary>
            <param name="x">Not yet documented.</param>
            <param name="y">Not yet documented.</param>
            <returns>Not yet documented.</returns>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryKeyUtility.GetPersistentPathKeyTypes">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryKeyUtility.KeyTypeSupportsPersistentPaths(System.Type)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryKeyUtility.GetDictionaryKeyString(System.Object)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.DictionaryKeyUtility.GetDictionaryKeyValue(System.String,System.Type)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.IDictionaryKeyPathProvider">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.IDictionaryKeyPathProvider.ProviderID">
            <summary>
            Gets the provider identifier.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDictionaryKeyPathProvider.GetPathStringFromKey(System.Object)">
            <summary>
            Gets the path string from key.
            </summary>
            <param name="key">The key.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDictionaryKeyPathProvider.GetKeyFromPathString(System.String)">
            <summary>
            Gets the key from path string.
            </summary>
            <param name="pathStr">The path string.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDictionaryKeyPathProvider.Compare(System.Object,System.Object)">
            <summary>
            Compares the specified x.
            </summary>
            <param name="x">The x.</param>
            <param name="y">The y.</param>
        </member>
        <member name="T:Sirenix.Serialization.IDictionaryKeyPathProvider`1">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IDictionaryKeyPathProvider`1.GetPathStringFromKey(`0)">
            <summary>
            Gets the path string from key.
            </summary>
            <param name="key">The key.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDictionaryKeyPathProvider`1.GetKeyFromPathString(System.String)">
            <summary>
            Gets the key from path string.
            </summary>
            <param name="pathStr">The path string.</param>
        </member>
        <member name="M:Sirenix.Serialization.IDictionaryKeyPathProvider`1.Compare(`0,`0)">
            <summary>
            Compares the specified x.
            </summary>
            <param name="x">The x.</param>
            <param name="y">The y.</param>
        </member>
        <member name="T:Sirenix.Serialization.Vector2DictionaryKeyPathProvider">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Vector2DictionaryKeyPathProvider.ProviderID">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Vector2DictionaryKeyPathProvider.Compare(UnityEngine.Vector2,UnityEngine.Vector2)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Vector2DictionaryKeyPathProvider.GetKeyFromPathString(System.String)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Vector2DictionaryKeyPathProvider.GetPathStringFromKey(UnityEngine.Vector2)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Vector3DictionaryKeyPathProvider">
            <summary>
            Dictionary key path provider for <see cref="T:UnityEngine.Vector3"/>
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.AnimationCurveFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.AnimationCurve"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.AnimationCurve&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.AnimationCurveFormatter.GetUninitializedObject">
            <summary>
            Returns null.
            </summary>
            <returns>
            A null value.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.AnimationCurveFormatter.Read(UnityEngine.AnimationCurve@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.AnimationCurveFormatter.Write(UnityEngine.AnimationCurve@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.BoundsFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Bounds"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Bounds&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.BoundsFormatter.Read(UnityEngine.Bounds@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.BoundsFormatter.Write(UnityEngine.Bounds@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Color32Formatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Color32"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Color32&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Color32Formatter.Read(UnityEngine.Color32@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Color32Formatter.Write(UnityEngine.Color32@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.ColorBlockFormatter`1">
            <summary>
            Custom formatter for the <see cref="!:ColorBlock"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.UI.ColorBlock&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.ColorBlockFormatter`1.Read(`0@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.ColorBlockFormatter`1.Write(`0@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.ColorFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Color"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Color&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.ColorFormatter.Read(UnityEngine.Color@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.ColorFormatter.Write(UnityEngine.Color@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.CoroutineFormatter">
            <summary>
            <para>
            Custom formatter for the <see cref="T:UnityEngine.Coroutine"/> type.
            This serializes nothing and always deserializes null,
            and only exists to ensure that no coroutine instances
            are ever created by the serialization system, since they
            will in almost all cases be invalid instances.
            </para>
            <para>
            Invalid coroutine instances crash Unity instantly when
            they are garbage collected.
            </para>
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.CoroutineFormatter.SerializedType">
            <summary>
            Gets the type that the formatter can serialize.
            </summary>
            <value>
            The type that the formatter can serialize.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.CoroutineFormatter.Sirenix#Serialization#IFormatter#Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Returns null.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CoroutineFormatter.Deserialize(Sirenix.Serialization.IDataReader)">
            <summary>
            Returns null.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CoroutineFormatter.Serialize(System.Object,Sirenix.Serialization.IDataWriter)">
            <summary>
            Does nothing.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.CoroutineFormatter.Serialize(UnityEngine.Coroutine,Sirenix.Serialization.IDataWriter)">
            <summary>
            Does nothing.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.GradientAlphaKeyFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.GradientAlphaKey"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.GradientAlphaKey&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.GradientAlphaKeyFormatter.Read(UnityEngine.GradientAlphaKey@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.GradientAlphaKeyFormatter.Write(UnityEngine.GradientAlphaKey@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.GradientColorKeyFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.GradientColorKey"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.GradientColorKey&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.GradientColorKeyFormatter.Read(UnityEngine.GradientColorKey@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.GradientColorKeyFormatter.Write(UnityEngine.GradientColorKey@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.GradientFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Gradient"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Gradient&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.GradientFormatter.Read(UnityEngine.Gradient@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.GradientFormatter.Write(UnityEngine.Gradient@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.KeyframeFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Keyframe"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Keyframe&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.KeyframeFormatter.Read(UnityEngine.Keyframe@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.KeyframeFormatter.Write(UnityEngine.Keyframe@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.LayerMaskFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.LayerMask"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.LayerMask&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.LayerMaskFormatter.Read(UnityEngine.LayerMask@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.LayerMaskFormatter.Write(UnityEngine.LayerMask@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.QuaternionFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Quaternion"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Quaternion&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.QuaternionFormatter.Read(UnityEngine.Quaternion@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.QuaternionFormatter.Write(UnityEngine.Quaternion@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.RectFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Rect"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Rect&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.RectFormatter.Read(UnityEngine.Rect@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.RectFormatter.Write(UnityEngine.Rect@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.UnityEventFormatter`1">
            <summary>
            Custom generic formatter for the <see cref="T:UnityEngine.Events.UnityEvent`1"/>, <see cref="T:UnityEngine.Events.UnityEvent`2"/>, <see cref="T:UnityEngine.Events.UnityEvent`3"/> and <see cref="T:UnityEngine.Events.UnityEvent`4"/> types.
            </summary>
            <typeparam name="T">The type of UnityEvent that this formatter can serialize and deserialize.</typeparam>
            <seealso cref="!:ReflectionFormatter&lt;UnityEngine.Events.UnityEvent&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.UnityEventFormatter`1.GetUninitializedObject">
            <summary>
            Get an uninitialized object of type <see cref="!:T" />.
            </summary>
            <returns>
            An uninitialized object of type <see cref="!:T" />.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.Vector2Formatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Vector2"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Vector2&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Vector2Formatter.Read(UnityEngine.Vector2@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Vector2Formatter.Write(UnityEngine.Vector2@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Vector3Formatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Vector3"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Vector3&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Vector3Formatter.Read(UnityEngine.Vector3@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Vector3Formatter.Write(UnityEngine.Vector3@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Vector4Formatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Vector4"/> type.
            </summary>
            <seealso cref="!:MinimalBaseFormatter&lt;UnityEngine.Vector4&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Vector4Formatter.Read(UnityEngine.Vector4@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Vector4Formatter.Write(UnityEngine.Vector4@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Vector2IntFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Vector2Int"/> type.
            </summary>
            <seealso cref="!:Sirenix.Serialization.MinimalBaseFormatter&lt;UnityEngine.Vector2Int&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Vector2IntFormatter.Read(UnityEngine.Vector2Int@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Vector2IntFormatter.Write(UnityEngine.Vector2Int@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Vector3IntFormatter">
            <summary>
            Custom formatter for the <see cref="T:UnityEngine.Vector3Int"/> type.
            </summary>
            <seealso cref="!:Sirenix.Serialization.MinimalBaseFormatter&lt;UnityEngine.Vector3Int&gt;" />
        </member>
        <member name="M:Sirenix.Serialization.Vector3IntFormatter.Read(UnityEngine.Vector3Int@,Sirenix.Serialization.IDataReader)">
            <summary>
            Reads into the specified value using the specified reader.
            </summary>
            <param name="value">The value to read into.</param>
            <param name="reader">The reader to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Vector3IntFormatter.Write(UnityEngine.Vector3Int@,Sirenix.Serialization.IDataWriter)">
            <summary>
            Writes from the specified value using the specified writer.
            </summary>
            <param name="value">The value to write from.</param>
            <param name="writer">The writer to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.IOverridesSerializationFormat">
            <summary>
            Indicates that an Odin-serialized Unity object controls its own serialization format. Every time it is serialized, it will be asked which format to use.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.IOverridesSerializationFormat.GetFormatToSerializeAs(System.Boolean)">
            <summary>
            Gets the format to use for serialization.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.IOverridesSerializationPolicy">
            <summary>
            Indicates that an Odin-serialized Unity object provides its own serialization policy rather than using the default policy.
            <para/>
            Note that THE VALUES RETURNED BY THIS INTERFACE WILL OVERRIDE THE PARAMETERS PASSED TO <see cref="M:Sirenix.Serialization.UnitySerializationUtility.SerializeUnityObject(UnityEngine.Object,Sirenix.Serialization.SerializationData@,System.Boolean,Sirenix.Serialization.SerializationContext)"/> and <see cref="M:Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject(UnityEngine.Object,Sirenix.Serialization.SerializationData@,Sirenix.Serialization.DeserializationContext)"/>.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.ISupportsPrefabSerialization">
            <summary>
            Indicates that an Odin-serialized Unity object supports prefab serialization.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.ISupportsPrefabSerialization.SerializationData">
            <summary>
            Gets or sets the serialization data of the object.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.SerializationData">
            <summary>
            Unity serialized data struct that contains all data needed by Odin serialization.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.PrefabModificationsReferencedUnityObjectsFieldName">
            <summary>
            The name of the <see cref="F:Sirenix.Serialization.SerializationData.PrefabModificationsReferencedUnityObjects"/> field.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.PrefabModificationsFieldName">
            <summary>
            The name of the <see cref="F:Sirenix.Serialization.SerializationData.PrefabModifications"/> field.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.PrefabFieldName">
            <summary>
            The name of the <see cref="F:Sirenix.Serialization.SerializationData.Prefab"/> field.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.SerializedFormat">
            <summary>
            The data format used by the serializer. This field will be automatically set to the format specified in the global serialization config
            when the Unity object gets serialized, unless the Unity object implements the <see cref="T:Sirenix.Serialization.IOverridesSerializationFormat"/> interface.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.SerializedBytes">
            <summary>
            The serialized data when serializing with the Binray format.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.ReferencedUnityObjects">
            <summary>
            All serialized Unity references.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationData.HasEditorData">
            <summary>
            Whether the object contains any serialized data.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.SerializationData.ContainsData">
            <summary>
            Gets a value indicating whether the struct contains any data.
            If this is false, then it could mean that Unity has not yet deserialized the struct.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.SerializedBytesString">
            <summary>
            The serialized data when serializing with the JSON format.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.Prefab">
            <summary>
            The reference to the prefab this is only populated in prefab scene instances.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.PrefabModificationsReferencedUnityObjects">
            <summary>
            All serialized Unity references.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.PrefabModifications">
            <summary>
            All Odin serialized prefab modifications.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.SerializationData.SerializationNodes">
            <summary>
            The serialized data when serializing with the Nodes format.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.SerializationData.Reset">
            <summary>
            Resets all data.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.UnityReferenceResolver">
            <summary>
            Resolves external index references to Unity objects.
            </summary>
            <seealso cref="T:Sirenix.Serialization.IExternalIndexReferenceResolver" />
            <seealso cref="T:Sirenix.Serialization.Utilities.ICacheNotificationReceiver" />
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.UnityReferenceResolver"/> class.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.#ctor(System.Collections.Generic.List{UnityEngine.Object})">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.UnityReferenceResolver"/> class with a list of Unity objects.
            </summary>
            <param name="referencedUnityObjects">The referenced Unity objects.</param>
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.GetReferencedUnityObjects">
            <summary>
            Gets the currently referenced Unity objects.
            </summary>
            <returns>A list of the currently referenced Unity objects.</returns>
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.SetReferencedUnityObjects(System.Collections.Generic.List{UnityEngine.Object})">
            <summary>
            Sets the referenced Unity objects of the resolver to a given list, or a new list if the value is null.
            </summary>
            <param name="referencedUnityObjects">The referenced Unity objects to set, or null if a new list is required.</param>
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.CanReference(System.Object,System.Int32@)">
            <summary>
            Determines whether the specified value can be referenced externally via this resolver.
            </summary>
            <param name="value">The value to reference.</param>
            <param name="index">The index of the resolved value, if it can be referenced.</param>
            <returns>
              <c>true</c> if the reference can be resolved, otherwise <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.TryResolveReference(System.Int32,System.Object@)">
            <summary>
            Tries to resolve the given reference index to a reference value.
            </summary>
            <param name="index">The index to resolve.</param>
            <param name="value">The resolved value.</param>
            <returns>
              <c>true</c> if the index could be resolved to a value, otherwise <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.UnityReferenceResolver.Reset">
            <summary>
            Resets this instance.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.UnitySerializationInitializer">
            <summary>
            Utility class which initializes the Sirenix serialization system to be compatible with Unity.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationInitializer.Initialize">
            <summary>
            Initializes the Sirenix serialization system to be compatible with Unity.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.UnitySerializationUtility">
            <summary>
            Provides an array of utility wrapper methods for easy serialization and deserialization of Unity objects of any type.
            Note that, during serialization, it is always assumed that we are running on Unity's main thread. Deserialization can
            happen on any thread, and all API's interacting with deserialization are thread-safe.
            <para />
            Note that setting the IndexReferenceResolver on contexts passed into methods on this class will have no effect, as it will always
            be set to a UnityReferenceResolver.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.UnitySerializationUtility.SBP_ContentPipelineType">
            <summary>
            From the new scriptable build pipeline package
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.PrefabDeserializeUtility.GetSceneObjectsToKeepSet(UnityEngine.Object,System.Boolean)">
            <summary>
            Note: it is assumed that code calling this is holding the DeserializePrefabCaches_LOCK lock, and will continue to hold it while the returned hashset is being modified
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.UnitySerializationUtility.ForceEditorModeSerialization">
            <summary>
            Whether to always force editor mode serialization. This member only exists in the editor.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.GetRegisteredPrefabModifications(UnityEngine.Object)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.OdinWillSerialize(System.Reflection.MemberInfo,System.Boolean,Sirenix.Serialization.ISerializationPolicy)">
            <summary>
            Checks whether Odin will serialize a given member.
            </summary>
            <param name="member">The member to check.</param>
            <param name="serializeUnityFields">Whether to allow serialization of members that will also be serialized by Unity.</param>
            <param name="policy">The policy that Odin should be using for serialization of the given member. If this parameter is null, it defaults to <see cref="P:Sirenix.Serialization.SerializationPolicies.Unity"/>.</param>
            <returns>True if Odin will serialize the member, otherwise false.</returns>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.GuessIfUnityWillSerialize(System.Reflection.MemberInfo)">
            <summary>
            Guesses whether or not Unity will serialize a given member. This is not completely accurate.
            </summary>
            <param name="member">The member to check.</param>
            <returns>True if it is guessed that Unity will serialize the member, otherwise false.</returns>
            <exception cref="T:System.ArgumentNullException">The parameter <paramref name="member"/> is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.GuessIfUnityWillSerialize(System.Type)">
            <summary>
            Guesses whether or not Unity will serialize a given type. This is not completely accurate.
            </summary>
            <param name="type">The type to check.</param>
            <returns>True if it is guessed that Unity will serialize the type, otherwise false.</returns>
            <exception cref="T:System.ArgumentNullException">The parameter <paramref name="type"/> is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.SerializeUnityObject(UnityEngine.Object,Sirenix.Serialization.SerializationData@,System.Boolean,Sirenix.Serialization.SerializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.SerializeUnityObject(UnityEngine.Object,System.String@,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.DataFormat,System.Boolean,Sirenix.Serialization.SerializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.SerializeUnityObject(UnityEngine.Object,System.Byte[]@,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.DataFormat,System.Boolean,Sirenix.Serialization.SerializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.SerializeUnityObject(UnityEngine.Object,Sirenix.Serialization.IDataWriter,System.Boolean)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject(UnityEngine.Object,Sirenix.Serialization.SerializationData@,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject(UnityEngine.Object,System.String@,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.DataFormat,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject(UnityEngine.Object,System.Byte[]@,System.Collections.Generic.List{UnityEngine.Object}@,Sirenix.Serialization.DataFormat,Sirenix.Serialization.DeserializationContext)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject(UnityEngine.Object,Sirenix.Serialization.IDataReader)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.SerializePrefabModifications(System.Collections.Generic.List{Sirenix.Serialization.PrefabModification},System.Collections.Generic.List{UnityEngine.Object}@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.DeserializePrefabModifications(System.Collections.Generic.List{System.String},System.Collections.Generic.List{UnityEngine.Object})">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.RegisterPrefabModificationsChange(UnityEngine.Object,System.Collections.Generic.List{Sirenix.Serialization.PrefabModification})">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.UnitySerializationUtility.CreateDefaultUnityInitializedObject(System.Type)">
            <summary>
            Creates an object with default values initialized in the style of Unity; strings will be "", classes will be instantiated recursively with default values, and so on.
            </summary>
        </member>
        <member name="E:Sirenix.Serialization.UnitySerializationUtility.EditorApplication_delayCall_Alias">
            <summary>
            In 2020.1, Unity changed EditorApplication.delayCall from a field to an event, meaning 
            we now have to use reflection to access it consistently across all versions of Unity.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.FieldInfoExtensions">
            <summary>
            FieldInfo method extensions.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.FieldInfoExtensions.IsAliasField(System.Reflection.FieldInfo)">
            <summary>
            Determines whether the specified field is an alias.
            </summary>
            <param name="fieldInfo">The field to check.</param>
            <returns>
              <c>true</c> if the specified field is an alias; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.FieldInfoExtensions.DeAliasField(System.Reflection.FieldInfo,System.Boolean)">
            <summary>
            Returns the original, backing field of an alias field if the field is an alias.
            </summary>
            <param name="fieldInfo">The field to check.</param>
            /// <param name="throwOnNotAliased">if set to <c>true</c> an exception will be thrown if the field is not aliased.</param>
            <returns></returns>
            <exception cref="T:System.ArgumentException">The field was not aliased; this only occurs if throwOnNotAliased is true.</exception>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.GarbageFreeIterators">
            <summary>
            Garbage free enumerator methods.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.GFIterator``1(System.Collections.Generic.List{``0})">
            <summary>
            Garbage free enumerator for lists.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.GFIterator``2(System.Collections.Generic.Dictionary{``0,``1})">
            <summary>
            Garbage free enumerator for dictionaries.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.GFValueIterator``2(System.Collections.Generic.Dictionary{``0,``1})">
            <summary>
            Garbage free enumator for dictionary values.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.GFIterator``1(System.Collections.Generic.HashSet{``0})">
            <summary>
            Garbage free enumerator for hashsets.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.GarbageFreeIterators.ListIterator`1">
            <summary>
            List iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.ListIterator`1.#ctor(System.Collections.Generic.List{`0})">
            <summary>
            Creates a list iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.ListIterator`1.GetEnumerator">
            <summary>
            Gets the enumerator.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.GarbageFreeIterators.ListIterator`1.Current">
            <summary>
            Gets the current value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.ListIterator`1.MoveNext">
            <summary>
            Moves to the next value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.ListIterator`1.Dispose">
            <summary>
            Disposes the iterator.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.GarbageFreeIterators.HashsetIterator`1">
            <summary>
            Hashset iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.HashsetIterator`1.#ctor(System.Collections.Generic.HashSet{`0})">
            <summary>
            Creates a hashset iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.HashsetIterator`1.GetEnumerator">
            <summary>
            Gets the enumerator.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.GarbageFreeIterators.HashsetIterator`1.Current">
            <summary>
            Gets the current value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.HashsetIterator`1.MoveNext">
            <summary>
            Moves to the next value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.HashsetIterator`1.Dispose">
            <summary>
            Disposes the iterator.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryIterator`2">
            <summary>
            Dictionary iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryIterator`2.#ctor(System.Collections.Generic.Dictionary{`0,`1})">
            <summary>
            Creates a dictionary iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryIterator`2.GetEnumerator">
            <summary>
            Gets the enumerator.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryIterator`2.Current">
            <summary>
            Gets the current value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryIterator`2.MoveNext">
            <summary>
            Moves to the next value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryIterator`2.Dispose">
            <summary>
            Disposes the iterator.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryValueIterator`2">
            <summary>
            Dictionary value iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryValueIterator`2.#ctor(System.Collections.Generic.Dictionary{`0,`1})">
            <summary>
            Creates a dictionary value iterator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryValueIterator`2.GetEnumerator">
            <summary>
            Gets the enumerator.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryValueIterator`2.Current">
            <summary>
            Gets the current value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryValueIterator`2.MoveNext">
            <summary>
            Moves to the next value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.GarbageFreeIterators.DictionaryValueIterator`2.Dispose">
            <summary>
            Disposes the iterator.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.LinqExtensions">
            <summary>
            Various LinQ extensions.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.LinqExtensions.ForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})">
            <summary>
            Perform an action on each item.
            </summary>
            <param name="source">The source.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.LinqExtensions.ForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0,System.Int32})">
            <summary>
            Perform an action on each item.
            </summary>
            <param name="source">The source.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.LinqExtensions.Append``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})">
            <summary>
            Add a collection to the end of another collection.
            </summary>
            <param name="source">The collection.</param>
            <param name="append">The collection to append.</param>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.MemberInfoExtensions">
            <summary>
            MemberInfo method extensions.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.IsDefined``1(System.Reflection.ICustomAttributeProvider,System.Boolean)">
            <summary>
            Returns true if the attribute whose type is specified by the generic argument is defined on this member
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.IsDefined``1(System.Reflection.ICustomAttributeProvider)">
            <summary>
            Returns true if the attribute whose type is specified by the generic argument is defined on this member
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetAttribute``1(System.Reflection.ICustomAttributeProvider,System.Boolean)">
            <summary>
            Returns the first found custom attribute of type T on this member
            Returns null if none was found
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetAttribute``1(System.Reflection.ICustomAttributeProvider)">
            <summary>
            Returns the first found non-inherited custom attribute of type T on this member
            Returns null if none was found
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetAttributes``1(System.Reflection.ICustomAttributeProvider)">
            <summary>
            Gets all attributes of the specified generic type.
            </summary>
            <param name="member">The member.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetAttributes``1(System.Reflection.ICustomAttributeProvider,System.Boolean)">
            <summary>
            Gets all attributes of the specified generic type.
            </summary>
            <param name="member">The member.</param>
            <param name="inherit">If true, specifies to also search the ancestors of element for custom attributes.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetAttributes(System.Reflection.ICustomAttributeProvider)">
            <summary>
            Gets all attribute instances defined on a MemeberInfo.
            </summary>
            <param name="member">The member.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetAttributes(System.Reflection.ICustomAttributeProvider,System.Boolean)">
            <summary>
            Gets all attribute instances on a MemberInfo.
            </summary>
            <param name="member">The member.</param>
            <param name="inherit">If true, specifies to also search the ancestors of element for custom attributes.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.GetNiceName(System.Reflection.MemberInfo)">
            <summary>
            If this member is a method, returns the full method name (name + params) otherwise the member name paskal splitted
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.IsStatic(System.Reflection.MemberInfo)">
            <summary>
            Determines whether a FieldInfo, PropertyInfo or MethodInfo is static.
            </summary>
            <param name="member">The member.</param>
            <returns>
              <c>true</c> if the specified member is static; otherwise, <c>false</c>.
            </returns>
            <exception cref="T:System.NotSupportedException"></exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.IsAlias(System.Reflection.MemberInfo)">
            <summary>
            Determines whether the specified member is an alias.
            </summary>
            <param name="memberInfo">The member to check.</param>
            <returns>
              <c>true</c> if the specified member is an alias; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberInfoExtensions.DeAlias(System.Reflection.MemberInfo,System.Boolean)">
            <summary>
            Returns the original, backing member of an alias member if the member is an alias.
            </summary>
            <param name="memberInfo">The member to check.</param>
            /// <param name="throwOnNotAliased">if set to <c>true</c> an exception will be thrown if the member is not aliased.</param>
            <returns></returns>
            <exception cref="T:System.ArgumentException">The member was not aliased; this only occurs if throwOnNotAliased is true.</exception>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.MethodInfoExtensions">
            <summary>
            Various extensions for MethodInfo.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MethodInfoExtensions.GetFullName(System.Reflection.MethodBase,System.String)">
            <summary>
            Returns the specified method's full name "methodName(argType1 arg1, argType2 arg2, etc)"
            Uses the specified gauntlet to replaces type names, ex: "int" instead of "Int32"
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MethodInfoExtensions.GetParamsNames(System.Reflection.MethodBase)">
            <summary>
            Returns a string representing the passed method parameters names. Ex "int num, float damage, Transform target"
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MethodInfoExtensions.GetFullName(System.Reflection.MethodBase)">
            <summary>
            Returns the specified method's full name.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MethodInfoExtensions.IsExtensionMethod(System.Reflection.MethodBase)">
            <summary>
            Tests if a method is an extension method.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MethodInfoExtensions.IsAliasMethod(System.Reflection.MethodInfo)">
            <summary>
            Determines whether the specified method is an alias.
            </summary>
            <param name="methodInfo">The method to check.</param>
            <returns>
              <c>true</c> if the specified method is an alias; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MethodInfoExtensions.DeAliasMethod(System.Reflection.MethodInfo,System.Boolean)">
            <summary>
            Returns the original, backing method of an alias method if the method is an alias.
            </summary>
            <param name="methodInfo">The method to check.</param>
            /// <param name="throwOnNotAliased">if set to <c>true</c> an exception will be thrown if the method is not aliased.</param>
            <returns></returns>
            <exception cref="T:System.ArgumentException">The method was not aliased; this only occurs if throwOnNotAliased is true.</exception>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.Operator">
            <summary>
            Determines the type of operator.
            </summary>
            <seealso cref="T:Sirenix.Serialization.Utilities.TypeExtensions" />
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Equality">
            <summary>
            The == operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Inequality">
            <summary>
            The != operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Addition">
            <summary>
            The + operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Subtraction">
            <summary>
            The - operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Multiply">
            <summary>
            The * operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Division">
            <summary>
            The / operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.LessThan">
            <summary>
            The &lt; operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.GreaterThan">
            <summary>
            The &gt; operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.LessThanOrEqual">
            <summary>
            The &lt;= operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.GreaterThanOrEqual">
            <summary>
            The &gt;= operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.Modulus">
            <summary>
            The % operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.RightShift">
            <summary>
            The &gt;&gt; operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.LeftShift">
            <summary>
            The &lt;&lt; operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.BitwiseAnd">
            <summary>
            The &amp; operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.BitwiseOr">
            <summary>
            The | operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.ExclusiveOr">
            <summary>
            The ^ operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.BitwiseComplement">
            <summary>
            The ~ operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.LogicalAnd">
            <summary>
            The &amp;&amp; operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.LogicalOr">
            <summary>
            The || operator.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Operator.LogicalNot">
            <summary>
            The ! operator.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.PathUtilities">
            <summary>
            DirectoryInfo method extensions.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.PathUtilities.HasSubDirectory(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
            <summary>
            Determines whether the directory has a given directory in its hierarchy of children.
            </summary>
            <param name="parentDir">The parent directory.</param>
            <param name="subDir">The sub directory.</param>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.PropertyInfoExtensions">
            <summary>
            PropertyInfo method extensions.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.PropertyInfoExtensions.IsAutoProperty(System.Reflection.PropertyInfo,System.Boolean)">
            <summary>
            Determines whether a property is an auto property with a usable getter and setter.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.PropertyInfoExtensions.IsAliasProperty(System.Reflection.PropertyInfo)">
            <summary>
            Determines whether the specified property is an alias.
            </summary>
            <param name="propertyInfo">The property to check.</param>
            <returns>
              <c>true</c> if the specified property is an alias; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.PropertyInfoExtensions.DeAliasProperty(System.Reflection.PropertyInfo,System.Boolean)">
            <summary>
            Returns the original, backing property of an alias property if the property is an alias.
            </summary>
            <param name="propertyInfo">The property to check.</param>
            /// <param name="throwOnNotAliased">if set to <c>true</c> an exception will be thrown if the property is not aliased.</param>
            <returns></returns>
            <exception cref="T:System.ArgumentException">The property was not aliased; this only occurs if throwOnNotAliased is true.</exception>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.StringExtensions">
            <summary>
            String method extensions.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.StringExtensions.ToTitleCase(System.String)">
            <summary>
            Eg MY_INT_VALUE => MyIntValue
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.StringExtensions.IsNullOrWhitespace(System.String)">
            <summary>
            Returns true if this string is null, empty, or contains only whitespace.
            </summary>
            <param name="str">The string to check.</param>
            <returns><c>true</c> if this string is null, empty, or contains only whitespace; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.TypeExtensions">
            <summary>
            Type method extensions.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.TypeExtensions.TypeNameAlternatives">
            <summary>
            Type name alias lookup.
            TypeNameAlternatives["Single"] will give you "float", "UInt16" will give you "ushort", "Boolean[]" will give you "bool[]" etc..
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.IsValidIdentifier(System.String)">
            <summary>
            Checks whether a given string is a valid CSharp identifier name. This also checks full type names including namespaces.
            </summary>
            <param name="identifier">The identifier to check.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.IsCastableTo(System.Type,System.Type,System.Boolean)">
            <summary>
            Determines whether a type can be casted to another type.
            </summary>
            <param name="from">From.</param>
            <param name="to">To.</param>
            <param name="requireImplicitCast">if set to <c>true</c> an implicit or explicit operator must be defined on the given type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCastMethodDelegate(System.Type,System.Type,System.Boolean)">
            <summary>
            If a type can be casted to another type, this provides a function to manually convert the type.
            </summary>
            <param name="from">From.</param>
            <param name="to">To.</param>
            <param name="requireImplicitCast">if set to <c>true</c> an implicit or explicit operator must be defined on the given type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCastMethodDelegate``2(System.Boolean)">
            <summary>
            If a type can be casted to another type, this provides a function to manually convert the type.
            </summary>
            <param name="requireImplicitCast">if set to <c>true</c> an implicit or explicit operator must be defined on the given type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCastMethod(System.Type,System.Type,System.Boolean)">
            <summary>
            If a type can be casted to another type, this provides the method info of the method in charge of converting the type.
            </summary>
            <param name="from">From.</param>
            <param name="to">To.</param>
            <param name="requireImplicitCast">if set to <c>true</c> an implicit or explicit operator must be defined on the given type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetEqualityComparerDelegate``1">
             <summary>
             Gets an equality comparer delegate used to compare the equality of values of a given type. In order, this will be:
            
             1. The == operator, if one is defined on the type.
             2. A delegate that uses <see cref="T:System.IEquatable`1"/>, if the type implements that interface.
             3. .NET's own <see cref="P:System.Collections.Generic.EqualityComparer`1.Default"/>
             </summary>
             <remarks>
             <para>Note that in the special case of the type <see cref="T:UnityEngine.Quaternion"/>, a special equality comparer is returned that only checks whether all the Quaternion components are equal.</para>
             <para>This is because, by default, Quaternion's equality operator is broken when operating on invalid quaternions; "default(Quaternion) == default(Quaternion)" evaluates to false, and this causes a multitude of problems.</para>
             <para>Special delegates are also returned for float and double, that consider float.NaN to be equal to float.NaN, and double.NaN to be equal to double.NaN.</para>
             </remarks>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetAttribute``1(System.Type,System.Boolean)">
            <summary>
            Gets the first attribute of type T. Returns null in the no attribute of type T was found.
            </summary>
            <param name="type">The type.</param>
            <param name="inherit">If true, specifies to also search the ancestors of element for custom attributes.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.ImplementsOrInherits(System.Type,System.Type)">
            <summary>
            Determines whether a type implements or inherits from another type.
            </summary>
            <param name="type">The type.</param>
            <param name="to">To.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.ImplementsOpenGenericType(System.Type,System.Type)">
            <summary>
            Determines whether a type implements an open generic interface or class such as IList&lt;&gt; or List&lt;&gt;.
            </summary>
            <param name="candidateType">Type of the candidate.</param>
            <param name="openGenericType">Type of the open generic type.</param>
            <returns></returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.ImplementsOpenGenericInterface(System.Type,System.Type)">
            <summary>
            Determines whether a type implements an open generic interface such as IList&lt;&gt;.
            </summary>
            <param name="candidateType">Type of the candidate.</param>
            <param name="openGenericInterfaceType">Type of the open generic interface.</param>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Type " + openGenericInterfaceType.Name + " is not a generic type definition and an interface.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.ImplementsOpenGenericClass(System.Type,System.Type)">
            <summary>
            Determines whether a type implements an open generic class such as List&lt;&gt;.
            </summary>
            <param name="candidateType">Type of the candidate.</param>
            <param name="openGenericType">Type of the open generic interface.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetArgumentsOfInheritedOpenGenericType(System.Type,System.Type)">
            <summary>
            Gets the generic arguments of an inherited open generic class or interface.
            </summary>
            <param name="candidateType">Type of the candidate.</param>
            <param name="openGenericType">The open generic type to get the arguments of.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetArgumentsOfInheritedOpenGenericClass(System.Type,System.Type)">
            <summary>
            Gets the generic arguments of an inherited open generic class.
            </summary>
            <param name="candidateType">Type of the candidate.</param>
            <param name="openGenericType">Type of the open generic class.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetArgumentsOfInheritedOpenGenericInterface(System.Type,System.Type)">
            <summary>
            Gets the generic arguments of an inherited open generic interface.
            </summary>
            <param name="candidateType">Type of the candidate.</param>
            <param name="openGenericInterfaceType">Type of the open generic interface.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetOperatorMethod(System.Type,Sirenix.Serialization.Utilities.Operator,System.Type,System.Type)">
            <summary>
            Gets the MethodInfo of a specific operator kind, with the given left and right operands. This overload is *far* faster than any of the other GetOperatorMethod implementations, and should be used whenever possible.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetOperatorMethod(System.Type,Sirenix.Serialization.Utilities.Operator)">
            <summary>
            Gets the MethodInfo of a specific operator type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetOperatorMethods(System.Type,Sirenix.Serialization.Utilities.Operator)">
            <summary>
            Gets the MethodInfo of a specific operator type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetAllMembers(System.Type,System.Reflection.BindingFlags)">
            <summary>
            Gets all members from a given type, including members from all base types if the <see cref="F:System.Reflection.BindingFlags.DeclaredOnly"/> flag isn't set.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetAllMembers(System.Type,System.String,System.Reflection.BindingFlags)">
            <summary>
            Gets all members from a given type, including members from all base types.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetAllMembers``1(System.Type,System.Reflection.BindingFlags)">
            <summary>
            Gets all members of a specific type from a type, including members from all base types, if the <see cref="F:System.Reflection.BindingFlags.DeclaredOnly"/> flag isn't set.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetGenericBaseType(System.Type,System.Type)">
            <summary>
            Gets the generic type definition of an open generic base type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetGenericBaseType(System.Type,System.Type,System.Int32@)">
            <summary>
            Gets the generic type definition of an open generic base type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetBaseTypes(System.Type,System.Boolean)">
            <summary>
            Returns a lazy enumerable of all the base types of this type including interfaces and classes
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetBaseClasses(System.Type,System.Boolean)">
            <summary>
            Returns a lazy enumerable of all the base classes of this type
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.TypeNameGauntlet(System.Type)">
            <summary>
            Used to filter out unwanted type names. Ex "int" instead of "Int32"
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetNiceName(System.Type)">
            <summary>
            Returns a nicely formatted name of a type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetNiceFullName(System.Type)">
            <summary>
            Returns a nicely formatted full name of a type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCompilableNiceName(System.Type)">
            <summary>
            Gets the name of the compilable nice.
            </summary>
            <param name="type">The type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCompilableNiceFullName(System.Type)">
            <summary>
            Gets the full name of the compilable nice.
            </summary>
            <param name="type">The type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCustomAttribute``1(System.Type,System.Boolean)">
            <summary>
            Returns the first found custom attribute of type T on this type
            Returns null if none was found
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCustomAttribute``1(System.Type)">
            <summary>
            Returns the first found non-inherited custom attribute of type T on this type
            Returns null if none was found
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCustomAttributes``1(System.Type)">
            <summary>
            Gets all attributes of type T.
            </summary>
            <param name="type">The type.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetCustomAttributes``1(System.Type,System.Boolean)">
            <summary>
            Gets all attributes of type T.
            </summary>
            <param name="type">The type</param>
            <param name="inherit">If true, specifies to also search the ancestors of element for custom attributes.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.IsDefined``1(System.Type)">
            <summary>
            Returns true if the attribute whose type is specified by the generic argument is defined on this type
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.IsDefined``1(System.Type,System.Boolean)">
            <summary>
            Returns true if the attribute whose type is specified by the generic argument is defined on this type
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.InheritsFrom``1(System.Type)">
            <summary>
            Determines whether a type inherits or implements another type. Also include support for open generic base types such as List&lt;&gt;.
            </summary>
            <param name="type"></param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.InheritsFrom(System.Type,System.Type)">
            <summary>
            Determines whether a type inherits or implements another type. Also include support for open generic base types such as List&lt;&gt;.
            </summary>
            <param name="type"></param>
            <param name="baseType"></param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetInheritanceDistance(System.Type,System.Type)">
            <summary>
            Gets the number of base types between given type and baseType.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.HasParamaters(System.Reflection.MethodInfo,System.Collections.Generic.IList{System.Type},System.Boolean)">
            <summary>
            Determines whether a method has the specified parameter types.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetReturnType(System.Reflection.MemberInfo)">
            <summary>
            FieldInfo will return the fieldType, propertyInfo the PropertyType, MethodInfo the return type and EventInfo will return the EventHandlerType.
            </summary>
            <param name="memberInfo">The MemberInfo.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetMemberValue(System.Reflection.MemberInfo,System.Object)">
            <summary>
            Gets the value contained in a given <see cref="T:System.Reflection.MemberInfo"/>. Currently only <see cref="T:System.Reflection.FieldInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/> is supported.
            </summary>
            <param name="member">The <see cref="T:System.Reflection.MemberInfo"/> to get the value of.</param>
            <param name="obj">The instance to get the value from.</param>
            <returns>The value contained in the given <see cref="T:System.Reflection.MemberInfo"/>.</returns>
            <exception cref="T:System.ArgumentException">Can't get the value of the given <see cref="T:System.Reflection.MemberInfo"/> type.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.SetMemberValue(System.Reflection.MemberInfo,System.Object,System.Object)">
            <summary>
            Sets the value of a given MemberInfo. Currently only <see cref="T:System.Reflection.FieldInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/> is supported.
            </summary>
            <param name="member">The <see cref="T:System.Reflection.MemberInfo"/> to set the value of.</param>
            <param name="obj">The object to set the value on.</param>
            <param name="value">The value to set.</param>
            <exception cref="T:System.ArgumentException">
            Property has no setter
            or
            Can't set the value of the given <see cref="T:System.Reflection.MemberInfo"/> type.
            </exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.TryInferGenericParameters(System.Type,System.Type[]@,System.Type[])">
            <summary>
            Tries to infer a set of valid generic parameters for a generic type definition, given a subset of known parameters.
            </summary>
            <param name="genericTypeDefinition">The generic type definition to attempt to infer parameters for.</param>
            <param name="inferredParams">The inferred parameters, if inferral was successful.</param>
            <param name="knownParameters">The known parameters to infer from.</param>
            <returns>True if the parameters could be inferred, otherwise, false.</returns>
            <exception cref="T:System.ArgumentNullException">
            genericTypeDefinition is null
            or
            knownParameters is null
            </exception>
            <exception cref="T:System.ArgumentException">The genericTypeDefinition parameter must be a generic type definition.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.AreGenericConstraintsSatisfiedBy(System.Type,System.Type[])">
            <summary>
            <para>Checks whether an array of types satisfy the constraints of a given generic type definition.</para>
            <para>If this method returns true, the given parameters can be safely used with <see cref="M:System.Type.MakeGenericType(System.Type[])"/> with the given generic type definition.</para>
            </summary>
            <param name="genericType">The generic type definition to check.</param>
            <param name="parameters">The parameters to check validity for.</param>
            <exception cref="T:System.ArgumentNullException">
            genericType is null
            or
            types is null
            </exception>
            <exception cref="T:System.ArgumentException">The genericType parameter must be a generic type definition.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.AreGenericConstraintsSatisfiedBy(System.Reflection.MethodBase,System.Type[])">
            <summary>
            <para>Checks whether an array of types satisfy the constraints of a given generic method definition.</para>
            <para>If this method returns true, the given parameters can be safely used with <see cref="M:System.Reflection.MethodInfo.MakeGenericMethod(System.Type[])"/> with the given generic method definition.</para>
            </summary>
            <param name="genericType">The generic method definition to check.</param>
            <param name="parameters">The parameters to check validity for.</param>
            <exception cref="T:System.ArgumentNullException">
            genericType is null
            or
            types is null
            </exception>
            <exception cref="T:System.ArgumentException">The genericMethod parameter must be a generic method definition.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GenericParameterIsFulfilledBy(System.Type,System.Type,System.Collections.Generic.Dictionary{System.Type,System.Type},System.Collections.Generic.HashSet{System.Type})">
            <summary>
            Before calling this method we must ALWAYS hold a lock on the GenericConstraintsSatisfaction_LOCK object, as that is an implicit assumption it works with.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetGenericConstraintsString(System.Type,System.Boolean)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetGenericParameterConstraintsString(System.Type,System.Boolean)">
            <summary>
            Formats a string with the specified generic parameter constraints on any given type. Example output: <c>where T : class</c>
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GenericArgumentsContainsTypes(System.Type,System.Type[])">
            <summary>
            Determines whether a generic type contains the specified generic argument constraints.
            </summary>
            <param name="type">The type.</param>
            <param name="types">The generic argument types.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.IsFullyConstructedGenericType(System.Type)">
            <summary>
            Determines whether a type is a fully constructed generic type.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.IsNullableType(System.Type)">
            <summary>
            Determines whether a type is nullable by ensuring the type is neither a PrimitiveType, ValueType or an Enum.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.TypeExtensions.GetEnumBitmask(System.Object,System.Type)">
            <summary>
            Gets the enum bitmask in a ulong.
            </summary>
            <exception cref="T:System.ArgumentException">enumType</exception>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.UnityExtensions">
            <summary>
            Extends various Unity classes.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.UnityExtensions.SafeIsUnityNull(UnityEngine.Object)">
            <summary>
            Determines whether a Unity object is null or "fake null",
            without ever calling Unity's own equality operators.
            This method is useful for checking if a Unity object is
            null, destroyed or missing at times when it is not allowed
            to call Unity's own equality operators, for example when
            not running on the main thread.
            </summary>
            <param name="obj">The Unity object to check.</param>
            <returns>True if the object is null, missing or destroyed; otherwise false.</returns>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.Editor.OdinAssemblyImportSettings">
            <summary>
            Defines how an assembly's import settings should be configured.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.OdinAssemblyImportSettings.IncludeInBuildOnly">
            <summary>
            Include the assembly in the build, but not in the editor.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.OdinAssemblyImportSettings.IncludeInEditorOnly">
            <summary>
            Include the assembly in the editor, but not in the build.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.OdinAssemblyImportSettings.IncludeInAll">
            <summary>
            Include the assembly in both the build and in the editor.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.OdinAssemblyImportSettings.ExcludeFromAll">
            <summary>
            Exclude the assembly from both the build and from the editor.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities">
            <summary>
            Utility for correctly setting import on OdinSerializer assemblies based on platform and scripting backend.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.Platforms">
            <summary>
            All valid Unity BuildTarget platforms.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.JITPlatforms">
            <summary>
            All valid Unity BuildTarget platforms that support Just In Time compilation.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.JITScriptingBackends">
            <summary>
            All scripting backends that support JIT.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.JITApiCompatibilityLevels">
            <summary>
            All API compatibility levels that support JIT.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.SetAssemblyImportSettings(UnityEditor.BuildTarget,System.String,Sirenix.Serialization.Utilities.Editor.OdinAssemblyImportSettings)">
            <summary>
            Set the import settings on the assembly.
            </summary>
            <param name="assemblyFilePath">The path to the assembly to configure import settings from.</param>
            <param name="importSettings">The import settings to configure for the assembly at the path.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.SetAssemblyImportSettings(UnityEditor.BuildTarget,System.String,System.Boolean,System.Boolean)">
            <summary>
            Set the import settings on the assembly.
            </summary>
            <param name="assemblyFilePath">The path to the assembly to configure import settings from.</param>
            <param name="includeInBuild">Indicates if the assembly should be included in the build.</param>
            <param name="includeInEditor">Indicates if the assembly should be included in the Unity editor.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.GetCurrentScriptingBackend">
            <summary>
            Gets the current scripting backend for the build from the Unity editor. This method is Unity version independent.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.GetCurrentApiCompatibilityLevel">
            <summary>
            Gets the current API compatibility level from the Unity Editor. This method is Unity version independent.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.PlatformSupportsJIT(UnityEditor.BuildTarget)">
            <summary>
            Gets a value that indicates if the specified platform supports JIT.
            </summary>
            <param name="platform">The platform to test.</param>
            <returns><c>true</c> if the platform supports JIT; otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.ScriptingBackendSupportsJIT(UnityEditor.ScriptingImplementation)">
            <summary>
            Gets a value that indicates if the specified scripting backend supports JIT.
            </summary>
            <param name="backend">The backend to test.</param>
            <returns><c>true</c> if the backend supports JIT; otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.ApiCompatibilityLevelSupportsJIT(UnityEditor.ApiCompatibilityLevel)">
            <summary>
            Gets a value that indicates if the specified api level supports JIT.
            </summary>
            <param name="apiLevel">The api level to test.</param>
            <returns><c>true</c> if the api level supports JIT; otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Editor.AssemblyImportSettingsUtilities.IsJITSupported(UnityEditor.BuildTarget,UnityEditor.ScriptingImplementation,UnityEditor.ApiCompatibilityLevel)">
            <summary>
            Gets a value that indicates if the specified build settings supports JIT.
            </summary>
            <param name="platform">The platform build setting.</param>
            <param name="backend">The scripting backend build settting.</param>
            <param name="apiLevel">The api level build setting.</param>
            <returns><c>true</c> if the build settings supports JIT; otherwise <c>false</c>.</returns>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.Cache`1">
            <summary>
            Provides an easy way of claiming and freeing cached values of any non-abstract reference type with a public parameterless constructor.
            <para />
            Cached types which implement the <see cref="T:Sirenix.Serialization.Utilities.ICacheNotificationReceiver"/> interface will receive notifications when they are claimed and freed.
            <para />
            Only one thread should be holding a given cache instance at a time if <see cref="T:Sirenix.Serialization.Utilities.ICacheNotificationReceiver"/> is implemented, since the invocation of 
            <see cref="M:Sirenix.Serialization.Utilities.ICacheNotificationReceiver.OnFreed"/> is not thread safe, IE, weird stuff might happen if multiple different threads are trying to free
            the same cache instance at the same time. This will practically never happen unless you're doing really strange stuff, but the case is documented here.
            </summary>
            <typeparam name="T">The type which is cached.</typeparam>
            <seealso cref="T:System.IDisposable" />
        </member>
        <member name="P:Sirenix.Serialization.Utilities.Cache`1.MaxCacheSize">
            <summary>
            Gets or sets the maximum size of the cache. This value can never go beneath 1.
            </summary>
            <value>
            The maximum size of the cache.
            </value>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Cache`1.Value">
            <summary>
            The cached value.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.Cache`1.IsFree">
            <summary>
            Gets a value indicating whether this cached value is free.
            </summary>
            <value>
              <c>true</c> if this cached value is free; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Cache`1.Claim">
            <summary>
            Claims a cached value of type <see cref="!:T"/>.
            </summary>
            <returns>A cached value of type <see cref="!:T"/>.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Cache`1.Release(Sirenix.Serialization.Utilities.Cache{`0})">
            <summary>
            Releases a cached value.
            </summary>
            <param name="cache">The cached value to release.</param>
            <exception cref="T:System.ArgumentNullException">The cached value to release is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Cache`1.op_Implicit(Sirenix.Serialization.Utilities.Cache{`0})~`0">
            <summary>
            Performs an implicit conversion from <see cref="T:Sirenix.Serialization.Utilities.Cache`1"/> to <see cref="!:T"/>.
            </summary>
            <param name="cache">The cache to convert.</param>
            <returns>
            The result of the conversion.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Cache`1.Release">
            <summary>
            Releases this cached value.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Cache`1.System#IDisposable#Dispose">
            <summary>
            Releases this cached value.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.Item(`0)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.InnerCount(`0)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.TotalInnerCount">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.ContainsKeys(`0,`1)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.TryGetInnerValue(`0,`1,`2@)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.AddInner(`0,`1,`2)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.RemoveInner(`0,`1)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.DoubleLookupDictionary`3.RemoveWhere(System.Func{`2,System.Boolean})">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.WeakValueGetter">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.WeakValueSetter">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.WeakValueGetter`1">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.WeakValueSetter`1">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ValueGetter`2">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ValueSetter`2">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.EmitUtilities">
            <summary>
            Provides utilities for using the <see cref="N:System.Reflection.Emit"/> namespace.
            <para />
            This class is due for refactoring. Use at your own peril.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.EmitUtilities.CanEmit">
            <summary>
            Gets a value indicating whether emitting is supported on the current platform.
            </summary>
            <value>
              <c>true</c> if the current platform can emit; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateStaticFieldGetter``1(System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which gets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <typeparam name="FieldType">The type of the field to get a value from.</typeparam>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a getter for.</param>
            <returns>A delegate which gets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakStaticFieldGetter(System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which gets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a getter for.</param>
            <returns>A delegate which gets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateStaticFieldSetter``1(System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which sets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <typeparam name="FieldType">The type of the field to set a value to.</typeparam>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a setter for.</param>
            <returns>A delegate which sets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakStaticFieldSetter(System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which sets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a setter for.</param>
            <returns>A delegate which sets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstanceFieldGetter``2(System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which gets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <typeparam name="InstanceType">The type of the instance to get a value from.</typeparam>
            <typeparam name="FieldType">The type of the field to get a value from.</typeparam>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a getter for.</param>
            <returns>A delegate which gets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceFieldGetter``1(System.Type,System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which gets the value of a field from a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <typeparam name="FieldType">The type of the field to get a value from.</typeparam>
            <param name="instanceType">The <see cref="T:System.Type"/> of the instance to get a value from.</param>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a getter for.</param>
            <returns>A delegate which gets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceFieldGetter(System.Type,System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which gets the weakly typed value of a field from a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <param name="instanceType">The <see cref="T:System.Type"/> of the instance to get a value from.</param>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a getter for.</param>
            <returns>A delegate which gets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstanceFieldSetter``2(System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which sets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <typeparam name="InstanceType">The type of the instance to set a value on.</typeparam>
            <typeparam name="FieldType">The type of the field to set a value to.</typeparam>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a setter for.</param>
            <returns>A delegate which sets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceFieldSetter``1(System.Type,System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which sets the value of a field on a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <typeparam name="FieldType">The type of the field to set a value to.</typeparam>
            <param name="instanceType">Type of the instance.</param>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo" /> instance describing the field to create a setter for.</param>
            <returns>
            A delegate which sets the value of the given field.
            </returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
            <exception cref="T:System.ArgumentException">Field cannot be static.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceFieldSetter(System.Type,System.Reflection.FieldInfo)">
            <summary>
            Creates a delegate which sets the weakly typed value of a field on a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <param name="instanceType">Type of the instance.</param>
            <param name="fieldInfo">The <see cref="T:System.Reflection.FieldInfo" /> instance describing the field to create a setter for.</param>
            <returns>
            A delegate which sets the value of the given field.
            </returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
            <exception cref="T:System.ArgumentException">Field cannot be static.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstancePropertyGetter(System.Type,System.Reflection.PropertyInfo)">
            <summary>
            Creates a delegate which gets the weakly typed value of a field from a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <param name="instanceType">The <see cref="T:System.Type"/> of the instance to get a value from.</param>
            <param name="propertyInfo">The <see cref="T:System.Reflection.FieldInfo"/> instance describing the field to create a getter for.</param>
            <returns>A delegate which gets the value of the given field.</returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstancePropertySetter(System.Type,System.Reflection.PropertyInfo)">
            <summary>
            Creates a delegate which sets the weakly typed value of a property on a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <param name="instanceType">Type of the instance.</param>
            <param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo" /> instance describing the property to create a setter for.</param>
            <returns>
            A delegate which sets the value of the given field.
            </returns>
            <exception cref="T:System.ArgumentNullException">The fieldInfo parameter is null.</exception>
            <exception cref="T:System.ArgumentException">Property cannot be static.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateStaticPropertySetter``1(System.Reflection.PropertyInfo)">
            <summary>
            Creates a delegate which sets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <typeparam name="PropType">The type of the property to set a value to.</typeparam>
            <param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> instance describing the property to create a setter for.</param>
            <returns>A delegate which sets the value of the given property.</returns>
            <exception cref="T:System.ArgumentNullException">The propertyInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateStaticPropertyGetter``1(System.Reflection.PropertyInfo)">
            <summary>
            Creates a delegate which gets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <typeparam name="PropType">The type of the property to get a value from.</typeparam>
            <param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> instance describing the property to create a getter for.</param>
            <returns>A delegate which gets the value of the given property.</returns>
            <exception cref="T:System.ArgumentNullException">The propertyInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstancePropertySetter``2(System.Reflection.PropertyInfo)">
            <summary>
            Creates a delegate which sets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to set the value.
            </summary>
            <typeparam name="InstanceType">The type of the instance to set a value on.</typeparam>
            <typeparam name="PropType">The type of the property to set a value to.</typeparam>
            <param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> instance describing the property to create a setter for.</param>
            <returns>A delegate which sets the value of the given property.</returns>
            <exception cref="T:System.ArgumentNullException">The propertyInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstancePropertyGetter``2(System.Reflection.PropertyInfo)">
            <summary>
            Creates a delegate which gets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to get the value.
            </summary>
            <typeparam name="InstanceType">The type of the instance to get a value from.</typeparam>
            <typeparam name="PropType">The type of the property to get a value from.</typeparam>
            <param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> instance describing the property to create a getter for.</param>
            <returns>A delegate which gets the value of the given property.</returns>
            <exception cref="T:System.ArgumentNullException">The propertyInfo parameter is null.</exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateMethodReturner``2(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given parameterless instance method and returns the result.
            </summary>
            <typeparam name="InstanceType">The type of the class which the method is on.</typeparam>
            <typeparam name="ReturnType">The type which is returned by the given method info.</typeparam>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateStaticMethodCaller(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given parameterless static method.
            </summary>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceMethodCaller``1(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given parameterless weakly typed instance method.
            </summary>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceMethodCaller(System.Reflection.MethodInfo)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceMethodCaller``2(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given weakly typed instance method with one argument and returns a value.
            </summary>
            <typeparam name="TResult">The type of the result.</typeparam>
            <typeparam name="TArg1">The type of the first argument.</typeparam>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>
            A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.
            </returns>
            <exception cref="T:System.ArgumentNullException">methodInfo</exception>
            <exception cref="T:System.ArgumentException">
            Given method ' + methodInfo.Name + ' is static when it has to be an instance method.
            or
            Given method ' + methodInfo.Name + ' must return type  + typeof(TResult) + .
            or
            Given method ' + methodInfo.Name + ' must have exactly one parameter.
            or
            The first parameter of the method ' + methodInfo.Name + ' must be of type  + typeof(TArg1) + .
            </exception>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceMethodCallerFunc``1(System.Reflection.MethodInfo)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateWeakInstanceMethodCallerFunc``2(System.Reflection.MethodInfo)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstanceMethodCaller``1(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given parameterless instance method on a reference type.
            </summary>
            <typeparam name="InstanceType">The type of the class which the method is on.</typeparam>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstanceMethodCaller``2(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given instance method with a given argument on a reference type.
            </summary>
            <typeparam name="InstanceType">The type of the class which the method is on.</typeparam>
            <typeparam name="Arg1">The type of the argument with which to call the method.</typeparam>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstanceRefMethodCaller``1(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given parameterless instance method.
            </summary>
            <typeparam name="InstanceType">The type of the class which the method is on.</typeparam>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.EmitUtilities.CreateInstanceRefMethodCaller``2(System.Reflection.MethodInfo)">
            <summary>
            Creates a fast delegate method which calls a given instance method with a given argument on a struct type.
            </summary>
            <typeparam name="InstanceType">The type of the class which the method is on.</typeparam>
            <typeparam name="Arg1">The type of the argument with which to call the method.</typeparam>
            <param name="methodInfo">The method info instance which is used.</param>
            <returns>A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke.</returns>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.FastTypeComparer">
            <summary>
            Compares types by reference before comparing them using the default type equality operator.
            This can constitute a *significant* speedup when used as the comparer for dictionaries.
            </summary>
            <seealso cref="!:System.Collections.Generic.IEqualityComparer&lt;System.Type&gt;" />
        </member>
        <member name="T:Sirenix.Serialization.Utilities.Flags">
            <summary>
            This class encapsulates common <see cref="T:System.Reflection.BindingFlags"/> combinations.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.AnyVisibility">
            <summary>
            Search criteria encompassing all public and non-public members, including base members.
            Note that you also need to specify either the Instance or Static flag.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.InstancePublic">
            <summary>
            Search criteria encompassing all public instance members, including base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.InstancePrivate">
            <summary>
            Search criteria encompassing all non-public instance members, including base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.InstanceAnyVisibility">
            <summary>
            Search criteria encompassing all public and non-public instance members, including base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticPublic">
            <summary>
            Search criteria encompassing all public static members, including base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticPrivate">
            <summary>
            Search criteria encompassing all non-public static members, including base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticAnyVisibility">
            <summary>
            Search criteria encompassing all public and non-public static members, including base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.InstancePublicDeclaredOnly">
            <summary>
            Search criteria encompassing all public instance members, excluding base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.InstancePrivateDeclaredOnly">
            <summary>
            Search criteria encompassing all non-public instance members, excluding base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.InstanceAnyDeclaredOnly">
            <summary>
            Search criteria encompassing all public and non-public instance members, excluding base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticPublicDeclaredOnly">
            <summary>
            Search criteria encompassing all public static members, excluding base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticPrivateDeclaredOnly">
            <summary>
            Search criteria encompassing all non-public static members, excluding base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticAnyDeclaredOnly">
            <summary>
            Search criteria encompassing all public and non-public static members, excluding base members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.StaticInstanceAnyVisibility">
            <summary>
            Search criteria encompassing all members, including base and static members.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.Flags.AllMembers">
            <summary>
            Search criteria encompassing all members (public and non-public, instance and static), including base members.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ICacheNotificationReceiver">
            <summary>
            Provides notification callbacks for values that are cached using the <see cref="T:Sirenix.Serialization.Utilities.Cache`1"/> class.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ICacheNotificationReceiver.OnFreed">
            <summary>
            Called when the cached value is freed.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ICacheNotificationReceiver.OnClaimed">
            <summary>
            Called when the cached value is claimed.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.IImmutableList">
            <summary>
            Interface for immutable list.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.IImmutableList`1">
            <summary>
            Interface for generic immutable list.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.IImmutableList`1.Item(System.Int32)">
            <summary>
            Index accessor.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ImmutableList">
            <summary>
            Immutable list wraps another list, and allows for reading the inner list, without the ability to change it.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.#ctor(System.Collections.IList)">
            <summary>
            Creates an immutable list around another list.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList.Count">
            <summary>
            Number of items in the list.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList.IsFixedSize">
            <summary>
            Immutable list cannot be changed directly, so it's size is always fixed.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList.IsReadOnly">
            <summary>
            Immutable list are always readonly.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList.IsSynchronized">
            <summary>
            Returns <c>true</c> if the inner list is synchronized.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList.SyncRoot">
            <summary>
            Gets the sync root object.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList.Item(System.Int32)">
            <summary>
            Index accessor.
            </summary>
            <param name="index">Index.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.Contains(System.Object)">
            <summary>
            Returns <c>true</c> if the item is contained in the list.
            </summary>
            <param name="value">The item's value.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.CopyTo(System.Object[],System.Int32)">
            <summary>
            Copy the list to an array,
            </summary>
            <param name="array">Target array.</param>
            <param name="arrayIndex">Index.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.CopyTo(System.Array,System.Int32)">
            <summary>
            Copy the list to an array,
            </summary>
            <param name="array">Target array.</param>
            <param name="index">Index.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.GetEnumerator">
            <summary>
            Gets an enumerator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.IndexOf(System.Object)">
            <summary>
            Get the index of a value.
            </summary>
            <param name="value">The item's value.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.System#Collections#Generic#IList{System#Object}#RemoveAt(System.Int32)">
            <summary>
            Immutable list cannot be edited.
            </summary>
            <param name="index">Index.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.System#Collections#Generic#IList{System#Object}#Insert(System.Int32,System.Object)">
            <summary>
            Immutable list cannot be edited.
            </summary>
            <param name="index">Index.</param>
            <param name="item">Item.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.System#Collections#Generic#ICollection{System#Object}#Add(System.Object)">
            <summary>
            Immutable list cannot be edited.
            </summary>
            <param name="item">Item.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.System#Collections#Generic#ICollection{System#Object}#Clear">
            <summary>
            Immutable list cannot be edited.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList.System#Collections#Generic#ICollection{System#Object}#Remove(System.Object)">
            <summary>
            Immutable list cannot be edited.
            </summary>
            <param name="item">Item.</param>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ImmutableList`1">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`1.#ctor(System.Collections.Generic.IList{`0})">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList`1.Count">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList`1.IsReadOnly">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList`1.Item(System.Int32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`1.Contains(`0)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`1.CopyTo(`0[],System.Int32)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`1.GetEnumerator">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`1.IndexOf(`0)">
            <summary>
            Not yet documented.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ImmutableList`2">
            <summary>
            Immutable list wraps another list, and allows for reading the inner list, without the ability to change it.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`2.#ctor(`0)">
            <summary>
            Creates an immutable list around another list.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList`2.Count">
            <summary>
            Number of items in the list.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList`2.IsReadOnly">
            <summary>
            Immutable list are always readonly.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.ImmutableList`2.Item(System.Int32)">
            <summary>
            Index accessor.
            </summary>
            <param name="index">Index.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`2.Contains(`1)">
            <summary>
            Returns <c>true</c> if the item is contained in the list.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`2.CopyTo(`1[],System.Int32)">
            <summary>
            Copies the list to an array.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`2.GetEnumerator">
            <summary>
            Gets an enumerator.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ImmutableList`2.IndexOf(`1)">
            <summary>
            Gets the index of an item.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.MemberAliasFieldInfo">
            <summary>
            Provides a methods of representing imaginary fields which are unique to serialization.
            <para />
            We aggregate the FieldInfo associated with this member and return a mangled form of the name.
            </summary>
            <seealso cref="T:System.Reflection.FieldInfo" />
        </member>
        <member name="F:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.FAKE_NAME_SEPARATOR_STRING">
            <summary>
            The default fake name separator string.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.#ctor(System.Reflection.FieldInfo,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.Utilities.MemberAliasFieldInfo"/> class.
            </summary>
            <param name="field">The field to alias.</param>
            <param name="namePrefix">The name prefix to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.#ctor(System.Reflection.FieldInfo,System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.Utilities.MemberAliasFieldInfo"/> class.
            </summary>
            <param name="field">The field to alias.</param>
            <param name="namePrefix">The name prefix to use.</param>
            <param name="separatorString">The separator string to use.</param>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.AliasedField">
            <summary>
            Gets the aliased field.
            </summary>
            <value>
            The aliased field.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.Module">
            <summary>
            Gets the module in which the type that declares the member represented by the current <see cref="T:System.Reflection.MemberInfo" /> is defined.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.MetadataToken">
            <summary>
            Gets a value that identifies a metadata element.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.Name">
            <summary>
            Gets the name of the current member.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.DeclaringType">
            <summary>
            Gets the class that declares this member.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.ReflectedType">
            <summary>
            Gets the class object that was used to obtain this instance of MemberInfo.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.FieldType">
            <summary>
            Gets the type of the field.
            </summary>
            <value>
            The type of the field.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.FieldHandle">
            <summary>
            Gets a RuntimeFieldHandle, which is a handle to the internal metadata representation of a field.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.Attributes">
            <summary>
            Gets the attributes.
            </summary>
            <value>
            The attributes.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.GetCustomAttributes(System.Boolean)">
            <summary>
            When overridden in a derived class, returns an array of all custom attributes applied to this member.
            </summary>
            <param name="inherit">True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.GetCustomAttributes(System.Type,System.Boolean)">
            <summary>
            When overridden in a derived class, returns an array of custom attributes applied to this member and identified by <see cref="T:System.Type" />.
            </summary>
            <param name="attributeType">The type of attribute to search for. Only attributes that are assignable to this type are returned.</param>
            <param name="inherit">True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            An array of custom attributes applied to this member, or an array with zero elements if no attributes assignable to <paramref name="attributeType" /> have been applied.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.IsDefined(System.Type,System.Boolean)">
            <summary>
            When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member.
            </summary>
            <param name="attributeType">The type of custom attribute to search for. The search includes derived types.</param>
            <param name="inherit">True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            True if one or more instances of <paramref name="attributeType" /> or any of its derived types is applied to this member; otherwise, false.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.GetValue(System.Object)">
            <summary>
            Gets the value of the field.
            </summary>
            <param name="obj">The object instance to get the value from.</param>
            <returns>The value of the field.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasFieldInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Globalization.CultureInfo)">
            <summary>
            When overridden in a derived class, sets the value of the field supported by the given object.
            </summary>
            <param name="obj">The object whose field value will be set.</param>
            <param name="value">The value to assign to the field.</param>
            <param name="invokeAttr">A field of Binder that specifies the type of binding that is desired (for example, Binder.CreateInstance or Binder.ExactBinding).</param>
            <param name="binder">A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. If <paramref name="binder" /> is null, then Binder.DefaultBinding is used.</param>
            <param name="culture">The software preferences of a particular culture.</param>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.MemberAliasMethodInfo">
            <summary>
            Provides a methods of representing aliased methods.
            <para />
            In this case, what we're representing is a method on a parent class with the same name.
            <para />
            We aggregate the MethodInfo associated with this member and return a mangled form of the name.
            The name that we return is "parentname+methodName".
            </summary>
            <seealso cref="T:System.Reflection.FieldInfo" />
        </member>
        <member name="F:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.FAKE_NAME_SEPARATOR_STRING">
            <summary>
            The default fake name separator string.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.#ctor(System.Reflection.MethodInfo,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.Utilities.MemberAliasMethodInfo"/> class.
            </summary>
            <param name="method">The method to alias.</param>
            <param name="namePrefix">The name prefix to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.#ctor(System.Reflection.MethodInfo,System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.Utilities.MemberAliasMethodInfo"/> class.
            </summary>
            <param name="method">The method to alias.</param>
            <param name="namePrefix">The name prefix to use.</param>
            <param name="separatorString">The separator string to use.</param>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.AliasedMethod">
            <summary>
            Gets the aliased method.
            </summary>
            <value>
            The aliased method.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.ReturnTypeCustomAttributes">
            <summary>
            Gets the custom attributes for the return type.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.MethodHandle">
            <summary>
            Gets a handle to the internal metadata representation of a method.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.Attributes">
            <summary>
            Gets the attributes associated with this method.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.DeclaringType">
            <summary>
            Gets the class that declares this member.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.Name">
            <summary>
            Gets the name of the current member.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.ReflectedType">
            <summary>
            Gets the class object that was used to obtain this instance of MemberInfo.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.GetBaseDefinition">
            <summary>
            When overridden in a derived class, returns the MethodInfo object for the method on the direct or indirect base class in which the method represented by this instance was first declared.
            </summary>
            <returns>
            A MethodInfo object for the first implementation of this method.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.GetCustomAttributes(System.Boolean)">
            <summary>
            When overridden in a derived class, returns an array of all custom attributes applied to this member.
            </summary>
            <param name="inherit">true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.GetCustomAttributes(System.Type,System.Boolean)">
            <summary>
            When overridden in a derived class, returns an array of custom attributes applied to this member and identified by <see cref="T:System.Type" />.
            </summary>
            <param name="attributeType">The type of attribute to search for. Only attributes that are assignable to this type are returned.</param>
            <param name="inherit">true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            An array of custom attributes applied to this member, or an array with zero elements if no attributes assignable to <paramref name="attributeType" /> have been applied.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.GetMethodImplementationFlags">
            <summary>
            When overridden in a derived class, returns the <see cref="T:System.Reflection.MethodImplAttributes" /> flags.
            </summary>
            <returns>
            The MethodImplAttributes flags.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.GetParameters">
            <summary>
            When overridden in a derived class, gets the parameters of the specified method or constructor.
            </summary>
            <returns>
            An array of type ParameterInfo containing information that matches the signature of the method (or constructor) reflected by this MethodBase instance.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.Invoke(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo)">
            <summary>
            When overridden in a derived class, invokes the reflected method or constructor with the given parameters.
            </summary>
            <param name="obj">The object on which to invoke the method or constructor. If a method is static, this argument is ignored. If a constructor is static, this argument must be null or an instance of the class that defines the constructor.</param>
            <param name="invokeAttr">A bitmask that is a combination of 0 or more bit flags from <see cref="T:System.Reflection.BindingFlags" />. If <paramref name="binder" /> is null, this parameter is assigned the value <see cref="F:System.Reflection.BindingFlags.Default" />; thus, whatever you pass in is ignored.</param>
            <param name="binder">An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. If <paramref name="binder" /> is null, the default binder is used.</param>
            <param name="parameters">An argument list for the invoked method or constructor. This is an array of objects with the same number, order, and type as the parameters of the method or constructor to be invoked. If there are no parameters, this should be null.If the method or constructor represented by this instance takes a ByRef parameter, there is no special attribute required for that parameter in order to invoke the method or constructor using this function. Any object in this array that is not explicitly initialized with a value will contain the default value for that object type. For reference-type elements, this value is null. For value-type elements, this value is 0, 0.0, or false, depending on the specific element type.</param>
            <param name="culture">An instance of CultureInfo used to govern the coercion of types. If this is null, the CultureInfo for the current thread is used. (This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.)</param>
            <returns>
            An Object containing the return value of the invoked method, or null in the case of a constructor, or null if the method's return type is void. Before calling the method or constructor, Invoke checks to see if the user has access permission and verifies that the parameters are valid.CautionElements of the <paramref name="parameters" /> array that represent parameters declared with the ref or out keyword may also be modified.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasMethodInfo.IsDefined(System.Type,System.Boolean)">
            <summary>
            When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member.
            </summary>
            <param name="attributeType">The type of custom attribute to search for. The search includes derived types.</param>
            <param name="inherit">true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            true if one or more instances of <paramref name="attributeType" /> or any of its derived types is applied to this member; otherwise, false.
            </returns>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo">
            <summary>
            Provides a methods of representing imaginary properties which are unique to serialization.
            <para />
            We aggregate the PropertyInfo associated with this member and return a mangled form of the name.
            </summary>
            <seealso cref="T:System.Reflection.FieldInfo" />
        </member>
        <member name="F:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.FakeNameSeparatorString">
            <summary>
            The default fake name separator string.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.#ctor(System.Reflection.PropertyInfo,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo"/> class.
            </summary>
            <param name="prop">The property to alias.</param>
            <param name="namePrefix">The name prefix to use.</param>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.#ctor(System.Reflection.PropertyInfo,System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo"/> class.
            </summary>
            <param name="prop">The property to alias.</param>
            <param name="namePrefix">The name prefix to use.</param>
            <param name="separatorString">The separator string to use.</param>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.AliasedProperty">
            <summary>
            The backing PropertyInfo that is being aliased.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.Module">
            <summary>
            Gets the module in which the type that declares the member represented by the current <see cref="T:System.Reflection.MemberInfo" /> is defined.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.MetadataToken">
            <summary>
            Gets a value that identifies a metadata element.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.Name">
            <summary>
            Gets the name of the current member.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.DeclaringType">
            <summary>
            Gets the class that declares this member.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.ReflectedType">
            <summary>
            Gets the class object that was used to obtain this instance of MemberInfo.
            </summary>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.PropertyType">
            <summary>
            Gets the type of the property.
            </summary>
            <value>
            The type of the property.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.Attributes">
            <summary>
            Gets the attributes.
            </summary>
            <value>
            The attributes.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.CanRead">
            <summary>
            Gets a value indicating whether this instance can read.
            </summary>
            <value>
              <c>true</c> if this instance can read; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.CanWrite">
            <summary>
            Gets a value indicating whether this instance can write.
            </summary>
            <value>
              <c>true</c> if this instance can write; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetCustomAttributes(System.Boolean)">
            <summary>
            When overridden in a derived class, returns an array of all custom attributes applied to this member.
            </summary>
            <param name="inherit">True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetCustomAttributes(System.Type,System.Boolean)">
            <summary>
            When overridden in a derived class, returns an array of custom attributes applied to this member and identified by <see cref="T:System.Type" />.
            </summary>
            <param name="attributeType">The type of attribute to search for. Only attributes that are assignable to this type are returned.</param>
            <param name="inherit">True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            An array of custom attributes applied to this member, or an array with zero elements if no attributes assignable to <paramref name="attributeType" /> have been applied.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.IsDefined(System.Type,System.Boolean)">
            <summary>
            When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member.
            </summary>
            <param name="attributeType">The type of custom attribute to search for. The search includes derived types.</param>
            <param name="inherit">True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.</param>
            <returns>
            True if one or more instances of <paramref name="attributeType" /> or any of its derived types is applied to this member; otherwise, false.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetAccessors(System.Boolean)">
            <summary>
            Returns an array whose elements reflect the public and, if specified, non-public get, set, and other accessors of the property reflected by the current instance.
            </summary>
            <param name="nonPublic">Indicates whether non-public methods should be returned in the MethodInfo array. true if non-public methods are to be included; otherwise, false.</param>
            <returns>
            An array of <see cref="T:System.Reflection.MethodInfo" /> objects whose elements reflect the get, set, and other accessors of the property reflected by the current instance. If <paramref name="nonPublic" /> is true, this array contains public and non-public get, set, and other accessors. If <paramref name="nonPublic" /> is false, this array contains only public get, set, and other accessors. If no accessors with the specified visibility are found, this method returns an array with zero (0) elements.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetGetMethod(System.Boolean)">
            <summary>
            When overridden in a derived class, returns the public or non-public get accessor for this property.
            </summary>
            <param name="nonPublic">Indicates whether a non-public get accessor should be returned. true if a non-public accessor is to be returned; otherwise, false.</param>
            <returns>
            A MethodInfo object representing the get accessor for this property, if <paramref name="nonPublic" /> is true. Returns null if <paramref name="nonPublic" /> is false and the get accessor is non-public, or if <paramref name="nonPublic" /> is true but no get accessors exist.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetIndexParameters">
            <summary>
            Gets the index parameters of the property.
            </summary>
            <returns>The index parameters of the property.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetSetMethod(System.Boolean)">
            <summary>
            When overridden in a derived class, returns the set accessor for this property.
            </summary>
            <param name="nonPublic">Indicates whether the accessor should be returned if it is non-public. true if a non-public accessor is to be returned; otherwise, false.</param>
            <returns>
            Value Condition A <see cref="T:System.Reflection.MethodInfo" /> object representing the Set method for this property. The set accessor is public.-or- <paramref name="nonPublic" /> is true and the set accessor is non-public. null<paramref name="nonPublic" /> is true, but the property is read-only.-or- <paramref name="nonPublic" /> is false and the set accessor is non-public.-or- There is no set accessor.
            </returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.GetValue(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo)">
            <summary>
            Gets the value of the property on the given instance.
            </summary>
            <param name="obj">The object to invoke the getter on.</param>
            <param name="invokeAttr">The <see cref="T:System.Reflection.BindingFlags"/> to invoke with.</param>
            <param name="binder">The binder to use.</param>
            <param name="index">The indices to use.</param>
            <param name="culture">The culture to use.</param>
            <returns>The value of the property on the given instance.</returns>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.MemberAliasPropertyInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo)">
            <summary>
            Sets the value of the property on the given instance.
            </summary>
            <param name="obj">The object to set the value on.</param>
            <param name="value">The value to set.</param>
            <param name="invokeAttr">The <see cref="T:System.Reflection.BindingFlags"/> to invoke with.</param>
            <param name="binder">The binder to use.</param>
            <param name="index">The indices to use.</param>
            <param name="culture">The culture to use.</param>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.ReferenceEqualityComparer`1">
            <summary>
            Compares objects by reference only, ignoring equality operators completely. This is used by the property tree reference dictionaries to keep track of references.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.ReferenceEqualityComparer`1.Default">
            <summary>
            A default, cached instance of this generic variant of the reference equality comparer.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ReferenceEqualityComparer`1.Equals(`0,`0)">
            <summary>
            Returns true if the object references are equal.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.ReferenceEqualityComparer`1.GetHashCode(`0)">
            <summary>
            Returns the result of the object's own GetHashCode method.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.UnityVersion">
            <summary>
            Utility class indicating current Unity version.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.UnityVersion.IsVersionOrGreater(System.Int32,System.Int32)">
            <summary>
            Tests current Unity version is equal or greater.
            </summary>
            <param name="major">Minimum major version.</param>
            <param name="minor">Minimum minor version.</param>
            <returns><c>true</c> if the current Unity version is greater. Otherwise <c>false</c>.</returns>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.UnityVersion.Major">
            <summary>
            The current Unity version major.
            </summary>
        </member>
        <member name="F:Sirenix.Serialization.Utilities.UnityVersion.Minor">
            <summary>
            The current Unity version minor.
            </summary>
        </member>
        <member name="T:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities">
            <summary>
            Contains utilities for performing common unsafe operations.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.StructArrayFromBytes``1(System.Byte[],System.Int32)">
            <summary>
            Blindly creates an array of structs from an array of bytes via direct memory copy/blit.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.StructArrayFromBytes``1(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Blindly creates an array of structs from an array of bytes via direct memory copy/blit.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.StructArrayToBytes``1(``0[])">
            <summary>
            Blindly copies an array of structs into an array of bytes via direct memory copy/blit.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.StructArrayToBytes``1(``0[],System.Byte[]@,System.Int32)">
            <summary>
            Blindly copies an array of structs into an array of bytes via direct memory copy/blit.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.StringFromBytes(System.Byte[],System.Int32,System.Boolean)">
            <summary>
            Creates a new string from the contents of a given byte buffer.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.StringToBytes(System.Byte[],System.String,System.Boolean)">
            <summary>
            Writes the contents of a string into a given byte buffer.
            </summary>
        </member>
        <member name="M:Sirenix.Serialization.Utilities.Unsafe.UnsafeUtilities.MemoryCopy(System.Object,System.Object,System.Int32,System.Int32,System.Int32)">
            <summary>
            Blindly mem-copies a given number of bytes from the memory location of one object to another. WARNING: This method is ridiculously dangerous. Only use if you know what you're doing.
            </summary>
        </member>
        <member name="T:Sirenix.OdinInspector.SerializedBehaviour">
            <summary>
            A Unity Behaviour which is serialized by the Sirenix serialization system.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedBehaviour.OnAfterDeserialize">
            <summary>
            Invoked after deserialization has taken place.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedBehaviour.OnBeforeSerialize">
            <summary>
            Invoked before serialization has taken place.
            </summary>
        </member>
        <member name="T:Sirenix.OdinInspector.SerializedComponent">
            <summary>
            A Unity Component which is serialized by the Sirenix serialization system.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedComponent.OnAfterDeserialize">
            <summary>
            Invoked after deserialization has taken place.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedComponent.OnBeforeSerialize">
            <summary>
            Invoked before serialization has taken place.
            </summary>
        </member>
        <member name="T:Sirenix.OdinInspector.SerializedMonoBehaviour">
            <summary>
            A Unity MonoBehaviour which is serialized by the Sirenix serialization system.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedMonoBehaviour.OnAfterDeserialize">
            <summary>
            Invoked after deserialization has taken place.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedMonoBehaviour.OnBeforeSerialize">
            <summary>
            Invoked before serialization has taken place.
            </summary>
        </member>
        <member name="T:Sirenix.OdinInspector.SerializedScriptableObject">
            <summary>
            A Unity ScriptableObject which is serialized by the Sirenix serialization system.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedScriptableObject.OnAfterDeserialize">
            <summary>
            Invoked after deserialization has taken place.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedScriptableObject.OnBeforeSerialize">
            <summary>
            Invoked before serialization has taken place.
            </summary>
        </member>
        <member name="T:Sirenix.OdinInspector.SerializedStateMachineBehaviour">
            <summary>
            A Unity StateMachineBehaviour which is serialized by the Sirenix serialization system.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedStateMachineBehaviour.OnAfterDeserialize">
            <summary>
            Invoked after deserialization has taken place.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedStateMachineBehaviour.OnBeforeSerialize">
            <summary>
            Invoked before serialization has taken place.
            </summary>
        </member>
        <member name="T:Sirenix.OdinInspector.SerializedUnityObject">
            <summary>
            A Unity ScriptableObject which is serialized by the Sirenix serialization system.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedUnityObject.OnAfterDeserialize">
            <summary>
            Invoked after deserialization has taken place.
            </summary>
        </member>
        <member name="M:Sirenix.OdinInspector.SerializedUnityObject.OnBeforeSerialize">
            <summary>
            Invoked before serialization has taken place.
            </summary>
        </member>
    </members>
</doc>
