public void TestClone()
        {
            var          manualMidi      = new MidiEventCollection(1, 200);
            var          noteEvent1      = new NoteOnEvent(0, 1, 1, 1, 1);
            const string trackName1      = "name";
            var          trackNameEvent1 = new TextEvent(trackName1, MetaEventType.SequenceTrackName, 0);
            var          endTrackEvent1  = new MetaEvent(MetaEventType.EndTrack, 0, noteEvent1.OffEvent.AbsoluteTime);

            var track1 = manualMidi.AddTrack();

            track1.Add(trackNameEvent1);
            track1.Add(noteEvent1);
            track1.Add(noteEvent1.OffEvent);
            track1.Add(endTrackEvent1);

            var          noteEvent2      = new NoteOnEvent(0, 1, 1, 1, 1);
            const string trackName2      = "name";
            var          trackNameEvent2 = new TextEvent(trackName2, MetaEventType.SequenceTrackName, 0);
            var          endTrackEvent2  = new MetaEvent(MetaEventType.EndTrack, 0, noteEvent2.OffEvent.AbsoluteTime);

            var track2 = manualMidi.AddTrack();

            track2.Add(trackNameEvent2);
            track2.Add(noteEvent2);
            track2.Add(noteEvent2.OffEvent);
            track2.Add(endTrackEvent2);

            var clone = manualMidi.Clone();

            MidiAssert.Equal(manualMidi, clone);

            for (var t = 0; t < manualMidi.Tracks; t++)
            {
                var manualTrack    = manualMidi[t];
                var extensionTrack = clone[t];
                for (var e = 1; e < manualTrack.Count - 1; e++)
                {
                    Assert.That(extensionTrack[e], Is.Not.SameAs(manualTrack[e]));
                }
            }
        }