<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sanford.Multimedia.Midi</name>
    </assembly>
    <members>
        <member name="T:Sanford.Multimedia.Midi.MidiDevice">
            <summary>
            The base class for all MIDI devices.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiDevice.Connect(System.IntPtr,System.IntPtr)">
            <summary>
            Connects a MIDI InputDevice to a MIDI thru or OutputDevice, or 
            connects a MIDI thru device to a MIDI OutputDevice. 
            </summary>
            <param name="handleA">
            Handle to a MIDI InputDevice or a MIDI thru device (for thru 
            devices, this handle must belong to a MIDI OutputDevice).
            </param>
            <param name="handleB">
            Handle to the MIDI OutputDevice or thru device.
            </param>
            <exception cref="T:Sanford.Multimedia.DeviceException">
            If an error occurred while connecting the two devices.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiDevice.Disconnect(System.IntPtr,System.IntPtr)">
            <summary>
            Disconnects a MIDI InputDevice from a MIDI thru or OutputDevice, or 
            disconnects a MIDI thru device from a MIDI OutputDevice. 
            </summary>
            <param name="handleA">
            Handle to a MIDI InputDevice or a MIDI thru device.
            </param>
            <param name="handleB">
            Handle to the MIDI OutputDevice to be disconnected. 
            </param>
            <exception cref="T:Sanford.Multimedia.DeviceException">
            If an error occurred while disconnecting the two devices.
            </exception>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiDeviceException">
            <summary>
            The base class for all MIDI device exception classes.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiDeviceException.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the DeviceException class with the
            specified error code.
            </summary>
            <param name="errCode">
            The error code.
            </param>
        </member>
        <member name="T:Sanford.Multimedia.Midi.InputDevice">
            <summary>
            Represents a MIDI device capable of receiving MIDI events.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.InputDevice.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the InputDevice class with the 
            specified device ID.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDevice.MessageReceived">
            <summary>
            Occurs when any message was received. The underlying type of the message is as specific as possible.
            Channel, Common, Realtime or SysEx.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.InputDeviceException">
            <summary>
            The exception that is thrown when a error occurs with the InputDevice
            class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.InputDeviceException.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the InputDeviceException class with
            the specified error code.
            </summary>
            <param name="errCode">
            The error code.
            </param>
        </member>
        <member name="P:Sanford.Multimedia.Midi.InputDeviceException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiHeader">
            <summary>
            Represents the Windows Multimedia MIDIHDR structure.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.data">
            <summary>
            Pointer to MIDI data.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.bufferLength">
            <summary>
            Size of the buffer.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.bytesRecorded">
            <summary>
            Actual amount of data in the buffer. This value should be less than 
            or equal to the value given in the dwBufferLength member.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.user">
            <summary>
            Custom user data.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.flags">
            <summary>
            Flags giving information about the buffer.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.next">
            <summary>
            Reserved; do not use.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.reserved">
            <summary>
            Reserved; do not use.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.offset">
            <summary>
            Offset into the buffer when a callback is performed. (This 
            callback is generated because the MEVT_F_CALLBACK flag is 
            set in the dwEvent member of the MidiEventArgs structure.) 
            This offset enables an application to determine which 
            event caused the callback. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiHeader.reservedArray">
            <summary>
            Reserved; do not use.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiHeaderBuilder">
            <summary>
            Builds a pointer to a MidiHeader structure.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiHeaderBuilder.#ctor">
            <summary>
            Initializes a new instance of the MidiHeaderBuilder.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiHeaderBuilder.Build">
            <summary>
            Builds the pointer to the MidiHeader structure.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiHeaderBuilder.InitializeBuffer(Sanford.Multimedia.Midi.SysExMessage)">
            <summary>
            Initializes the MidiHeaderBuilder with the specified SysExMessage.
            </summary>
            <param name="message">
            The SysExMessage to use for initializing the MidiHeaderBuilder.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiHeaderBuilder.Destroy">
            <summary>
            Releases the resources associated with the built MidiHeader pointer.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiHeaderBuilder.Destroy(System.IntPtr)">
            <summary>
            Releases the resources associated with the specified MidiHeader pointer.
            </summary>
            <param name="headerPtr">
            The MidiHeader pointer.
            </param>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MidiHeaderBuilder.BufferLength">
            <summary>
            The length of the system exclusive buffer.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MidiHeaderBuilder.Result">
            <summary>
            Gets the pointer to the MidiHeader.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiInCaps">
            <summary>
            Represents MIDI input device capabilities.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiInCaps.mid">
            <summary>
            Manufacturer identifier of the device driver for the Midi output 
            device. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiInCaps.pid">
            <summary>
            Product identifier of the Midi output device. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiInCaps.driverVersion">
            <summary>
            Version number of the device driver for the Midi output device. The 
            high-order byte is the major version number, and the low-order byte 
            is the minor version number. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiInCaps.name">
            <summary>
            Product name.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiInCaps.support">
            <summary>
            Optional functionality supported by the device. 
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiOutCaps">
            <summary>
            Represents MIDI output device capabilities.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.mid">
            <summary>
            Manufacturer identifier of the device driver for the Midi output 
            device. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.pid">
            <summary>
            Product identifier of the Midi output device. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.driverVersion">
            <summary>
            Version number of the device driver for the Midi output device. The 
            high-order byte is the major version number, and the low-order byte 
            is the minor version number. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.name">
            <summary>
            Product name.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.technology">
            <summary>
            Flags describing the type of the Midi output device. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.voices">
            <summary>
            Number of voices supported by an internal synthesizer device. If 
            the device is a port, this member is not meaningful and is set 
            to 0. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.notes">
            <summary>
            Maximum number of simultaneous notes that can be played by an 
            internal synthesizer device. If the device is a port, this member 
            is not meaningful and is set to 0. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.channelMask">
            <summary>
            Channels that an internal synthesizer device responds to, where the 
            least significant bit refers to channel 0 and the most significant 
            bit to channel 15. Port devices that transmit on all channels set 
            this member to 0xFFFF. 
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiOutCaps.support">
            <summary>
            Optional functionality supported by the device. 
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.NoOpEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.OutputDevice">
            <summary>
            Represents a device capable of sending MIDI messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.OutputDevice.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the OutputDevice class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.OutputDevice.Close">
            <summary>
            Closes the OutputDevice.
            </summary>
            <exception cref="T:Sanford.Multimedia.Midi.OutputDeviceException">
            If an error occurred while closing the OutputDevice.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.OutputDevice.Reset">
            <summary>
            Resets the OutputDevice.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.OutputDevice.RunningStatusEnabled">
            <summary>
            Gets or sets a value indicating whether the OutputDevice uses
            a running status.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.OutputDeviceException">
            <summary>
            The exception that is thrown when a error occurs with the OutputDevice
            class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.OutputDeviceException.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the OutputDeviceException class with
            the specified error code.
            </summary>
            <param name="errCode">
            The error code.
            </param>
        </member>
        <member name="P:Sanford.Multimedia.Midi.OutputDeviceException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.ShortMessageEventArgs">
            <summary>
            Raw short message as int or byte array, useful when working with VST.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.InputDeviceMidiEvents">
            <summary>
            MidiSignal provides all midi events from an input device
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.InputDeviceMidiEvents.#ctor(Sanford.Multimedia.Midi.InputDevice)">
            <summary>
            Create Midisignal with an input device which fires the events
            </summary>
            <param name="inDevice"></param>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDeviceMidiEvents.MessageReceived">
            <summary>
            All incoming midi messages in short format
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDeviceMidiEvents.ShortMessageReceived">
            <summary>
            All incoming midi messages in short format
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDeviceMidiEvents.ChannelMessageReceived">
            <summary>
            Channel messages like, note, controller, program, ...
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDeviceMidiEvents.SysExMessageReceived">
            <summary>
            SysEx messages
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDeviceMidiEvents.SysCommonMessageReceived">
            <summary>
            Midi timecode, song position, song select, tune request
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.InputDeviceMidiEvents.SysRealtimeMessageReceived">
            <summary>
            Timing events, midi clock, start, stop, reset, active sense, tick
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MergeMidiEvents">
            <summary>
            Takes a number of MidiEvents and merges them into a new single MidiEvent source
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.KeySignatureBuilder">
            <summary>
            Builds key signature MetaMessages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.KeySignatureBuilder.#ctor">
            <summary>
            Initializes a new instance of the KeySignatureBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.KeySignatureBuilder.#ctor(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes a new instance of the KeySignatureBuilder class with 
            the specified key signature MetaMessage.
            </summary>
            <param name="message">
            The key signature MetaMessage to use for initializing the 
            KeySignatureBuilder class.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.KeySignatureBuilder.Initialize(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes the KeySignatureBuilder with the specified MetaMessage.
            </summary>
            <param name="message">
            The key signature MetaMessage to use for initializing the 
            KeySignatureBuilder.
            </param>
        </member>
        <member name="P:Sanford.Multimedia.Midi.KeySignatureBuilder.Key">
            <summary>
            Gets or sets the key.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.KeySignatureBuilder.Result">
            <summary>
            The build key signature MetaMessage.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.KeySignatureBuilder.Build">
            <summary>
            Builds the key signature MetaMessage.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.GeneralMidiInstrument">
            <summary>
            Defines constants representing the General MIDI instrument set.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.ChannelCommand">
            <summary>
            Defines constants for ChannelMessage types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.NoteOff">
            <summary>
            Represents the note-off command type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.NoteOn">
            <summary>
            Represents the note-on command type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.PolyPressure">
            <summary>
            Represents the poly pressure (aftertouch) command type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.Controller">
            <summary>
            Represents the controller command type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.ProgramChange">
            <summary>
            Represents the program change command type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.ChannelPressure">
            <summary>
            Represents the channel pressure (aftertouch) command 
            type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelCommand.PitchWheel">
            <summary>
            Represents the pitch wheel command type.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.ControllerType">
            <summary>
            Defines constants for controller types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.BankSelect">
            <summary>
            The Bank Select coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.ModulationWheel">
            <summary>
            The Modulation Wheel coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.BreathControl">
            <summary>
            The Breath Control coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.FootPedal">
            <summary>
            The Foot Pedal coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.PortamentoTime">
            <summary>
            The Portamento Time coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.DataEntrySlider">
            <summary>
            The Data Entry Slider coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.Volume">
            <summary>
            The Volume coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.Balance">
            <summary>
            The Balance coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.Pan">
            <summary>
            The Pan position coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.Expression">
            <summary>
            The Expression coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.EffectControl1">
            <summary>
            The Effect Control 1 coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.EffectControl2">
            <summary>
            The Effect Control 2 coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeSlider1">
            <summary>
            The General Puprose Slider 1
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeSlider2">
            <summary>
            The General Puprose Slider 2
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeSlider3">
            <summary>
            The General Puprose Slider 3
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeSlider4">
            <summary>
            The General Puprose Slider 4
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.BankSelectFine">
            <summary>
            The Bank Select fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.ModulationWheelFine">
            <summary>
            The Modulation Wheel fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.BreathControlFine">
            <summary>
            The Breath Control fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.FootPedalFine">
            <summary>
            The Foot Pedal fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.PortamentoTimeFine">
            <summary>
            The Portamento Time fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.DataEntrySliderFine">
            <summary>
            The Data Entry Slider fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.VolumeFine">
            <summary>
            The Volume fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.BalanceFine">
            <summary>
            The Balance fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.PanFine">
            <summary>
            The Pan position fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.ExpressionFine">
            <summary>
            The Expression fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.EffectControl1Fine">
            <summary>
            The Effect Control 1 fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.EffectControl2Fine">
            <summary>
            The Effect Control 2 fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.HoldPedal1">
            <summary>
            The Hold Pedal 1.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.Portamento">
            <summary>
            The Portamento.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SustenutoPedal">
            <summary>
            The Sustenuto Pedal.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoftPedal">
            <summary>
            The Soft Pedal.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.LegatoPedal">
            <summary>
            The Legato Pedal.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.HoldPedal2">
            <summary>
            The Hold Pedal 2.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundVariation">
            <summary>
            The Sound Variation.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundTimbre">
            <summary>
            The Sound Timbre.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundReleaseTime">
            <summary>
            The Sound Release Time.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundAttackTime">
            <summary>
            The Sound Attack Time.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundBrightness">
            <summary>
            The Sound Brightness.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundControl6">
            <summary>
            The Sound Control 6.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundControl7">
            <summary>
            The Sound Control 7.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundControl8">
            <summary>
            The Sound Control 8.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundControl9">
            <summary>
            The Sound Control 9.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.SoundControl10">
            <summary>
            The Sound Control 10.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeButton1">
            <summary>
            The General Purpose Button 1.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeButton2">
            <summary>
            The General Purpose Button 2.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeButton3">
            <summary>
            The General Purpose Button 3.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.GeneralPurposeButton4">
            <summary>
            The General Purpose Button 4.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.EffectsLevel">
            <summary>
            The Effects Level.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.TremeloLevel">
            <summary>
            The Tremelo Level.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.ChorusLevel">
            <summary>
            The Chorus Level.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.CelesteLevel">
            <summary>
            The Celeste Level.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.PhaserLevel">
            <summary>
            The Phaser Level.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.DataButtonIncrement">
            <summary>
            The Data Button Increment.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.DataButtonDecrement">
            <summary>
            The Data Button Decrement.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.NonRegisteredParameterFine">
            <summary>
            The NonRegistered Parameter Fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.NonRegisteredParameterCoarse">
            <summary>
            The NonRegistered Parameter Coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.RegisteredParameterFine">
            <summary>
            The Registered Parameter Fine.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.RegisteredParameterCoarse">
            <summary>
            The Registered Parameter Coarse.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.AllSoundOff">
            <summary>
            The All Sound Off.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.AllControllersOff">
            <summary>
            The All Controllers Off.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.LocalKeyboard">
            <summary>
            The Local Keyboard.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.AllNotesOff">
            <summary>
            The All Notes Off.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.OmniModeOff">
            <summary>
            The Omni Mode Off.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.OmniModeOn">
            <summary>
            The Omni Mode On.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.MonoOperation">
            <summary>
            The Mono Operation.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ControllerType.PolyOperation">
            <summary>
            The Poly Operation.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.ChannelMessage">
            <summary>
            Represents MIDI channel messages.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.ChannelMessage.MidiChannelMaxValue">
            <summary>
            Maximum value allowed for MIDI channels.
            </summary> 
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.#ctor(Sanford.Multimedia.Midi.ChannelCommand,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the ChannelEventArgs class with the
            specified command, MIDI channel, and data 1 values.
            </summary>
            <param name="command">
            The command value.
            </param>
            <param name="midiChannel">
            The MIDI channel.
            </param>
            <param name="data1">
            The data 1 value.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If midiChannel is less than zero or greater than 15. Or if 
            data1 is less than zero or greater than 127.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.#ctor(Sanford.Multimedia.Midi.ChannelCommand,System.Int32,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the ChannelEventArgs class with the 
            specified command, MIDI channel, data 1, and data 2 values.
            </summary>
            <param name="command">
            The command value.
            </param>
            <param name="midiChannel">
            The MIDI channel.
            </param>
            <param name="data1">
            The data 1 value.
            </param>
            <param name="data2">
            The data 2 value.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If midiChannel is less than zero or greater than 15. Or if 
            data1 or data 2 is less than zero or greater than 127. 
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.GetHashCode">
            <summary>
            Returns a value for the current ChannelEventArgs suitable for use in 
            hashing algorithms.
            </summary>
            <returns>
            A hash code for the current ChannelEventArgs.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.Equals(System.Object)">
            <summary>
            Determines whether two ChannelEventArgs instances are equal.
            </summary>
            <param name="obj">
            The ChannelMessageEventArgs to compare with the current ChannelEventArgs.
            </param>
            <returns>
            <b>true</b> if the specified object is equal to the current 
            ChannelMessageEventArgs; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.DataBytesPerType(Sanford.Multimedia.Midi.ChannelCommand)">
            <summary>
            Returns a value indicating how many bytes are used for the 
            specified ChannelCommand.
            </summary>
            <param name="command">
            The ChannelCommand value to test.
            </param>
            <returns>
            The number of bytes used for the specified ChannelCommand.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.UnpackCommand(System.Int32)">
            <summary>
            Unpacks the command value from the specified integer channel 
            message.
            </summary>
            <param name="message">
            The message to unpack.
            </param>
            <returns>
            The command value for the packed message.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.UnpackMidiChannel(System.Int32)">
            <summary>
            Unpacks the MIDI channel from the specified integer channel 
            message.
            </summary>
            <param name="message">
            The message to unpack.
            </param>
            <returns>
            The MIDI channel for the pack message.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.PackMidiChannel(System.Int32,System.Int32)">
            <summary>
            Packs the MIDI channel into the specified integer message.
            </summary>
            <param name="message">
            The message into which the MIDI channel is packed.
            </param>
            <param name="midiChannel">
            The MIDI channel to pack into the message.
            </param>
            <returns>
            An integer message.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If midiChannel is less than zero or greater than 15.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessage.PackCommand(System.Int32,Sanford.Multimedia.Midi.ChannelCommand)">
            <summary>
            Packs the command value into an integer message.
            </summary>
            <param name="message">
            The message into which the command is packed.
            </param>
            <param name="command">
            The command value to pack into the message.
            </param>
            <returns>
            An integer message.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessage.Command">
            <summary>
            Gets the channel command value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessage.MidiChannel">
            <summary>
            Gets the MIDI channel.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessage.Data1">
            <summary>
            Gets the first data value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessage.Data2">
            <summary>
            Gets the second data value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessage.MessageType">
            <summary>
            Gets the EventType.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MessageType">
            <summary>
            Defines constants representing MIDI message types.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.IMidiMessage">
            <summary>
            Represents the basic functionality for all MIDI messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.IMidiMessage.GetBytes">
            <summary>
            Gets a byte array representation of the MIDI message.
            </summary>
            <returns>
            A byte array representation of the MIDI message.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.IMidiMessage.Status">
            <summary>
            Gets the MIDI message's status value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.IMidiMessage.MessageType">
            <summary>
            Gets the MIDI event's type.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.IMidiMessage.DeltaFrames">
            <summary>
            Delta samples when the event should be processed in the next audio buffer.
            Leave at 0 for realtime input to play as fast as possible.
            Set to the desired sample in the next buffer if you play a midi sequence synchronized to the audio callback
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.ChannelMessageBuilder">
            <summary>
            Provides functionality for building ChannelMessages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessageBuilder.#ctor">
            <summary>
            Initializes a new instance of the ChannelMessageBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessageBuilder.#ctor(Sanford.Multimedia.Midi.ChannelMessage)">
            <summary>
            Initializes a new instance of the ChannelMessageBuilder class with
            the specified ChannelMessageEventArgs.
            </summary>
            <param name="message">
            The ChannelMessageEventArgs to use for initializing the ChannelMessageBuilder.
            </param>
            <remarks>
            The ChannelMessageBuilder uses the specified ChannelMessageEventArgs to 
            initialize its property values.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessageBuilder.Initialize(Sanford.Multimedia.Midi.ChannelMessage)">
            <summary>
            Initializes the ChannelMessageBuilder with the specified 
            ChannelMessageEventArgs.
            </summary>
            <param name="message">
            The ChannelMessageEventArgs to use for initializing the ChannelMessageBuilder.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessageBuilder.Clear">
            <summary>
            Clears the ChannelMessageEventArgs cache.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.Count">
            <summary>
            Gets the number of messages in the ChannelMessageEventArgs cache.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.Result">
            <summary>
            Gets the built ChannelMessageEventArgs.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.Message">
            <summary>
            Gets or sets the ChannelMessageEventArgs as a packed integer. 
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.Command">
            <summary>
            Gets or sets the Command value to use for building the 
            ChannelMessageEventArgs.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.MidiChannel">
            <summary>
            Gets or sets the MIDI channel to use for building the 
            ChannelMessageEventArgs.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            MidiChannel is set to a value less than zero or greater than 15.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.Data1">
            <summary>
            Gets or sets the first data value to use for building the 
            ChannelMessageEventArgs.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Data1 is set to a value less than zero or greater than 127.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ChannelMessageBuilder.Data2">
            <summary>
            Gets or sets the second data value to use for building the 
            ChannelMessageEventArgs.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Data2 is set to a value less than zero or greater than 127.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.ChannelMessageBuilder.Build">
            <summary>
            Builds a ChannelMessageEventArgs.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.IMessageBuilder">
            <summary>
            Represents functionality for building MIDI messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.IMessageBuilder.Build">
            <summary>
            Builds the MIDI message.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MetaTextBuilder">
            <summary>
            Provides functionality for building meta text messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.#ctor">
            <summary>
            Initializes a new instance of the MetaMessageTextBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.#ctor(Sanford.Multimedia.Midi.MetaType)">
            <summary>
            Initializes a new instance of the MetaMessageTextBuilder class with the 
            specified type.
            </summary>
            <param name="type">
            The type of MetaMessage.
            </param>
            <exception cref="T:System.ArgumentException">
            If the MetaMessage type is not a text based type.
            </exception>
            <remarks>
            The MetaMessage type must be one of the following text based 
            types:
            <list>
            <item>
            Copyright
            </item>
            <item>
            Cuepoint
            </item>
            <item>
            DeviceName
            </item>
            <item>
            InstrumentName
            </item>
            <item>
            Lyric
            </item>
            <item>
            Marker
            </item>
            <item>
            ProgramName
            </item>
            <item>
            Text
            </item>
            <item>
            TrackName
            </item>
            </list>
            If the MetaMessage is not a text based type, an exception 
            will be thrown.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.#ctor(Sanford.Multimedia.Midi.MetaType,System.String)">
            <summary>
            Initializes a new instance of the MetaMessageTextBuilder class with the 
            specified type.
            </summary>
            <param name="type">
            The type of MetaMessage.
            </param>
            <exception cref="T:System.ArgumentException">
            If the MetaMessage type is not a text based type.
            </exception>
            <remarks>
            The MetaMessage type must be one of the following text based 
            types:
            <list>
            <item>
            Copyright
            </item>
            <item>
            Cuepoint
            </item>
            <item>
            DeviceName
            </item>
            <item>
            InstrumentName
            </item>
            <item>
            Lyric
            </item>
            <item>
            Marker
            </item>
            <item>
            ProgramName
            </item>
            <item>
            Text
            </item>
            <item>
            TrackName
            </item>
            </list>
            If the MetaMessage is not a text based type, an exception 
            will be thrown.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.#ctor(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes a new instance of the MetaMessageTextBuilder class with the
            specified MetaMessage.
            </summary>
            <param name="message">
            The MetaMessage to use for initializing the MetaMessageTextBuilder.
            </param>
            <exception cref="T:System.ArgumentException">
            If the MetaMessage is not a text based type.
            </exception>
            <remarks>
            The MetaMessage must be one of the following text based types:
            <list>
            <item>
            Copyright
            </item>
            <item>
            Cuepoint
            </item>
            <item>
            DeviceName
            </item>
            <item>
            InstrumentName
            </item>
            <item>
            Lyric
            </item>
            <item>
            Marker
            </item>
            <item>
            ProgramName
            </item>
            <item>
            Text
            </item>
            <item>
            TrackName
            </item>
            </list>
            If the MetaMessage is not a text based type, an exception will be 
            thrown.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.Initialize(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes the MetaMessageTextBuilder with the specified MetaMessage.
            </summary>
            <param name="message">
            The MetaMessage to use for initializing the MetaMessageTextBuilder.
            </param>
            <exception cref="T:System.ArgumentException">
            If the MetaMessage is not a text based type.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.IsTextType(Sanford.Multimedia.Midi.MetaType)">
            <summary>
            Indicates whether or not the specified MetaType is a text based 
            type.
            </summary>
            <param name="type">
            The MetaType to test.
            </param>
            <returns>
            <b>true</b> if the MetaType is a text based type; 
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaTextBuilder.Text">
            <summary>
            Gets or sets the text for the MetaMessage.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaTextBuilder.Type">
            <summary>
            Gets or sets the MetaMessage type.
            </summary>
            <exception cref="T:System.ArgumentException">
            If the type is not a text based type.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaTextBuilder.Result">
            <summary>
            Gets the built MetaMessage.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaTextBuilder.Build">
            <summary>
            Builds the text MetaMessage.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SongPositionPointerBuilder">
            <summary>
            Provides functionality for building song position pointer messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SongPositionPointerBuilder.#ctor">
            <summary>
            Initializes a new instance of the SongPositionPointerBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SongPositionPointerBuilder.#ctor(Sanford.Multimedia.Midi.SysCommonMessage)">
            <summary>
            Initializes a new instance of the SongPositionPointerBuilder class
            with the specified song position pointer message.
            </summary>
            <param name="message">
            The song position pointer message to use for initializing the 
            SongPositionPointerBuilder.
            </param>
            <exception cref="T:System.ArgumentException">
            If message is not a song position pointer message.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SongPositionPointerBuilder.Initialize(Sanford.Multimedia.Midi.SysCommonMessage)">
            <summary>
            Initializes the SongPositionPointerBuilder with the specified 
            SysCommonMessage.
            </summary>
            <param name="message">
            The SysCommonMessage to use to initialize the 
            SongPositionPointerBuilder.
            </param>
            <exception cref="T:System.ArgumentException">
            If the SysCommonMessage is not a song position pointer message.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SongPositionPointerBuilder.PositionInTicks">
            <summary>
            Gets or sets the sequence position in ticks.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Value is set to less than zero.
            </exception>
            <remarks>
            Note: the position in ticks value is converted to the song position
            pointer value. Since the song position pointer has a lower 
            resolution than the position in ticks, there is a probable loss of 
            resolution when setting the position in ticks value.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SongPositionPointerBuilder.Ppqn">
            <summary>
            Gets or sets the PulsesPerQuarterNote object.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Value is not a multiple of 24.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SongPositionPointerBuilder.SongPosition">
            <summary>
            Gets or sets the song position.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Value is set to less than zero.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SongPositionPointerBuilder.Result">
            <summary>
            Gets the built song position pointer message.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SongPositionPointerBuilder.Build">
            <summary>
            Builds a song position pointer message.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysCommonMessageBuilder">
            <summary>
            Provides functionality for building SysCommonMessages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessageBuilder.#ctor">
            <summary>
            Initializes a new instance of the SysCommonMessageBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessageBuilder.#ctor(Sanford.Multimedia.Midi.SysCommonMessage)">
            <summary>
            Initializes a new instance of the SysCommonMessageBuilder class 
            with the specified SystemCommonMessage.
            </summary>
            <param name="message">
            The SysCommonMessage to use for initializing the 
            SysCommonMessageBuilder.
            </param>
            <remarks>
            The SysCommonMessageBuilder uses the specified SysCommonMessage to 
            initialize its property values.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Initialize(Sanford.Multimedia.Midi.SysCommonMessage)">
            <summary>
            Initializes the SysCommonMessageBuilder with the specified 
            SysCommonMessage.
            </summary>
            <param name="message">
            The SysCommonMessage to use for initializing the 
            SysCommonMessageBuilder.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Clear">
            <summary>
            Clears the SysCommonMessageBuilder cache.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Count">
            <summary>
            Gets the number of messages in the SysCommonMessageBuilder cache.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Result">
            <summary>
            Gets the built SysCommonMessage.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Message">
            <summary>
            Gets or sets the SysCommonMessage as a packed integer.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Type">
            <summary>
            Gets or sets the type of SysCommonMessage.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Data1">
            <summary>
            Gets or sets the first data value to use for building the 
            SysCommonMessage.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Data1 is set to a value less than zero or greater than 127.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Data2">
            <summary>
            Gets or sets the second data value to use for building the 
            SysCommonMessage.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Data2 is set to a value less than zero or greater than 127.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessageBuilder.Build">
            <summary>
            Builds a SysCommonMessage.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.TempoChangeBuilder">
            <summary>
            Provides functionality for building tempo messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TempoChangeBuilder.#ctor">
            <summary>
            Initializes a new instance of the TempoChangeBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TempoChangeBuilder.#ctor(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initialize a new instance of the TempoChangeBuilder class with the 
            specified MetaMessage.
            </summary>
            <param name="message">
            The MetaMessage to use for initializing the TempoChangeBuilder class.
            </param>
            <exception cref="T:System.ArgumentException">
            If the specified MetaMessage is not a tempo type.
            </exception>
            <remarks>
            The TempoChangeBuilder uses the specified MetaMessage to initialize 
            its property values.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TempoChangeBuilder.Initialize(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes the TempoChangeBuilder with the specified MetaMessage.
            </summary>
            <param name="message">
            The MetaMessage to use for initializing the TempoChangeBuilder.
            </param>
            <exception cref="T:System.ArgumentException">
            If the specified MetaMessage is not a tempo type.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TempoChangeBuilder.Tempo">
            <summary>
            Gets or sets the tempo.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Value is set to less than zero.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TempoChangeBuilder.Result">
            <summary>
            Gets the built message.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TempoChangeBuilder.Build">
            <summary>
            Builds the tempo change MetaMessage.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.TimeSignatureBuilder">
            <summary>
            Provides easy to use functionality for time signature MetaMessages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TimeSignatureBuilder.#ctor">
            <summary>
            Initializes a new instance of the TimeSignatureBuilder class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TimeSignatureBuilder.#ctor(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes a new instance of the TimeSignatureBuilder class with the 
            specified MetaMessage.
            </summary>
            <param name="message">
            The MetaMessage to use for initializing the TimeSignatureBuilder class.
            </param>
            <exception cref="T:System.ArgumentException">
            If the specified MetaMessage is not a time signature type.
            </exception>
            <remarks>
            The TimeSignatureBuilder uses the specified MetaMessage to 
            initialize its property values.
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TimeSignatureBuilder.Initialize(Sanford.Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes the TimeSignatureBuilder with the specified MetaMessage.
            </summary>
            <param name="message">
            The MetaMessage to use for initializing the TimeSignatureBuilder. 
            </param>
            <exception cref="T:System.ArgumentException">
            If the specified MetaMessage is not a time signature type.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TimeSignatureBuilder.Numerator">
            <summary>
            Gets or sets the numerator.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Numerator is set to a value less than one.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TimeSignatureBuilder.Denominator">
            <summary>
            Gets or sets the denominator.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Denominator is set to a value less than 2. 
            </exception>
            <exception cref="T:System.ArgumentException">
            Denominator is set to a value that is not a power of 2.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TimeSignatureBuilder.ClocksPerMetronomeClick">
            <summary>
            Gets or sets the clocks per metronome click.
            </summary>
            <remarks>
            Clocks per metronome click determines how many MIDI clocks occur
            for each metronome click.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TimeSignatureBuilder.ThirtySecondNotesPerQuarterNote">
            <summary>
            Gets or sets how many thirty second notes there are for each
            quarter note.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TimeSignatureBuilder.Result">
            <summary>
            Gets the built message.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.TimeSignatureBuilder.Build">
            <summary>
            Builds the time signature MetaMessage.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MetaType">
            <summary>
            Represents MetaMessage types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.SequenceNumber">
            <summary>
            Represents sequencer number type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.Text">
            <summary>
            Represents the text type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.Copyright">
            <summary>
            Represents the copyright type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.TrackName">
            <summary>
            Represents the track name type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.InstrumentName">
            <summary>
            Represents the instrument name type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.Lyric">
            <summary>
            Represents the lyric type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.Marker">
            <summary>
            Represents the marker type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.CuePoint">
            <summary>
            Represents the cue point type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.ProgramName">
            <summary>
            Represents the program name type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.DeviceName">
            <summary>
            Represents the device name type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.EndOfTrack">
            <summary>
            Represents then end of track type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.Tempo">
            <summary>
            Represents the tempo type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.SmpteOffset">
            <summary>
            Represents the Smpte offset type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.TimeSignature">
            <summary>
            Represents the time signature type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.KeySignature">
            <summary>
            Represents the key signature type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaType.ProprietaryEvent">
            <summary>
            Represents the proprietary event type.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MetaMessage">
            <summary>
            Represents MIDI meta messages.
            </summary>
            <remarks>
            Meta messages are MIDI messages that are stored in MIDI files. These
            messages are not sent or received via MIDI but are read and 
            interpretted from MIDI files. They provide information that describes 
            a MIDI file's properties. For example, tempo changes are implemented
            using meta messages.
            </remarks>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaMessage.Shift">
            <summary>
            The amount to shift data bytes when calculating the hash code.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaMessage.TempoLength">
            <summary>
            Length in bytes for tempo meta message data.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaMessage.SmpteOffsetLength">
            <summary>
            Length in bytes for SMPTE offset meta message data.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaMessage.TimeSigLength">
            <summary>
            Length in bytes for time signature meta message data.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaMessage.KeySigLength">
            <summary>
            Length in bytes for key signature meta message data.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MetaMessage.EndOfTrackMessage">
            <summary>
            End of track meta message.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaMessage.#ctor(Sanford.Multimedia.Midi.MetaType,System.Byte[])">
            <summary>
            Initializes a new instance of the MetaMessage class.
            </summary>
            <param name="type">
            The type of MetaMessage.
            </param>
            <param name="data">
            The MetaMessage data.
            </param>
            <exception cref="T:System.ArgumentException">
            The length of the MetaMessage is not valid for the MetaMessage type.
            </exception>
            <remarks>
            Each MetaMessage has type and length properties. For certain 
            types, the length of the message data must be a specific value. For
            example, tempo messages must have a data length of exactly three. 
            Some MetaMessage types can have any data length. Text messages are
            an example of a MetaMessage that can have a variable data length.
            When a MetaMessage is created, the length of the data is checked
            to make sure that it is valid for the specified type. If it is not,
            an exception is thrown. 
            </remarks>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaMessage.GetBytes">
            <summary>
            Gets a copy of the data bytes for this meta message.
            </summary>
            <returns>
            A copy of the data bytes for this meta message.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaMessage.GetHashCode">
            <summary>
            Returns a value for the current MetaMessage suitable for use in 
            hashing algorithms.
            </summary>
            <returns>
            A hash code for the current MetaMessage.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaMessage.Equals(System.Object)">
            <summary>
            Determines whether two MetaMessage instances are equal.
            </summary>
            <param name="obj">
            The MetaMessage to compare with the current MetaMessage.
            </param>
            <returns>
            <b>true</b> if the specified MetaMessage is equal to the current 
            MetaMessage; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MetaMessage.ValidateDataLength(Sanford.Multimedia.Midi.MetaType,System.Int32)">
            <summary>
            Validates data length.
            </summary>
            <param name="type">
            The MetaMessage type.
            </param>
            <param name="length">
            The length of the MetaMessage data.
            </param>
            <returns>
            <b>true</b> if the data length is valid for this type of 
            MetaMessage; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaMessage.Item(System.Int32)">
            <summary>
            Gets the element at the specified index.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or greater than or equal to Length.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaMessage.Length">
            <summary>
            Gets the length of the meta message.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaMessage.MetaType">
            <summary>
            Gets the type of meta message.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaMessage.Status">
            <summary>
            Gets the status value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MetaMessage.MessageType">
            <summary>
            Gets the MetaMessage's MessageType.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiEvents">
            <summary>
            An event source that combines all possible midi events
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MidiEvents.DeviceID">
            <summary>
            Gets the device identifier of the input devive.
            Set it to any negative value for custom event sources.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.MidiEvents.MessageReceived">
            <summary>
            Occurs when any message was received. The underlying type of the message should be as specific as possible.
            Channel, Common, Realtime or SysEx.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.MidiEvents.ShortMessageReceived">
            <summary>
            All incoming midi short messages 
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.MidiEvents.ChannelMessageReceived">
            <summary>
            Channel messages like, note, controller, program, ...
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.MidiEvents.SysExMessageReceived">
            <summary>
            SysEx messages
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.MidiEvents.SysCommonMessageReceived">
            <summary>
            Midi timecode, song position, song select, tune request
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.MidiEvents.SysRealtimeMessageReceived">
            <summary>
            Timing events, midi clock, start, stop, reset, active sense, tick
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.OutputDeviceEventSink">
            <summary>
            Event sink that sends midi messages to an output device
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.OutputDeviceEventSink.Dispose">
            <summary>
            Disposes the underying output device and removes the events from the source
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MidiMessageBase.DeltaFrames">
            <summary>
            Delta samples when the event should be processed in the next audio buffer.
            Leave at 0 for realtime input to play as fast as possible.
            Set to the desired sample in the next buffer if you play a midi sequence synchronized to the audio callback
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.ShortMessage">
            <summary>
            Represents the basic class for all MIDI short messages.
            </summary>
            <remarks>
            MIDI short messages represent all MIDI messages except meta messages
            and system exclusive messages. This includes channel messages, system
            realtime messages, and system common messages.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ShortMessage.Message">
            <summary>
            Gets the short message as a packed integer.
            </summary>
            <remarks>
            The message is packed into an integer value with the low-order byte
            of the low-word representing the status value. The high-order byte
            of the low-word represents the first data value, and the low-order
            byte of the high-word represents the second data value.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Midi.ShortMessage.Status">
            <summary>
            Gets the messages's status value.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysCommonType">
            <summary>
            Defines constants representing the various system common message types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysCommonType.MidiTimeCode">
            <summary>
            Represents the MTC system common message type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysCommonType.SongPositionPointer">
            <summary>
            Represents the song position pointer type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysCommonType.SongSelect">
            <summary>
            Represents the song select type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysCommonType.TuneRequest">
            <summary>
            Represents the tune request type.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysCommonMessage">
            <summary>
            Represents MIDI system common messages.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessage.#ctor(Sanford.Multimedia.Midi.SysCommonType)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with the
            specified type.
            </summary>
            <param name="type">
            The type of SysCommonMessage.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessage.#ctor(Sanford.Multimedia.Midi.SysCommonType,System.Int32)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with the 
            specified type and the first data value.
            </summary>
            <param name="type">
            The type of SysCommonMessage.
            </param>
            <param name="data1">
            The first data value.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If data1 is less than zero or greater than 127.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessage.#ctor(Sanford.Multimedia.Midi.SysCommonType,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with the 
            specified type, first data value, and second data value.
            </summary>
            <param name="type">
            The type of SysCommonMessage.
            </param>
            <param name="data1">
            The first data value.
            </param>
            <param name="data2">
            The second data value.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If data1 or data2 is less than zero or greater than 127.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessage.GetHashCode">
            <summary>
            Returns a value for the current SysCommonMessage suitable for use 
            in hashing algorithms.
            </summary>
            <returns>
            A hash code for the current SysCommonMessage.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysCommonMessage.Equals(System.Object)">
            <summary>
            Determines whether two SysCommonMessage instances are equal.
            </summary>
            <param name="obj">
            The SysCommonMessage to compare with the current SysCommonMessage.
            </param>
            <returns>
            <b>true</b> if the specified SysCommonMessage is equal to the 
            current SysCommonMessage; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessage.SysCommonType">
            <summary>
            Gets the SysCommonType.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessage.Data1">
            <summary>
            Gets the first data value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessage.Data2">
            <summary>
            Gets the second data value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysCommonMessage.MessageType">
            <summary>
            Gets the MessageType.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysExType">
            <summary>
            Defines constants representing various system exclusive message types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysExType.Start">
            <summary>
            Represents the start of system exclusive message type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysExType.Continuation">
            <summary>
            Represents the continuation of a system exclusive message.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysExMessage">
            <summary>
            Represents MIDI system exclusive messages.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysExMessage.SysExChannelMaxValue">
            <summary>
            Maximum value for system exclusive channels.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysExMessage.#ctor(System.Byte[])">
            <summary>
            Initializes a new instance of the SysExMessageEventArgs class with the
            specified system exclusive data.
            </summary>
            <param name="data">
            The system exclusive data.
            </param>
            <remarks>
            The system exclusive data's status byte, the first byte in the 
            data, must have a value of 0xF0 or 0xF7.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysExMessage.Item(System.Int32)">
            <summary>
            Gets the element at the specified index.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If index is less than zero or greater than or equal to the length 
            of the message.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysExMessage.Length">
            <summary>
            Gets the length of the system exclusive data.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysExMessage.SysExType">
            <summary>
            Gets the system exclusive type.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysExMessage.Status">
            <summary>
            Gets the status value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysExMessage.MessageType">
            <summary>
            Gets the MessageType.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysRealtimeType">
            <summary>
            Defines constants representing the various system realtime message types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.Clock">
            <summary>
            Represents the clock system realtime type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.Tick">
            <summary>
            Represents the tick system realtime type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.Start">
            <summary>
            Represents the start system realtime type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.Continue">
            <summary>
            Represents the continue system realtime type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.Stop">
            <summary>
            Represents the stop system realtime type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.ActiveSense">
            <summary>
            Represents the active sense system realtime type.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeType.Reset">
            <summary>
            Represents the reset system realtime type.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SysRealtimeMessage">
            <summary>
            Represents MIDI system realtime messages.
            </summary>
            <remarks>
            System realtime messages are MIDI messages that are primarily concerned 
            with controlling and synchronizing MIDI devices. 
            </remarks>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.StartMessage">
            <summary>
            The instance of the system realtime start message.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.ContinueMessage">
            <summary>
            The instance of the system realtime continue message.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.StopMessage">
            <summary>
            The instance of the system realtime stop message.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.ClockMessage">
            <summary>
            The instance of the system realtime clock message.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.TickMessage">
            <summary>
            The instance of the system realtime tick message.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.ActiveSenseMessage">
            <summary>
            The instance of the system realtime active sense message.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.SysRealtimeMessage.ResetMessage">
            <summary>
            The instance of the system realtime reset message.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysRealtimeMessage.GetHashCode">
            <summary>
            Returns a value for the current SysRealtimeMessage suitable for use in 
            hashing algorithms.
            </summary>
            <returns>
            A hash code for the current SysRealtimeMessage.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.SysRealtimeMessage.Equals(System.Object)">
            <summary>
            Determines whether two SysRealtimeMessage instances are equal.
            </summary>
            <param name="obj">
            The SysRealtimeMessage to compare with the current SysRealtimeMessage.
            </param>
            <returns>
            <b>true</b> if the specified SysRealtimeMessage is equal to the current 
            SysRealtimeMessage; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysRealtimeMessage.SysRealtimeType">
            <summary>
            Gets the SysRealtimeType.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.SysRealtimeMessage.MessageType">
            <summary>
            Gets the MessageType.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiNoteConverter">
            <summary>
            Converts a MIDI note number to its corresponding frequency.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiNoteConverter.NoteIDMinValue">
            <summary>
            The minimum value a note ID can have.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.MidiNoteConverter.NoteIDMaxValue">
            <summary>
            The maximum value a note ID can have.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiNoteConverter.NoteToFrequency(System.Int32)">
            <summary>
            Converts the specified note to a frequency.
            </summary>
            <param name="noteID">
            The ID of the note to convert.
            </param>
            <returns>
            The frequency of the specified note.
            </returns>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiNoteConverter.FrequencyToNote(System.Double)">
            <summary>
            Converts the specified frequency to a note.
            </summary>
            <param name="frequency">
            The frequency to convert.
            </param>
            <returns>
            The ID of the note closest to the specified frequency.
            </returns>
        </member>
        <member name="T:Sanford.Multimedia.Midi.IClock">
            <summary>
            Represents functionality for generating events for driving Sequence playback.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.IClock.Tick">
            <summary>
            Occurs when an IClock generates a tick.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Midi.IClock.Started">
            <summary>
            Occurs when an IClock starts generating Ticks.
            </summary>
            <remarks>
            When an IClock is started, it resets itself and generates ticks to
            drive playback from the beginning of the Sequence.
            </remarks>
        </member>
        <member name="E:Sanford.Multimedia.Midi.IClock.Continued">
            <summary>
            Occurs when an IClock continues generating Ticks.
            </summary>
            <remarks>
            When an IClock is continued, it generates ticks to drive playback 
            from the current position within the Sequence.
            </remarks>
        </member>
        <member name="E:Sanford.Multimedia.Midi.IClock.Stopped">
            <summary>
            Occurs when an IClock is stopped.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.IClock.IsRunning">
            <summary>
            Gets a value indicating whether the IClock is running.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SmpteFrameRate">
            <summary>
            Defintes constants representing SMPTE frame rates.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.SequenceType">
            <summary>
            The different types of sequences.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiFileProperties">
            <summary>
            Represents MIDI file properties.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MidiInternalClock">
            <summary>
            Generates clock events internally.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiInternalClock.#ctor">
            <summary>
            Initializes a new instance of the MidiInternalClock class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiInternalClock.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the MidiInternalClock class with the 
            specified IContainer.
            </summary>
            <param name="container">
            The IContainer to which the MidiInternalClock will add itself.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiInternalClock.Start">
            <summary>
            Starts the MidiInternalClock.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiInternalClock.Continue">
            <summary>
            Resumes tick generation from the current position.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MidiInternalClock.Stop">
            <summary>
            Stops the MidiInternalClock.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.MidiInternalClock.Tempo">
            <summary>
            Gets or sets the tempo in microseconds per beat.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.PpqnClock">
            <summary>
            Provides basic functionality for generating tick events with pulses per 
            quarter note resolution.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.PpqnClock.DefaultTempo">
            <summary>
            The default tempo in microseconds: 120bpm.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.PpqnClock.PpqnMinValue">
            <summary>
            The minimum pulses per quarter note value.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.Sequence">
            <summary>
            Represents a collection of Tracks.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.#ctor">
            <summary>
            Initializes a new instance of the Sequence class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the Sequence class with the specified division.
            </summary>
            <param name="division">
            The Sequence's division value.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.#ctor(System.String)">
            <summary>
            Initializes a new instance of the Sequence class with the specified
            file name of the MIDI file to load.
            </summary>
            <param name="fileName">
            The name of the MIDI file to load.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.#ctor(System.IO.Stream)">
            <summary>
            Initializes a new instance of the Sequence class with the specified
            file stream of the MIDI file to load.
            </summary>
            <param name="fileStream">
            The stream of the MIDI file to load.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.Load(System.String)">
            <summary>
            Loads a MIDI file into the Sequence.
            </summary>
            <param name="fileName">
            The MIDI file's name.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.Load(System.IO.Stream)">
            <summary>
            Loads a MIDI stream into the Sequence.
            </summary>
            <param name="fileStream">
            The MIDI file's stream.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.Save(System.String)">
            <summary>
            Saves the Sequence as a MIDI file.
            </summary>
            <param name="fileName">
            The name to use for saving the MIDI file.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.Save(System.IO.Stream)">
            <summary>
            Saves the Sequence as a Stream.
            </summary>
            <param name="stream">
            The stream to use for saving the sequence.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Sequence.GetLength">
            <summary>
            Gets the length in ticks of the Sequence.
            </summary>
            <returns>
            The length in ticks of the Sequence.
            </returns>
            <remarks>
            The length in ticks of the Sequence is represented by the Track 
            with the longest length.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Sequence.Item(System.Int32)">
            <summary>
            Gets the Track at the specified index.
            </summary>
            <param name="index">
            The index of the Track to get.
            </param>
            <returns>
            The Track at the specified index.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Sequence.Division">
            <summary>
            Gets the Sequence's division value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Sequence.Format">
            <summary>
            Gets or sets the Sequence's format value.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Sequence.SequenceType">
            <summary>
            Gets the Sequence's type.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.Track">
            <summary>
            Represents a collection of MidiEvents and a MIDI track within a 
            Sequence.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Track.Insert(System.Int32,Sanford.Multimedia.Midi.IMidiMessage)">
            <summary>
            Inserts an IMidiMessage at the specified position in absolute ticks.
            </summary>
            <param name="position">
            The position in the Track in absolute ticks in which to insert the
            IMidiMessage.
            </param>
            <param name="message">
            The IMidiMessage to insert.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Track.Clear">
            <summary>
            Clears all of the MidiEvents, with the exception of the end of track
            message, from the Track.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Track.Merge(Sanford.Multimedia.Midi.Track)">
            <summary>
            Merges the specified Track with the current Track.
            </summary>
            <param name="trk">
            The Track to merge with.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Track.RemoveAt(System.Int32)">
            <summary>
            Removes the MidiEvent at the specified index.
            </summary>
            <param name="index">
            The index into the Track at which to remove the MidiEvent.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.Track.GetMidiEvent(System.Int32)">
            <summary>
            Gets the MidiEvent at the specified index.
            </summary>
            <param name="index">
            The index of the MidiEvent to get.
            </param>
            <returns>
            The MidiEvent at the specified index.
            </returns>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Track.Count">
            <summary>
            Gets the number of MidiEvents in the Track.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Track.Length">
            <summary>
            Gets the length of the Track in ticks.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Track.EndOfTrackOffset">
            <summary>
            Gets or sets the end of track meta message position offset.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.Track.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the Track.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.TrackReader">
            <summary>
            Reads a track from a stream.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.TrackWriter">
            <summary>
            Writes a Track to a Stream.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Midi.TrackWriter.Track">
            <summary>
            Gets or sets the Track to write to the Stream.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Midi.MessageDispatcher">
            <summary>
            Dispatches IMidiMessages to their corresponding sink.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.MessageDispatcher.Dispatch(Sanford.Multimedia.Midi.IMidiMessage)">
            <summary>
            Dispatches IMidiMessages to their corresponding sink.
            </summary>
            <param name="message">
            The IMidiMessage to dispatch.
            </param>
        </member>
        <member name="F:Sanford.Multimedia.Midi.UI.DeviceDialog.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.DeviceDialog.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.DeviceDialog.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.UI.InputDeviceDialog.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.InputDeviceDialog.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.InputDeviceDialog.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.UI.OutputDeviceDialog.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.OutputDeviceDialog.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.OutputDeviceDialog.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Midi.UI.PianoControlDialog.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.PianoControlDialog.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        </member>
        <member name="M:Sanford.Multimedia.Midi.UI.PianoControlDialog.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Timers.ThreadTimer">
            <summary>
            Replacement for the Windows multimedia timer that also runs on Mono
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.ThreadTimer.SynchronizingObject">
            <summary>
            Gets or sets the object used to marshal event-handler calls.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.ITimer.IsRunning">
            <summary>
            Gets a value indicating whether the Timer is running.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.ITimer.Mode">
            <summary>
            Gets the timer mode.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the timer has already been disposed.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Timers.ITimer.Period">
            <summary>
            Period between timer events in milliseconds.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.ITimer.Resolution">
            <summary>
            Resolution of the timer in milliseconds.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.ITimer.SynchronizingObject">
            <summary>
            Gets or sets the object used to marshal event-handler calls.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Timers.ITimer.Started">
            <summary>
            Occurs when the Timer has started;
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Timers.ITimer.Stopped">
            <summary>
            Occurs when the Timer has stopped;
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Timers.ITimer.Tick">
            <summary>
            Occurs when the time period has elapsed.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.ITimer.Start">
            <summary>
            Starts the timer.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            The timer has already been disposed.
            </exception>
            <exception cref="T:Sanford.Multimedia.Timers.TimerStartException">
            The timer failed to start.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Timers.ITimer.Stop">
            <summary>
            Stops timer.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the timer has already been disposed.
            </exception>
        </member>
        <member name="T:Sanford.Multimedia.Timers.TimeType">
            <summary>
            Defines constants representing the timing format used by the Time struct.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Timers.Time">
            <summary>
            Represents the Windows Multimedia MMTIME structure.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Timers.TimerMode">
            <summary>
            Defines constants for the multimedia Timer's event types.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Timers.TimerMode.OneShot">
            <summary>
            Timer event occurs once.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Timers.TimerMode.Periodic">
            <summary>
            Timer event occurs periodically.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Timers.TimerCaps">
            <summary>
            Represents information about the multimedia Timer's capabilities.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Timers.TimerCaps.periodMin">
            <summary>
            Minimum supported period in milliseconds.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Timers.TimerCaps.periodMax">
            <summary>
            Maximum supported period in milliseconds.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Timers.Timer">
            <summary>
            Represents the Windows multimedia timer.
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Timers.Timer.Started">
            <summary>
            Occurs when the Timer has started;
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Timers.Timer.Stopped">
            <summary>
            Occurs when the Timer has stopped;
            </summary>
        </member>
        <member name="E:Sanford.Multimedia.Timers.Timer.Tick">
            <summary>
            Occurs when the time period has elapsed.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.Timer.#cctor">
            <summary>
            Initialize class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.Timer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the Timer class with the specified IContainer.
            </summary>
            <param name="container">
            The IContainer to which the Timer will add itself.
            </param>
        </member>
        <member name="M:Sanford.Multimedia.Timers.Timer.#ctor">
            <summary>
            Initializes a new instance of the Timer class.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.Timer.Start">
            <summary>
            Starts the timer.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            The timer has already been disposed.
            </exception>
            <exception cref="T:Sanford.Multimedia.Timers.TimerStartException">
            The timer failed to start.
            </exception>
        </member>
        <member name="M:Sanford.Multimedia.Timers.Timer.Stop">
            <summary>
            Stops timer.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the timer has already been disposed.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Timers.Timer.SynchronizingObject">
            <summary>
            Gets or sets the object used to marshal event-handler calls.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.Timer.Period">
            <summary>
            Gets or sets the time between Tick events.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the timer has already been disposed.
            </exception>   
        </member>
        <member name="P:Sanford.Multimedia.Timers.Timer.Resolution">
            <summary>
            Gets or sets the timer resolution.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the timer has already been disposed.
            </exception>        
            <remarks>
            The resolution is in milliseconds. The resolution increases 
            with smaller values; a resolution of 0 indicates periodic events 
            should occur with the greatest possible accuracy. To reduce system 
            overhead, however, you should use the maximum value appropriate 
            for your application.
            </remarks>
        </member>
        <member name="P:Sanford.Multimedia.Timers.Timer.Mode">
            <summary>
            Gets the timer mode.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the timer has already been disposed.
            </exception>
        </member>
        <member name="P:Sanford.Multimedia.Timers.Timer.IsRunning">
            <summary>
            Gets a value indicating whether the Timer is running.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Timers.Timer.Capabilities">
            <summary>
            Gets the timer capabilities.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.Timer.Dispose">
            <summary>
            Frees timer resources.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Timers.TimerStartException">
            <summary>
            The exception that is thrown when a timer fails to start.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.TimerStartException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the TimerStartException class.
            </summary>
            <param name="message">
            The error message that explains the reason for the exception. 
            </param>
        </member>
        <member name="T:Sanford.Multimedia.Timers.TimerFactory">
            <summary>
            Use this factory to create ITimer instances.
            </summary>
            Caller is responsible for Dispose.
        </member>
        <member name="M:Sanford.Multimedia.Timers.TimerFactory.Create">
            <summary>
            Creates an instance of ITimer
            </summary>
            <returns>Newly created instance of ITimer</returns>
        </member>
        <member name="T:Sanford.Multimedia.Timers.ThreadTimerQueue">
            <summary>
            Queues and executes timer events in an internal worker thread.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Timers.ThreadTimerQueue.TimerLoop">
            <summary>
            The thread to execute the timer events
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Device.Close">
            <summary>
            Closes the MIDI device.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Device.Reset">
            <summary>
            Resets the device.
            </summary>
        </member>
        <member name="P:Sanford.Multimedia.Device.Handle">
            <summary>
            Gets the device handle.
            </summary>
        </member>
        <member name="M:Sanford.Multimedia.Device.Dispose">
            <summary>
            Disposes of the device.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Key">
            <summary>
            Defines constants for all major and minor keys.
            </summary>
        </member>
        <member name="T:Sanford.Multimedia.Note">
            <summary>
            Defines constants representing the 12 Note of the chromatic scale.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.C">
            <summary>
            C natural.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.CSharp">
            <summary>
            C sharp.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.DFlat">
            <summary>
            D flat.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.D">
            <summary>
            D natural.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.DSharp">
            <summary>
            D sharp.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.EFlat">
            <summary>
            E flat.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.E">
            <summary>
            E natural.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.F">
            <summary>
            F natural.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.FSharp">
            <summary>
            F sharp.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.GFlat">
            <summary>
            G flat.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.G">
            <summary>
            G natural.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.GSharp">
            <summary>
            G sharp.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.AFlat">
            <summary>
            A flat.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.A">
            <summary>
            A natural.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.ASharp">
            <summary>
            A sharp.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.BFlat">
            <summary>
            B flat.
            </summary>
        </member>
        <member name="F:Sanford.Multimedia.Note.B">
            <summary>
            B natural.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Deque">
            <summary>
            Represents a simple double-ended-queue collection of objects.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Deque.#ctor">
            <summary>
            Initializes a new instance of the Deque class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Deque.#ctor(System.Collections.ICollection)">
            <summary>
            Initializes a new instance of the Deque class that contains 
            elements copied from the specified collection.
            </summary>
            <param name="col">
            The ICollection to copy elements from.
            </param>
        </member>
        <member name="M:Sanford.Collections.Deque.Clear">
            <summary>
            Removes all objects from the Deque.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Deque.Contains(System.Object)">
            <summary>
            Determines whether or not an element is in the Deque.
            </summary>
            <param name="obj">
            The Object to locate in the Deque.
            </param>
            <returns>
            <b>true</b> if <i>obj</i> if found in the Deque; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Deque.PushFront(System.Object)">
            <summary>
            Inserts an object at the front of the Deque.
            </summary>
            <param name="obj">
            The object to push onto the deque;
            </param>
        </member>
        <member name="M:Sanford.Collections.Deque.PushBack(System.Object)">
            <summary>
            Inserts an object at the back of the Deque.
            </summary>
            <param name="obj">
            The object to push onto the deque;
            </param>
        </member>
        <member name="M:Sanford.Collections.Deque.PopFront">
            <summary>
            Removes and returns the object at the front of the Deque.
            </summary>
            <returns>
            The object at the front of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Deque.PopBack">
            <summary>
            Removes and returns the object at the back of the Deque.
            </summary>
            <returns>
            The object at the back of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Deque.PeekFront">
            <summary>
            Returns the object at the front of the Deque without removing it.
            </summary>
            <returns>
            The object at the front of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Deque.PeekBack">
            <summary>
            Returns the object at the back of the Deque without removing it.
            </summary>
            <returns>
            The object at the back of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Deque.ToArray">
            <summary>
            Copies the Deque to a new array.
            </summary>
            <returns>
            A new array containing copies of the elements of the Deque.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Deque.Synchronized(Sanford.Collections.Deque)">
            <summary>
            Returns a synchronized (thread-safe) wrapper for the Deque.
            </summary>
            <param name="deque">
            The Deque to synchronize.
            </param>
            <returns>
            A synchronized wrapper around the Deque.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Deque.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the Deque is synchronized 
            (thread-safe).
            </summary>
        </member>
        <member name="P:Sanford.Collections.Deque.Count">
            <summary>
            Gets the number of elements contained in the Deque.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Deque.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the Deque elements to an existing one-dimensional Array, 
            starting at the specified array index.
            </summary>
            <param name="array">
            The one-dimensional Array that is the destination of the elements 
            copied from Deque. The Array must have zero-based indexing. 
            </param>
            <param name="index">
            The zero-based index in array at which copying begins. 
            </param>
        </member>
        <member name="P:Sanford.Collections.Deque.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the Deque.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Deque.GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the Deque.
            </summary>
            <returns>
            An IEnumerator for the Deque.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Deque.Clone">
            <summary>
            Creates a shallow copy of the Deque.
            </summary>
            <returns>
            A shallow copy of the Deque.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Generic.Deque`1">
            <summary>
            Represents a simple double-ended-queue collection of objects.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.#ctor">
            <summary>
            Initializes a new instance of the Deque class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Initializes a new instance of the Deque class that contains 
            elements copied from the specified collection.
            </summary>
            <param name="collection">
            The collection whose elements are copied to the new Deque.
            </param>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.Clear">
            <summary>
            Removes all objects from the Deque.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.Contains(`0)">
            <summary>
            Determines whether or not an element is in the Deque.
            </summary>
            <param name="obj">
            The Object to locate in the Deque.
            </param>
            <returns>
            <b>true</b> if <i>obj</i> if found in the Deque; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.PushFront(`0)">
            <summary>
            Inserts an object at the front of the Deque.
            </summary>
            <param name="item">
            The object to push onto the deque;
            </param>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.PushBack(`0)">
            <summary>
            Inserts an object at the back of the Deque.
            </summary>
            <param name="item">
            The object to push onto the deque;
            </param>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.PopFront">
            <summary>
            Removes and returns the object at the front of the Deque.
            </summary>
            <returns>
            The object at the front of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.PopBack">
            <summary>
            Removes and returns the object at the back of the Deque.
            </summary>
            <returns>
            The object at the back of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.PeekFront">
            <summary>
            Returns the object at the front of the Deque without removing it.
            </summary>
            <returns>
            The object at the front of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.PeekBack">
            <summary>
            Returns the object at the back of the Deque without removing it.
            </summary>
            <returns>
            The object at the back of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.ToArray">
            <summary>
            Copies the Deque to a new array.
            </summary>
            <returns>
            A new array containing copies of the elements of the Deque.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.Synchronized(Sanford.Collections.Generic.Deque{`0})">
            <summary>
            Returns a synchronized (thread-safe) wrapper for the Deque.
            </summary>
            <param name="deque">
            The Deque to synchronize.
            </param>
            <returns>
            A synchronized wrapper around the Deque.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Generic.Deque`1.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the Deque is synchronized 
            (thread-safe).
            </summary>
        </member>
        <member name="P:Sanford.Collections.Generic.Deque`1.Count">
            <summary>
            Gets the number of elements contained in the Deque.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the Deque elements to an existing one-dimensional Array, 
            starting at the specified array index.
            </summary>
            <param name="array">
            The one-dimensional Array that is the destination of the elements 
            copied from Deque. The Array must have zero-based indexing. 
            </param>
            <param name="index">
            The zero-based index in array at which copying begins. 
            </param>
        </member>
        <member name="P:Sanford.Collections.Generic.Deque`1.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the Deque.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the Deque.
            </summary>
            <returns>
            An IEnumerator for the Deque.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.Clone">
            <summary>
            Creates a shallow copy of the Deque.
            </summary>
            <returns>
            A shallow copy of the Deque.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.Deque`1.SynchronizedDeque.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the Deque.
            </summary>
            <returns>
            An IEnumerator for the Deque.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Generic.UndoableList`1">
            <summary>
            Represents a list with undo/redo functionality.
            </summary>
            <typeparam name="T">
            The type of elements in the list.
            </typeparam>
        </member>
        <member name="M:Sanford.Collections.Generic.UndoableList`1.Undo">
            <summary>
            Undoes the last operation.
            </summary>
            <returns>
            <b>true</b> if the last operation was undone, <b>false</b> if there
            are no more operations left to undo.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.UndoableList`1.Redo">
            <summary>
            Redoes the last operation.
            </summary>
            <returns>
            <b>true</b> if the last operation was redone, <b>false</b> if there
            are no more operations left to redo.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.UndoableList`1.ClearHistory">
            <summary>
            Clears the undo/redo history.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Generic.UndoableList`1.UndoCount">
            <summary>
            The number of operations left to undo.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Generic.UndoableList`1.RedoCount">
            <summary>
            The number of operations left to redo.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Generic.UndoManager.Undo">
            <summary>
            Undoes the last operation.
            </summary>
            <returns>
            <b>true</b> if the last operation was undone, <b>false</b> if there
            are no more operations left to undo.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.UndoManager.Redo">
            <summary>
            Redoes the last operation.
            </summary>
            <returns>
            <b>true</b> if the last operation was redone, <b>false</b> if there
            are no more operations left to redo.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Generic.UndoManager.ClearHistory">
            <summary>
            Clears the undo/redo history.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Generic.UndoManager.UndoCount">
            <summary>
            The number of operations left to undo.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Generic.UndoManager.RedoCount">
            <summary>
            The number of operations left to redo.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.Array">
            <summary>
            Represents an array data structure.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.Array.#ctor(System.Int32)">
            <summary>
            Initialize an instance of the Array class with the specified array 
            length.
            </summary>
            <param name="length">
            The length of the array.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.Array.#ctor(Sanford.Collections.Immutable.RalTopNode,System.Int32)">
            <summary>
            Initializes a new instance of the Array class with the specified 
            head of the random access list and the length of the array.
            </summary>
            <param name="head">
            The head of the random access list.
            </param>
            <param name="length">
            The length of the array.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.Array.GetValue(System.Int32)">
            <summary>
            Gets the value of the specified element in the current Array. 
            </summary>
            <param name="index">
            An integer that represents the position of the Array element to 
            get. 
            </param>
            <returns>
            The value at the specified position in the Array.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current Array.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.Array.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current Array to the specified 
            value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the Array element to set. 
            </param>
            <returns>
            A new array with the element at the specified position set to the 
            specified value.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current Array.
            </exception>
        </member>
        <member name="P:Sanford.Collections.Immutable.Array.Length">
            <summary>
            Gets an integer that represents the total number of elements in all 
            the dimensions of the Array.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.Array.GetEnumerator">
            <summary>
            Returns an IEnumerator for the Array.
            </summary>
            <returns>
            An IEnumerator for the Array.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Immutable.ArrayList">
            <summary>
            Represents a collection of elements accessible by index and supports
            insertion and deletion.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.#cctor">
            <summary>
            Initializes the ArrayList class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.#ctor">
            <summary>
            Initializes a new instance of the ArrayList class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.#ctor(System.Collections.ICollection)">
            <summary>
            Initializes a new instance of the ArrayList class that contains 
            elements copied from the specified collection.
            </summary>
            <param name="collection">
            The ICollection whose elements are copied to the new list. 
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.#ctor(Sanford.Collections.Immutable.IAvlNode,System.Int32)">
            <summary>
            Initializes a new instance of the ArrayList class with the 
            specified root and count.
            </summary>
            <param name="root">
            The root of the tree.
            </param>
            <param name="count">
            The number of items in the ArrayList.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.Add(System.Object)">
            <summary>
            Adds an object to the end of the ArrayList.
            </summary>
            <param name="value">
            The Object to be added to the end of the ArrayList. 
            </param>
            <returns>
            A new ArrayList object with the specified value added at the end.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.Contains(System.Object)">
            <summary>
            Determines whether an element is in the ArrayList.
            </summary>
            <param name="value">
            The Object to locate in the ArrayList. 
            </param>
            <returns>
            <b>true</b> if item is found in the ArrayList; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.IndexOf(System.Object)">
            <summary>
            Returns the zero-based index of the first occurrence of a value in 
            the ArrayList.
            </summary>
            <param name="value">
            The Object to locate in the ArrayList.
            </param>
            <returns>
            The zero-based index of the first occurrence of value within the 
            ArrayList, if found; otherwise, -1.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.Insert(System.Int32,System.Object)">
            <summary>
            Inserts an element into the ArrayList at the specified index.
            </summary>
            <param name="index">
            The zero-based index at which value should be inserted. 
            </param>
            <param name="value">
            The Object to insert.
            </param>
            <returns>
            A new ArrayList with the specified object inserted at the specified 
            index.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is greater than Count.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.Remove(System.Object)">
            <summary>
            Removes the first occurrence of a specified object from the 
            ArrayList.
            </summary>
            <param name="value">
            The Object to remove from the ArrayList. 
            </param>
            <returns>
            A new ArrayList with the first occurrent of the specified object 
            removed.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.RemoveAt(System.Int32)">
            <summary>
            Removes the element at the specified index of the ArrayList.
            </summary>
            <param name="index">
            The zero-based index of the element to remove. 
            </param>
            <returns>
            A new ArrayList with the element at the specified index removed.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is equal to or greater than Count.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified index.
            </summary>
            <param name="index">
            The zero-based index of the element to get.
            </param>
            <returns>
            The value at the specified index.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is equal to or greater than Count.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.SetValue(System.Int32,System.Object)">
            <summary>
            Sets the value at the specified index.
            </summary>
            <param name="index">
            The zero-based index of the element to set.
            </param>
            <param name="value">
            The value to set at the specified index.
            </param>
            <returns>
            A new ArrayList with the specified value set at the specified index.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is equal to or greater than Count.
            </exception>
        </member>
        <member name="P:Sanford.Collections.Immutable.ArrayList.Count">
            <summary>
            Gets the number of elements contained in the ArrayList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.ArrayList.GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the ArrayList.
            </summary>
            <returns>
            An IEnumerator that can be used to iterate through the ArrayList.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Immutable.AvlEnumerator">
            <summary>
            Provides functionality for iterating over an AVL tree.
            </summary> 
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlEnumerator.#ctor(Sanford.Collections.Immutable.IAvlNode)">
            <summary>
            Initializes a new instance of the AvlEnumerator class.
            </summary>
            <param name="root">
            The root of the AVL tree to iterate over.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlEnumerator.#ctor(Sanford.Collections.Immutable.IAvlNode,System.Int32)">
            <summary>
            Initializes a new instance of the AvlEnumerator class.
            </summary>
            <param name="root">
            The root of the AVL tree to iterate over.
            </param>
            <param name="count">
            The number of nodes in the tree.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the AVL tree.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlEnumerator.Current">
            <summary>
            Gets the current element in the AVL tree.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The enumerator is positioned before the first element in the AVL
            tree or after the last element.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the AVL tree.
            </summary>
            <returns>
            <b>true</b> if the enumerator was successfully advanced to the 
            next element; <b>false</b> if the enumerator has passed the end 
            of the collection.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Immutable.AvlNode">
            <summary>
            Represents a node in an AVL tree.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlNode.#ctor(System.Object,Sanford.Collections.Immutable.IAvlNode,Sanford.Collections.Immutable.IAvlNode)">
            <summary>
            Initializes a new instance of the AvlNode class with the specified 
            data and left and right children.
            </summary>
            <param name="data">
            The data for the node.
            </param>
            <param name="leftChild">
            The left child.
            </param>
            <param name="rightChild">
            The right child.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlNode.Remove">
            <summary>
            Removes the current node from the AVL tree.
            </summary>
            <returns>
            The node to in the tree to replace the current node.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlNode.Balance">
            <summary>
            Balances the subtree represented by the node.
            </summary>
            <returns>
            The root node of the balanced subtree.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.AvlNode.IsBalanced">
            <summary>
            Indicates whether or not the subtree the node represents is in 
            balance.
            </summary>
            <returns>
            <b>true</b> if the subtree is in balance; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlNode.BalanceFactor">
            <summary>
            Gets the balance factor of the subtree the node represents.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlNode.Count">
            <summary>
            Gets the number of nodes in the subtree.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlNode.Data">
            <summary>
            Gets the node's data.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlNode.Height">
            <summary>
            Gets the height of the subtree the node represents.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlNode.LeftChild">
            <summary>
            Gets the node's left child.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.AvlNode.RightChild">
            <summary>
            Gets the node's right child.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.IAvlNode">
            <summary>
            Represents the functionality and properties of AVL nodes.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.IAvlNode.Remove">
            <summary>
            Removes the current node from the AVL tree.
            </summary>
            <returns>
            The node to in the tree to replace the current node.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.IAvlNode.Balance">
            <summary>
            Balances the subtree represented by the node.
            </summary>
            <returns>
            The root node of the balanced subtree.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.IAvlNode.IsBalanced">
            <summary>
            Indicates whether or not the subtree the node represents is in 
            balance.
            </summary>
            <returns>
            <b>true</b> if the subtree is in balance; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Immutable.IAvlNode.BalanceFactor">
            <summary>
            Gets the balance factor of the subtree the node represents.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.IAvlNode.Count">
            <summary>
            Gets the number of nodes in the subtree.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.IAvlNode.Data">
            <summary>
            Gets the node's data.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.IAvlNode.Height">
            <summary>
            Gets the height of the subtree the node represents.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.IAvlNode.LeftChild">
            <summary>
            Gets the node's left child.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.IAvlNode.RightChild">
            <summary>
            Gets the node's right child.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.NullAvlNode">
            <summary>
            Represents a null AVL node.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.NullAvlNode.Remove">
            <summary>
            Removes the current node from the AVL tree.
            </summary>
            <returns>
            The node to in the tree to replace the current node.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.NullAvlNode.Balance">
            <summary>
            Balances the subtree represented by the node.
            </summary>
            <returns>
            The root node of the balanced subtree.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.NullAvlNode.IsBalanced">
            <summary>
            Indicates whether or not the subtree the node represents is in 
            balance.
            </summary>
            <returns>
            <b>true</b> if the subtree is in balance; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Immutable.NullAvlNode.BalanceFactor">
            <summary>
            Gets the balance factor of the subtree the node represents.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.NullAvlNode.Count">
            <summary>
            Gets the number of nodes in the subtree.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.NullAvlNode.Data">
            <summary>
            Gets the node's data.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.NullAvlNode.Height">
            <summary>
            Gets the height of the subtree the node represents.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.NullAvlNode.LeftChild">
            <summary>
            Gets the node's left child.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.NullAvlNode.RightChild">
            <summary>
            Gets the node's right child.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.RalEnumerator">
            <summary>
            Provides functionality for enumerating a RandomAccessList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalEnumerator.#ctor(Sanford.Collections.Immutable.RalTopNode,System.Int32)">
            <summary>
            Initializes a new instance of the Enumerator with the specified 
            head of the list and the number of nodes in the list.
            </summary>
            <param name="head">
            The head of the list.
            </param>
            <param name="count">
            The number of nodes in the list.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the random access list.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalEnumerator.Current">
            <summary>
            Gets the current element in the random access list.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The enumerator is positioned before the first element in the 
            random access list or after the last element.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element in the random access 
            list.
            </summary>
            <returns>
            <b>true</b> if the enumerator was successfully advanced to the 
            next element; <b>false</b> if the enumerator has passed the end 
            of the collection.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Immutable.RalTopNode">
            <summary>
            Represents the top nodes in a RandomAccessList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalTopNode.#ctor(Sanford.Collections.Immutable.RalTreeNode,Sanford.Collections.Immutable.RalTopNode)">
            <summary>
            Initializes a new instance of the RalTopNode with the specified 
            root of the tree this node represents and the next top node in the
            list.
            </summary>
            <param name="root">
            The root node of the tree this top node represents.
            </param>
            <param name="nextNode">
            The next top node in the list.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalTopNode.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified element in the random access list.
            </summary>
            <param name="index">
            An integer that represents the position of the random access list 
            element to get. 
            </param>
            <returns>
            The value at the specified position in the random access list.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalTopNode.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current random access list to the 
            specified value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the random access list  
            element to set. 
            </param>
            <returns>
            A new random access list top node with the element at the specified 
            position set to the specified value.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalTopNode.Root">
            <summary>
            Gets the root node represented by the top node.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalTopNode.NextNode">
            <summary>
            Gets the next top node in the random access list.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.RalTreeNode">
            <summary>
            Represents subtree nodes within random access lists.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalTreeNode.#ctor(System.Object,Sanford.Collections.Immutable.RalTreeNode,Sanford.Collections.Immutable.RalTreeNode)">
            <summary>
            Initializes an instance of the RandomAccessListNode with the
            specified value, left child, and right child.
            </summary>
            <param name="value">
            The value to store in the node.
            </param>
            <param name="leftChild">
            The left child.
            </param>
            <param name="rightChild">
            The right child.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalTreeNode.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified element in the random access list
            subtree.
            </summary>
            <param name="index">
            An integer that represents the position of the random access list 
            subtree element to get. 
            </param>
            <returns>
            The value at the specified position in the random access list
            subtree.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.RalTreeNode.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current random access list 
            subtree to the specified value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the random access list  
            subtree element to set. 
            </param>
            <returns>
            A new random access list tree node with the element at the specified 
            position set to the specified value.
            </returns>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalTreeNode.Count">
            <summary>
            Gets the number of nodes in the tree.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalTreeNode.LeftChild">
            <summary>
            Gets the left child.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalTreeNode.RightChild">
            <summary>
            Gets the right child.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.RalTreeNode.Value">
            <summary>
            Gets the value represented by this node.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.RandomAccessList">
            <summary>
            Implements Chris Okasaki's random access list.
            </summary>
        </member>
        <member name="F:Sanford.Collections.Immutable.RandomAccessList.Empty">
            <summary>
            Represents an empty random access list.
            </summary> 
        </member>
        <member name="M:Sanford.Collections.Immutable.RandomAccessList.#ctor">
            <summary>
            Initializes a new instance of the RandomAccessList class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.RandomAccessList.#ctor(Sanford.Collections.Immutable.RalTopNode,System.Int32)">
            <summary>
            Initializes a new instance of the RandomAccessList class with the
            specified first top node and the number of elements in the list.
            </summary>
            <param name="first">
            The first top node in the list.
            </param>
            <param name="count">
            The number of nodes in the list.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.RandomAccessList.Cons(System.Object)">
            <summary>
            Prepends a value to the random access list.
            </summary>
            <param name="value">
            The value to prepend to the list.
            </param>
            <returns>
            A new random access list with the specified value prepended to the
            list.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.RandomAccessList.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified position in the current 
            RandomAccessList.
            </summary>
            <param name="index">
            An integer that represents the position of the RandomAccessList 
            element to get. 
            </param>
            <returns>
            The value at the specified position in the RandomAccessList.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current 
            RandomAccessList.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.RandomAccessList.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current RandomAccessList to the 
            specified value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the RandomAccessList 
            element to set. 
            </param>
            <returns>
            A new RandomAccessList with the element at the specified position 
            set to the specified value.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current 
            RandomAccessList.
            </exception>
        </member>
        <member name="P:Sanford.Collections.Immutable.RandomAccessList.Count">
            <summary>
            Gets the number of elements in the RandomAccessList.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.RandomAccessList.Head">
            <summary>
            Gets a RandomAccessList with first element of the current 
            RandomAccessList.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the RandomAccessList is empty.
            </exception>
        </member>
        <member name="P:Sanford.Collections.Immutable.RandomAccessList.Tail">
            <summary>
            Gets a RandomAccessList with all but the first element of the
            current RandomAccessList.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the RandomAccessList is empty.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.RandomAccessList.GetEnumerator">
            <summary>
            Returns an IEnumerator for the RandomAccessList.
            </summary>
            <returns>
            An IEnumerator for the RandomAccessList.
            </returns>
        </member>
        <member name="T:Sanford.Collections.Immutable.SortedList">
            <summary>
            Represents a collection of key-and-value pairs that are sorted by the 
            keys and are accessible by key.
            </summary>
        </member>
        <member name="F:Sanford.Collections.Immutable.SortedList.Empty">
            <summary>
            An empty SortedList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.#ctor">
            <summary>
            Initializes a new instance of the SortedList class that is empty 
            and is sorted according to the IComparable interface implemented by 
            each key added to the SortedList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.#ctor(System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the SortedList class that is empty 
            and is sorted according to the specified IComparer interface.
            </summary>
            <param name="comparer">
            The IComparer implementation to use when comparing keys, or a null 
            reference to use the IComparable implementation of each key. 
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.#ctor(Sanford.Collections.Immutable.IAvlNode,System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the SortedList class with the 
            specified root node and the IComparer interface to use for sorting
            keys.
            </summary>
            <param name="root">
            The root of the AVL tree.
            </param>
            <param name="comparer">
            The IComparer implementation to use when comparing keys, or a null 
            reference to use the IComparable implementation of each key.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.Add(System.Object,System.Object)">
            <summary>
            Adds an element with the specified key and value to the SortedList.
            </summary>
            <param name="key">
            The key of the element to add.
            </param>
            <param name="value">
            The value of the element to add. The value can be a null reference.
            </param>
            <returns>
            A new SortedList with the specified key and value added to the 
            previous SortedList.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <i>key</i> is a null reference.
            </exception>
            <exception cref="T:System.ArgumentException">
            An element with the specified key already exists in the SortedList,
            or The SortedList is set to use the IComparable interface, and key 
            does not implement the IComparable interface.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.Contains(System.Object)">
            <summary>
            Determines whether the SortedList contains a specific key.
            </summary>
            <param name="key">
            The key to locate in the SortedList. 
            </param>
            <returns>
            <b>true</b> if the SortedList contains an element with the 
            specified <i>key</i>; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.GetEnumerator">
            <summary>
            Returns an IDictionaryEnumerator that can iterate through the 
            SortedList.
            </summary>
            <returns>
            An IDictionaryEnumerator for the SortedList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.Remove(System.Object)">
            <summary>
            Removes the element with the specified key from SortedList.
            </summary>
            <param name="key">
            </param>
            <returns>
            The <i>key</i> of the element to remove. 
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <i>key</i> is a null reference.
            </exception>
            <exception cref="T:System.ArgumentException">
            The SortedList is set to use the IComparable interface, and key 
            does not implement the IComparable interface.
            </exception>
        </member>
        <member name="P:Sanford.Collections.Immutable.SortedList.Item(System.Object)">
            <summary>
            Gets the value associated with the specified key.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.SortedList.Count">
            <summary>
            Gets the number of elements contained in the SortedList.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.SortedList.SortedListEnumerator">
            <summary>
            Provides functionality for iterating through a SortedList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.SortedList.SortedListEnumerator.#ctor(Sanford.Collections.Immutable.IAvlNode)">
            <summary>
            Initializes a new instance of the SortedListEnumerator class 
            with the specified root of the AVL tree to iterate over.
            </summary>
            <param name="root">
            The root of the AVL tree the SortedList uses internally.
            </param>
        </member>
        <member name="T:Sanford.Collections.Immutable.Stack">
            <summary>
            Represents a simple last-in-first-out collection of objects.
            </summary>
        </member>
        <member name="F:Sanford.Collections.Immutable.Stack.Empty">
            <summary>
            An empty Stack.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.#ctor">
            <summary>
            Initializes a new instance of the Stack class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.#ctor(Sanford.Collections.Immutable.Stack.Node,System.Int32)">
            <summary>
            Initializes a new instance of the Stack class with the 
            specified top node and the number of elements in the stack.
            </summary>
            <param name="top">
            The top node in the stack.
            </param>
            <param name="count">
            The number of elements in the stack.
            </param>        
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.Push(System.Object)">
            <summary>
            Inserts an object at the top of the Stack.
            </summary>
            <param name="obj">
            The Object to push onto the Stack.
            </param>
            <returns>
            A new stack with the specified object on the top of the stack.
            </returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.Pop">
            <summary>
            Removes the object at the top of the Stack.
            </summary>
            <returns>
            A new stack with top of the previous stack removed.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Stack is empty.
            </exception>
        </member>
        <member name="P:Sanford.Collections.Immutable.Stack.Count">
            <summary>
            Gets the number of elements in the Stack.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.Stack.Top">
            <summary>
            Gets the top of the stack.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The Stack is empty.
            </exception>
        </member>
        <member name="T:Sanford.Collections.Immutable.Stack.Node">
            <summary>
            Represents a node in the stack.
            </summary>
        </member>
        <member name="T:Sanford.Collections.Immutable.Stack.StackEnumerator">
            <summary>
            Provides functionality for iterating over the Stack class.
            </summary>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.StackEnumerator.#ctor(Sanford.Collections.Immutable.Stack)">
            <summary>
            Initializes a new instance of the StackEnumerator class with 
            the specified stack to iterate over.
            </summary>
            <param name="owner">
            The Stack to iterate over.
            </param>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.StackEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the Stack.
            </summary>
        </member>
        <member name="P:Sanford.Collections.Immutable.Stack.StackEnumerator.Current">
            <summary>
            Gets the current element in the Stack.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The enumerator is positioned before the first element of the 
            Stack or after the last element.
            </exception>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.StackEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the Stack.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Sanford.Collections.Immutable.Stack.GetEnumerator">
            <summary>
            Returns an IEnumerator for the Stack.
            </summary>
            <returns>
            An IEnumerator for the Stack.
            </returns>
        </member>
        <member name="T:Sanford.Collections.PriorityQueue">
            <summary>
            Represents the priority queue data structure.
            </summary>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.#ctor">
            <summary>
            Initializes a new instance of the PriorityQueue class.
            </summary>
            <remarks>
            The PriorityQueue will cast its elements to the IComparable 
            interface when making comparisons.
            </remarks>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.#ctor(System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the PriorityQueue class with the
            specified IComparer.
            </summary>
            <param name="comparer">
            The IComparer to use for comparing and ordering elements.
            </param>
            <remarks>
            If the specified IComparer is null, the PriorityQueue will cast its
            elements to the IComparable interface when making comparisons.
            </remarks>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Enqueue(System.Object)">
            <summary>
            Enqueues the specified element into the PriorityQueue.
            </summary>
            <param name="element">
            The element to enqueue into the PriorityQueue.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If element is null.
            </exception>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Dequeue">
            <summary>
            Removes the element at the head of the PriorityQueue.
            </summary>
            <returns>
            The element at the head of the PriorityQueue.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            If Count is zero.
            </exception>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Remove(System.Object)">
            <summary>
            Removes the specified element from the PriorityQueue.
            </summary>
            <param name="element">
            The element to remove.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If element is null
            </exception>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Contains(System.Object)">
            <summary>
            Returns a value indicating whether the specified element is in the
            PriorityQueue.
            </summary>
            <param name="element">
            The element to test.
            </param>
            <returns>
            <b>true</b> if the element is in the PriorityQueue; otherwise
            <b>false</b>.
            </returns>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Peek">
            <summary>
            Returns the element at the head of the PriorityQueue without 
            removing it.
            </summary>
            <returns>
            The element at the head of the PriorityQueue.
            </returns>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Clear">
            <summary>
            Removes all elements from the PriorityQueue.
            </summary>
        </member>
        <member name="M:Sanford.Collections.PriorityQueue.Synchronized(Sanford.Collections.PriorityQueue)">
            <summary>
            Returns a synchronized wrapper of the specified PriorityQueue.
            </summary>
            <param name="queue">
            The PriorityQueue to synchronize.
            </param>
            <returns>
            A synchronized PriorityQueue.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If queue is null.
            </exception>
        </member>
        <member name="T:Sanford.Collections.SkipList">
            <summary>
            Represents a collection of key-and-value pairs.
            </summary>
            <remarks>
            The SkipList class is an implementation of the IDictionary interface. It 
            is based on the data structure created by William Pugh.
            </remarks> 
        </member>
        <member name="M:Sanford.Collections.SkipList.#ctor">
            <summary>
            Initializes a new instance of the SkipList class that is empty and 
            is sorted according to the IComparable interface implemented by 
            each key added to the SkipList.
            </summary>
            <remarks>
            Each key must implement the IComparable interface to be capable of 
            comparisons with every other key in the SortedList. The elements 
            are sorted according to the IComparable implementation of each key 
            added to the SkipList.
            </remarks>
        </member>
        <member name="M:Sanford.Collections.SkipList.#ctor(System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the SkipList class that is empty and 
            is sorted according to the specified IComparer interface.
            </summary>
            <param name="comparer">
            The IComparer implementation to use when comparing keys. 
            </param>
            <remarks>
            The elements are sorted according to the specified IComparer 
            implementation. If comparer is a null reference, the IComparable 
            implementation of each key is used; therefore, each key must 
            implement the IComparable interface to be capable of comparisons 
            with every other key in the SkipList.
            </remarks>
        </member>
        <member name="M:Sanford.Collections.SkipList.Finalize">
            <summary>
            Destructor.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.Initialize">
            <summary>
            Initializes the SkipList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.GetNewLevel">
            <summary>
            Returns a level value for a new SkipList node.
            </summary>
            <returns>
            The level value for a new SkipList node.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.Search(System.Object)">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.Search(System.Object,Sanford.Collections.SkipList.Node@)">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.Search(System.Object,Sanford.Collections.SkipList.Node[])">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.Search(System.Object,Sanford.Collections.SkipList.Node@,Sanford.Collections.SkipList.Node[])">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.SearchWithComparer(System.Object,Sanford.Collections.SkipList.Node@,Sanford.Collections.SkipList.Node[])">
            <summary>
            Search for the specified key using a comparer.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.SearchWithComparable(System.Object,Sanford.Collections.SkipList.Node@,Sanford.Collections.SkipList.Node[])">
            <summary>
            Search for the specified key using the IComparable interface 
            implemented by each key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
            <remarks>
            Assumes each key inserted into the SkipList implements the 
            IComparable interface.
            
            If the specified key is in the SkipList, the curr parameter will
            reference the node with the key. If the specified key is not in the
            SkipList, the curr paramater will either hold the node with the 
            first key value greater than the specified key or it will have the
            same value as the header indicating that the search reached the end 
            of the SkipList.
            </remarks>
        </member>
        <member name="M:Sanford.Collections.SkipList.Insert(System.Object,System.Object,Sanford.Collections.SkipList.Node[])">
            <summary>
            Inserts a key/value pair into the SkipList.
            </summary>
            <param name="key">
            The key to insert into the SkipList.
            </param>
            <param name="val">
            The value to insert into the SkipList.
            </param>
            <param name="update">
            An array of nodes holding references to places in the SkipList in 
            which the search for the place to insert the new key/value pair 
            dropped down one level.
            </param>
        </member>
        <member name="T:Sanford.Collections.SkipList.Node">
            <summary>
            Represents a node in the SkipList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.Node.#ctor(System.Int32)">
            <summary>
            Initializes an instant of a Node with its node level.
            </summary>
            <param name="level">
            The node level.
            </param>
        </member>
        <member name="M:Sanford.Collections.SkipList.Node.#ctor(System.Int32,System.Object,System.Object)">
            <summary>
            Initializes an instant of a Node with its node level and 
            key/value pair.
            </summary>
            <param name="level">
            The node level.
            </param>
            <param name="key">
            The key for the node.
            </param>
            <param name="val">
            The value for the node.
            </param>
        </member>
        <member name="P:Sanford.Collections.SkipList.Node.Key">
            <summary>
            Key property.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.Node.Value">
            <summary>
            Value property.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.Node.Entry">
            <summary>
            Node dictionary Entry property - contains key/value pair. 
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.Node.Dispose">
            <summary>
            Disposes the Node.
            </summary>
        </member>
        <member name="T:Sanford.Collections.SkipList.SkipListEnumerator">
            <summary>
            Enumerates the elements of a skip list.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.SkipListEnumerator.#ctor(Sanford.Collections.SkipList)">
            <summary>
            Initializes an instance of a SkipListEnumerator.
            </summary>
            <param name="list"></param>
        </member>
        <member name="P:Sanford.Collections.SkipList.SkipListEnumerator.Entry">
            <summary>
            Gets both the key and the value of the current dictionary 
            entry.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.SkipListEnumerator.Key">
            <summary>
            Gets the key of the current dictionary entry.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.SkipListEnumerator.Value">
            <summary>
            Gets the value of the current dictionary entry.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.SkipListEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the skip list.
            </summary>
            <returns>
            true if the enumerator was successfully advanced to the next 
            element; false if the enumerator has passed the end of the 
            skip list.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.SkipListEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the skip list.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.SkipListEnumerator.Current">
            <summary>
            Gets the current element in the skip list.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.Add(System.Object,System.Object)">
            <summary>
            Adds an element with the provided key and value to the SkipList.
            </summary>
            <param name="key">
            The Object to use as the key of the element to add. 
            </param>
            <param name="value">
            The Object to use as the value of the element to add. 
            </param>
        </member>
        <member name="M:Sanford.Collections.SkipList.Clear">
            <summary>
            Removes all elements from the SkipList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.Contains(System.Object)">
            <summary>
            Determines whether the SkipList contains an element with the 
            specified key.
            </summary>
            <param name="key">
            The key to locate in the SkipList.
            </param>
            <returns>
            true if the SkipList contains an element with the key; otherwise, 
            false.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.GetEnumerator">
            <summary>
            Returns an IDictionaryEnumerator for the SkipList.
            </summary>
            <returns>
            An IDictionaryEnumerator for the SkipList.
            </returns>
        </member>
        <member name="M:Sanford.Collections.SkipList.Remove(System.Object)">
            <summary>
            Removes the element with the specified key from the SkipList.
            </summary>
            <param name="key">
            The key of the element to remove.
            </param>
        </member>
        <member name="P:Sanford.Collections.SkipList.IsFixedSize">
            <summary>
            Gets a value indicating whether the SkipList has a fixed size.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.IsReadOnly">
            <summary>
            Gets a value indicating whether the IDictionary is read-only.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.Item(System.Object)">
            <summary>
            Gets or sets the element with the specified key. This is the 
            indexer for the SkipList. 
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.Keys">
            <summary>
            Gets an ICollection containing the keys of the SkipList.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.Values">
            <summary>
            Gets an ICollection containing the values of the SkipList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements of the SkipList to an Array, starting at a 
            particular Array index.
            </summary>
            <param name="array">
            The one-dimensional Array that is the destination of the elements 
            copied from SkipList.
            </param>
            <param name="index">
            The zero-based index in array at which copying begins.
            </param>
        </member>
        <member name="P:Sanford.Collections.SkipList.Count">
            <summary>
            Gets the number of elements contained in the SkipList.
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the SkipList is 
            synchronized (thread-safe).
            </summary>
        </member>
        <member name="P:Sanford.Collections.SkipList.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the 
            SkipList.
            </summary>
        </member>
        <member name="M:Sanford.Collections.SkipList.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the SkipList.
            </summary>
            <returns>
            An IEnumerator that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="T:Sanford.Threading.AsyncResult">
            <summary>
            Provides basic implementation of the IAsyncResult interface.
            </summary>
        </member>
        <member name="M:Sanford.Threading.AsyncResult.#ctor(System.Object,System.AsyncCallback,System.Object)">
            <summary>
            Initializes a new instance of the AsyncResult object with the
            specified owner of the AsyncResult object, the optional callback
            delegate, and optional state object.
            </summary>
            <param name="owner">
            The owner of the AsyncResult object.
            </param>
            <param name="callback">
            An optional asynchronous callback, to be called when the 
            operation is complete. 
            </param>
            <param name="state">
            A user-provided object that distinguishes this particular 
            asynchronous request from other requests. 
            </param>
        </member>
        <member name="M:Sanford.Threading.AsyncResult.Signal">
            <summary>
            Signals that the operation has completed.
            </summary>
        </member>
        <member name="P:Sanford.Threading.AsyncResult.Owner">
            <summary>
            Gets the owner of this AsyncResult object.
            </summary>
        </member>
        <member name="T:Sanford.Threading.DelegateQueue">
            <summary>
            Represents an asynchronous queue of delegates.
            </summary>
        </member>
        <member name="T:Sanford.Threading.DelegateQueue.DelegateQueueAsyncResult">
            <summary>
            Implements the IAsyncResult interface for the DelegateQueue class.
            </summary>
        </member>
        <member name="E:Sanford.Threading.DelegateQueue.InvokeCompleted">
            <summary>
            Occurs after a method has been invoked as a result of a call to 
            the BeginInvoke or BeginInvokePriority methods.
            </summary>
        </member>
        <member name="E:Sanford.Threading.DelegateQueue.PostCompleted">
            <summary>
            Occurs after a method has been invoked as a result of a call to
            the Post and PostPriority methods.
            </summary>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.#ctor">
            <summary>
            Initializes a new instance of the DelegateQueue class.
            </summary>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the DelegateQueue class with the specified IContainer object.
            </summary>
            <param name="container">
            The IContainer to which the DelegateQueue will add itself.
            </param>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.BeginInvokePriority(System.Delegate,System.Object[])">
            <summary>
            Executes the delegate on the main thread that this object executes on.
            </summary>
            <param name="method">
            A Delegate to a method that takes parameters of the same number and 
            type that are contained in args. 
            </param>
            <param name="args">
            An array of type Object to pass as arguments to the given method. 
            </param>
            <returns>
            An IAsyncResult interface that represents the asynchronous operation 
            started by calling this method.
            </returns>
            <remarks>
            The delegate is placed at the beginning of the queue. Its invocation
            takes priority over delegates already in the queue. 
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.InvokePriority(System.Delegate,System.Object[])">
            <summary>
            Executes the delegate on the main thread that this object executes on.
            </summary>
            <param name="method">
            A Delegate to a method that takes parameters of the same number and 
            type that are contained in args. 
            </param>
            <param name="args">
            An array of type Object to pass as arguments to the given method. 
            </param>
            <returns>
            An IAsyncResult interface that represents the asynchronous operation 
            started by calling this method.
            </returns>
            <remarks>
            <para>
            The delegate is placed at the beginning of the queue. Its invocation
            takes priority over delegates already in the queue. 
            </para>
            <para>
            Unlike BeginInvoke, this method operates synchronously, that is, it 
            waits until the process completes before returning. Exceptions raised 
            during the call are propagated back to the caller.
            </para>
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.BeginInvoke(System.AsyncCallback,System.Object,System.Delegate,System.Object[])">
            <summary>
            Executes the delegate on the main thread that this object executes on.
            </summary>
            <param name="callback">
            An optional asynchronous callback, to be called when the method is invoked.
            </param>
            <param name="state">
            A user-provided object that distinguishes this particular asynchronous invoke request from other requests. 
            </param>
            <param name="method">
            A Delegate to a method that takes parameters of the same number and 
            type that are contained in args. 
            </param>
            <param name="args">
            An array of type Object to pass as arguments to the given method. 
            </param>
            <returns>
            An IAsyncResult interface that represents the asynchronous operation 
            started by calling this method.
            </returns>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.PostPriority(System.Threading.SendOrPostCallback,System.Object)">
            <summary>
            Dispatches an asynchronous message to this synchronization context. 
            </summary>
            <param name="d">
            The SendOrPostCallback delegate to call.
            </param>
            <param name="state">
            The object passed to the delegate.
            </param>
            <remarks>
            The Post method starts an asynchronous request to post a message. 
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.SendPriority(System.Threading.SendOrPostCallback,System.Object)">
            <summary>
            Dispatches an synchronous message to this synchronization context. 
            </summary>
            <param name="d">
            The SendOrPostCallback delegate to call.
            </param>
            <param name="state">
            The object passed to the delegate.
            </param>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.Send(System.Threading.SendOrPostCallback,System.Object)">
            <summary>
            Dispatches a synchronous message to this synchronization context. 
            </summary>
            <param name="d">
            The SendOrPostCallback delegate to call.
            </param>
            <param name="state">
            The object passed to the delegate.
            </param>
            <remarks>
            The Send method starts an synchronous request to send a message. 
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.Post(System.Threading.SendOrPostCallback,System.Object)">
            <summary>
            Dispatches an asynchronous message to this synchronization context. 
            </summary>
            <param name="d">
            The SendOrPostCallback delegate to call.
            </param>
            <param name="state">
            The object passed to the delegate.
            </param>
            <remarks>
            The Post method starts an asynchronous request to post a message. 
            </remarks>
        </member>
        <member name="E:Sanford.Threading.DelegateQueue.Disposed">
            <summary>
            Represents the method that handles the Disposed delegate of a DelegateQueue.
            </summary>
        </member>
        <member name="P:Sanford.Threading.DelegateQueue.Site">
            <summary>
            Gets or sets the ISite associated with the DelegateQueue.
            </summary>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.BeginInvoke(System.Delegate,System.Object[])">
            <summary>
            Executes the delegate on the main thread that this DelegateQueue executes on.
            </summary>
            <param name="method">
            A Delegate to a method that takes parameters of the same number and type that 
            are contained in args. 
            </param>
            <param name="args">
            An array of type Object to pass as arguments to the given method. This can be 
            a null reference (Nothing in Visual Basic) if no arguments are needed. 
            </param>
            <returns>
            An IAsyncResult interface that represents the asynchronous operation started 
            by calling this method.
            </returns>
            <remarks>
            <para>The delegate is called asynchronously, and this method returns immediately. 
            You can call this method from any thread. If you need the return value from a process 
            started with this method, call EndInvoke to get the value.</para>
            <para>If you need to call the delegate synchronously, use the Invoke method instead.</para>
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.EndInvoke(System.IAsyncResult)">
            <summary>
            Waits until the process started by calling BeginInvoke completes, and then returns 
            the value generated by the process.
            </summary>
            <param name="result">
            An IAsyncResult interface that represents the asynchronous operation started 
            by calling BeginInvoke. 
            </param>
            <returns>
            An Object that represents the return value generated by the asynchronous operation.
            </returns>
            <remarks>
            This method gets the return value of the asynchronous operation represented by the 
            IAsyncResult passed by this interface. If the asynchronous operation has not completed, this method will wait until the result is available.
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.Invoke(System.Delegate,System.Object[])">
            <summary>
            Executes the delegate on the main thread that this DelegateQueue executes on.
            </summary>
            <param name="method">
            A Delegate that contains a method to call, in the context of the thread for the DelegateQueue.
            </param>
            <param name="args">
            An array of type Object that represents the arguments to pass to the given method.
            </param>
            <returns>
            An Object that represents the return value from the delegate being invoked, or a 
            null reference (Nothing in Visual Basic) if the delegate has no return value.
            </returns>
            <remarks>
            <para>Unlike BeginInvoke, this method operates synchronously, that is, it waits until 
            the process completes before returning. Exceptions raised during the call are propagated 
            back to the caller.</para>
            <para>Use this method when calling a method from a different thread to marshal the call 
            to the proper thread.</para>
            </remarks>
        </member>
        <member name="P:Sanford.Threading.DelegateQueue.InvokeRequired">
            <summary>
            Gets a value indicating whether the caller must call Invoke.
            </summary>
            <value>
            <b>true</b> if the caller must call Invoke; otherwise, <b>false</b>.
            </value>
            <remarks>
            This property determines whether the caller must call Invoke when making 
            method calls to this DelegateQueue. If you are calling a method from a different 
            thread, you must use the Invoke method to marshal the call to the proper thread.
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateQueue.Dispose">
            <summary>
            Disposes of the DelegateQueue.
            </summary>
        </member>
        <member name="T:Sanford.Threading.DelegateScheduler">
            <summary>
            Provides functionality for timestamped delegate invocation.
            </summary>
        </member>
        <member name="F:Sanford.Threading.DelegateScheduler.Infinite">
            <summary>
            A constant value representing an unlimited number of delegate invocations.
            </summary>
        </member>
        <member name="E:Sanford.Threading.DelegateScheduler.InvokeCompleted">
            <summary>
            Raised when a delegate is invoked.
            </summary>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.#ctor">
            <summary>
            Initializes a new instance of the DelegateScheduler class.
            </summary>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the DelegateScheduler class with the
            specified IContainer.
            </summary>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.Add(System.Int32,System.Int32,System.Delegate,System.Object[])">
            <summary>
            Adds a delegate to the DelegateScheduler.
            </summary>
            <param name="count">
            The number of times the delegate should be invoked.
            </param>
            <param name="millisecondsTimeout">
            The time in milliseconds between delegate invocation.
            </param>
            <param name="method">
            </param>
            The delegate to invoke.
            <param name="args">
            The arguments to pass to the delegate when it is invoked.
            </param>
            <returns>
            A Task object representing the scheduled task.
            </returns>
            <exception cref="T:System.ObjectDisposedException">
            If the DelegateScheduler has already been disposed.
            </exception>
            <remarks>
            If an unlimited count is desired, pass the DelegateScheduler.Infinity 
            constant as the count argument.
            </remarks>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.Remove(Sanford.Threading.Task)">
            <summary>
            Removes the specified Task.
            </summary>
            <param name="task">
            The Task to be removed.
            </param>
            <exception cref="T:System.ObjectDisposedException">
            If the DelegateScheduler has already been disposed.
            </exception>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.Start">
            <summary>
            Starts the DelegateScheduler.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the DelegateScheduler has already been disposed.
            </exception>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.Stop">
            <summary>
            Stops the DelegateScheduler.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the DelegateScheduler has already been disposed.
            </exception>
        </member>
        <member name="M:Sanford.Threading.DelegateScheduler.Clear">
            <summary>
            Clears the DelegateScheduler of all tasks.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            If the DelegateScheduler has already been disposed.
            </exception>
        </member>
        <member name="P:Sanford.Threading.DelegateScheduler.PollingInterval">
            <summary>
            Gets or sets the interval in milliseconds in which the 
            DelegateScheduler polls its queue of delegates in order to 
            determine when they should run.
            </summary>
        </member>
        <member name="P:Sanford.Threading.DelegateScheduler.IsRunning">
            <summary>
            Gets a value indicating whether the DelegateScheduler is running.
            </summary>
        </member>
        <member name="P:Sanford.Threading.DelegateScheduler.SynchronizingObject">
            <summary>
            Gets or sets the object used to marshal event-handler calls and delegate invocations.
            </summary>
        </member>
        <member name="T:Sanford.Threading.InvokeCompletedEventArgs">
            <summary>
            Represents information about the InvokeCompleted event.
            </summary>
        </member>
    </members>
</doc>
