public Track Clone() { var clone = (Track)MemberwiseClone(); clone.NotesList = new List <Notes>(); NotesList.ForEach(x => clone.NotesList.Add(x.Clone())); clone.InstrumentList = new LinkedList <Event.Instrument>(); foreach (Event.Instrument inst in InstrumentList) { clone.InstrumentList.AddLast(inst.Clone()); } clone.VolumeList = new LinkedList <Event.Volume>(); foreach (Event.Volume vol in VolumeList) { clone.VolumeList.AddLast(vol.Clone()); } clone.PanList = new LinkedList <Event.Pan>(); foreach (Event.Pan pan in PanList) { clone.PanList.AddLast(pan.Clone()); } return(clone); }