| 
					
				 | 
			
			
				@@ -10,8 +10,15 @@ import {Beam} from "../VoiceData/Beam"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import {Tie} from "../VoiceData/Tie"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import {Tuplet} from "../VoiceData/Tuplet"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import {Fraction} from "../../Common/DataObjects/fraction"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import {MusicSymbolModuleFactory} from "./InstrumentReader"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import {MusicSymbolModuleFactory} from "./InstrumentReader"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import {IXmlElement} from "../../Common/FileIO/Xml"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {ITextTranslation} from "../Interfaces/ITextTranslation"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {ArticulationEnum} from "../VoiceData/VoiceEntry"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {Slur} from "../VoiceData/Expressions/ContinuousExpressions/Slur"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {LyricsEntry} from "../VoiceData/Lyrics/LyricsEntry"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {MusicSheetReadingException} from "../Exceptions"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type SlurReader = any; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     constructor(instrument: Instrument, voiceId: number, slurReader: SlurReader, mainVoice: Voice = null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -22,13 +29,13 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.voice = new Voice(instrument, voiceId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        instrument.Voices.Add(this.voice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.lyricsReader = MusicSymbolModuleFactory.createLyricsReader(this.musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.articulationReader = MusicSymbolModuleFactory.createArticulationReader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        instrument.Voices.push(this.voice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //this.lyricsReader = MusicSymbolModuleFactory.createLyricsReader(this.musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //this.articulationReader = MusicSymbolModuleFactory.createArticulationReader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private slurReader: SlurReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private lyricsReader: LyricsReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private articulationReader: ArticulationReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //private lyricsReader: LyricsReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //private articulationReader: ArticulationReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private musicSheet: MusicSheet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private voice: Voice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private currentVoiceEntry: VoiceEntry; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,9 +45,9 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private lastBeamTag: string = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private openBeam: Beam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private openGraceBeam: Beam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private openTieDict: Dictionary<number, Tie> = new Dictionary<number, Tie>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private openTieDict: { [_: number]: Tie; } = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private currentOctaveShift: number = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private tupletDict: Dictionary<number, Tuplet> = new Dictionary<number, Tuplet>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private tupletDict: { [_: number]: Tuplet; } = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private openTupletNumber: number = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public get GetVoice(): Voice { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -53,11 +60,11 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.currentOctaveShift = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public createVoiceEntry(musicTimestamp: Fraction, parentStaffEntry: SourceStaffEntry, addToVoice: boolean): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.currentVoiceEntry = new VoiceEntry(new Fraction(musicTimestamp), this.voice, parentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.currentVoiceEntry = new VoiceEntry(musicTimestamp.clone(), this.voice, parentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (addToVoice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.voice.VoiceEntries.Add(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!parentStaffEntry.VoiceEntries.Contains(this.currentVoiceEntry)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            parentStaffEntry.VoiceEntries.Add(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.voice.VoiceEntries.push(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (parentStaffEntry.VoiceEntries.indexOf(this.currentVoiceEntry) === -1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            parentStaffEntry.VoiceEntries.push(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public read(noteNode: IXmlElement, noteDuration: number, divisions: number, restNote: boolean, graceNote: boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         parentStaffEntry: SourceStaffEntry, parentMeasure: SourceMeasure, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -76,26 +83,26 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (this.articulationReader != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     this.readArticulations(notationNode, this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var slurNodes: IEnumerable<IXmlElement> = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var slurNodes: IXmlElement[] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (this.slurReader != null && (slurNodes = notationNode.Elements("slur")).Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    this.slurReader.addSlur(slurNodes.ToArray(), this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var tupletNodeList: IEnumerable<IXmlElement> = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if ((tupletNodeList = notationNode.Elements("tuplet")).Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.slurReader.addSlur(slurNodes, this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var tupletNodeList: IXmlElement[] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if ((tupletNodeList = notationNode.Elements("tuplet"))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     this.openTupletNumber = this.addTuplet(noteNode, tupletNodeList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (notationNode.Element("arpeggiate") != null && !graceNote) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    this.currentVoiceEntry.ArpeggiosNotesIndices.Add(this.currentVoiceEntry.Notes.IndexOf(this.currentNote)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var tiedNodeList: IEnumerable<IXmlElement> = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if ((tiedNodeList = notationNode.Elements("tied")).Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.currentVoiceEntry.ArpeggiosNotesIndices.push(this.currentVoiceEntry.Notes.indexOf(this.currentNote)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var tiedNodeList: IXmlElement[] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if ((tiedNodeList = notationNode.Elements("tied"))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     this.addTie(tiedNodeList, measureStartAbsoluteTimestamp, maxTieNoteFraction); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var toRemove: List<number> = new List<number>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var toRemove: number[] = new number[](); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var openTieDictArr: KeyValuePair<number, Tie>[] = this.openTieDict.ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (var idx: number = 0, len = openTieDictArr.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var openTie: KeyValuePair<number, Tie> = openTieDictArr[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var tie: Tie = openTie.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (tie.Start.ParentStaffEntry.Timestamp + tie.Start.Length < this.currentStaffEntry.Timestamp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        toRemove.Add(openTie.Key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        toRemove.push(openTie.Key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (var idx: number = 0, len = toRemove.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (var idx: number = 0, len = toRemove.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var i: number = toRemove[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     this.openTieDict.Remove(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -107,27 +114,27 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         catch (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/NoteError", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "Ignored erroneous Note."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.musicSheet.SheetErrors.AddErrorMessageInTempList(errorMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.musicSheet.SheetErrors.pushTemp(errorMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.currentNote; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public checkForOpenGraceNotes(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.currentStaffEntry != null && this.currentStaffEntry.VoiceEntries.Count == 0 && this.currentVoiceEntry.GraceVoiceEntriesBefore != null && this.currentVoiceEntry.GraceVoiceEntriesBefore.Count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.currentStaffEntry != null && this.currentStaffEntry.VoiceEntries.length == 0 && this.currentVoiceEntry.GraceVoiceEntriesBefore != null && this.currentVoiceEntry.GraceVoiceEntriesBefore.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var voice: Voice = this.currentVoiceEntry.ParentVoice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var horizontalIndex: number = this.currentMeasure.VerticalSourceStaffEntryContainers.IndexOf(this.currentStaffEntry.VerticalContainerParent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var verticalIndex: number = this.currentStaffEntry.VerticalContainerParent.StaffEntries.IndexOf(this.currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var horizontalIndex: number = this.currentMeasure.VerticalSourceStaffEntryContainers.indexOf(this.currentStaffEntry.VerticalContainerParent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var verticalIndex: number = this.currentStaffEntry.VerticalContainerParent.StaffEntries.indexOf(this.currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var previousStaffEntry: SourceStaffEntry = this.currentMeasure.getPreviousSourceStaffEntryFromIndex(verticalIndex, horizontalIndex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (previousStaffEntry != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var previousVoiceEntry: VoiceEntry = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (var idx: number = 0, len = previousStaffEntry.VoiceEntries.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (var idx: number = 0, len = previousStaffEntry.VoiceEntries.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var voiceEntry: VoiceEntry = previousStaffEntry.VoiceEntries[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (voiceEntry.ParentVoice == voice) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         previousVoiceEntry = voiceEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        previousVoiceEntry.GraceVoiceEntriesAfter = new List<VoiceEntry>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        for (var idx2: number = 0, len2 = this.currentVoiceEntry.GraceVoiceEntriesBefore.Count; idx2 < len2; ++idx2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        previousVoiceEntry.GraceVoiceEntriesAfter = VoiceEntry[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        for (var idx2: number = 0, len2 = this.currentVoiceEntry.GraceVoiceEntriesBefore.length; idx2 < len2; ++idx2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var graceVoiceEntry: VoiceEntry = this.currentVoiceEntry.GraceVoiceEntriesBefore[idx2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            previousVoiceEntry.GraceVoiceEntriesAfter.Add(graceVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            previousVoiceEntry.GraceVoiceEntriesAfter.push(graceVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         this.currentVoiceEntry.GraceVoiceEntriesBefore.Clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         this.currentStaffEntry = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -140,7 +147,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public checkForStaffEntryLink(index: number, currentStaff: Staff, currentStaffEntry: SourceStaffEntry, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         currentMeasure: SourceMeasure): SourceStaffEntry { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var staffEntryLink: StaffEntryLink = new StaffEntryLink(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        staffEntryLink.LinkStaffEntries.Add(currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        staffEntryLink.LinkStaffEntries.push(currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         currentStaffEntry.Link = staffEntryLink; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var linkMusicTimestamp: Fraction = new Fraction(this.currentVoiceEntry.Timestamp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var verticalSourceStaffEntryContainer: VerticalSourceStaffEntryContainer = currentMeasure.getVerticalContainerByTimestamp(linkMusicTimestamp); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -149,8 +156,8 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             currentStaffEntry = new SourceStaffEntry(verticalSourceStaffEntryContainer, currentStaff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             verticalSourceStaffEntryContainer[index] = currentStaffEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        currentStaffEntry.VoiceEntries.Add(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        staffEntryLink.LinkStaffEntries.Add(currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        currentStaffEntry.VoiceEntries.push(this.currentVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        staffEntryLink.LinkStaffEntries.push(currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         currentStaffEntry.Link = staffEntryLink; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return currentStaffEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -159,15 +166,15 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.handleOpenBeam(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public checkOpenTies(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var toRemove: List<number> = new List<number>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var toRemove: number[] = new number[](); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var openTieDictArr: KeyValuePair<number, Tie>[] = this.openTieDict.ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (var idx: number = 0, len = openTieDictArr.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var openTie: KeyValuePair<number, Tie> = openTieDictArr[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var tie: Tie = openTie.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (tie.Start.ParentStaffEntry.Timestamp + tie.Start.Length < tie.Start.ParentStaffEntry.VerticalContainerParent.ParentMeasure.Duration) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                toRemove.Add(openTie.Key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                toRemove.push(openTie.Key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (var idx: number = 0, len = toRemove.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var idx: number = 0, len = toRemove.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var i: number = toRemove[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.openTieDict.Remove(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -351,7 +358,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var note: Note = new Note(this.currentVoiceEntry, this.currentStaffEntry, noteLength, pitch); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         note.PlaybackInstrumentId = playbackInstrumentId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!graceNote) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.currentVoiceEntry.Notes.Add(note); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.currentVoiceEntry.Notes.push(note); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else this.handleGraceNote(node, note); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (node.Elements("beam").Any() && !chord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.createBeam(node, note, graceNote); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -361,9 +368,9 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private addRestNote(noteDuration: number, divisions: number): Note { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var restFraction: Fraction = new Fraction(noteDuration, divisions); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var restNote: Note = new Note(this.currentVoiceEntry, this.currentStaffEntry, restFraction, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.currentVoiceEntry.Notes.Add(restNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.currentVoiceEntry.Notes.push(restNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (this.openBeam != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.openBeam.ExtendedNoteList.Add(restNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.openBeam.ExtendedNoteList.push(restNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return restNote; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private createBeam(node: IXmlElement, note: Note, grace: boolean): void { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -374,7 +381,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 beamAttr = beamNode.Attribute("number"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (beamAttr != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var beamNumber: number = StringToNumberConverter.ToInteger(beamAttr.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var mainBeamNode: IEnumerable<IXmlElement> = node.Elements("beam"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var mainBeamNode: IXmlElement[] = node.Elements("beam"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var currentBeamTag: string = mainBeamNode.First().Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (beamNumber == 1 && mainBeamNode != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (currentBeamTag == "begin" && this.lastBeamTag != currentBeamTag) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -395,7 +402,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (grace) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (this.openGraceBeam == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (var idx: number = 0, len = this.openGraceBeam.Notes.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (var idx: number = 0, len = this.openGraceBeam.Notes.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var beamNote: Note = this.openGraceBeam.Notes[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (this.currentVoiceEntry == beamNote.ParentVoiceEntry) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             sameVoiceEntry = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -409,7 +416,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (this.openBeam == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (var idx: number = 0, len = this.openBeam.Notes.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (var idx: number = 0, len = this.openBeam.Notes.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var beamNote: Note = this.openBeam.Notes[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (this.currentVoiceEntry == beamNote.ParentVoiceEntry) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             sameVoiceEntry = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -431,7 +438,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private handleOpenBeam(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.openBeam.Notes.Count == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.openBeam.Notes.length == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var beamNote: Note = this.openBeam.Notes[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             beamNote.NoteBeam = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.openBeam = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -443,11 +450,11 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var beamLastNote: Note = this.openBeam.Notes.Last(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var beamLastNoteStaffEntry: SourceStaffEntry = beamLastNote.ParentStaffEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var horizontalIndex: number = this.currentMeasure.getVerticalContainerIndexByTimestamp(beamLastNoteStaffEntry.Timestamp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var verticalIndex: number = beamLastNoteStaffEntry.VerticalContainerParent.StaffEntries.IndexOf(beamLastNoteStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (horizontalIndex < this.currentMeasure.VerticalSourceStaffEntryContainers.Count - 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var verticalIndex: number = beamLastNoteStaffEntry.VerticalContainerParent.StaffEntries.indexOf(beamLastNoteStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (horizontalIndex < this.currentMeasure.VerticalSourceStaffEntryContainers.length - 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var nextStaffEntry: SourceStaffEntry = this.currentMeasure.VerticalSourceStaffEntryContainers[horizontalIndex + 1][verticalIndex]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (nextStaffEntry != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (var idx: number = 0, len = nextStaffEntry.VoiceEntries.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (var idx: number = 0, len = nextStaffEntry.VoiceEntries.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var voiceEntry: VoiceEntry = nextStaffEntry.VoiceEntries[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (voiceEntry.ParentVoice == this.voice) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var candidateNote: Note = voiceEntry.Notes[0]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -471,7 +478,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var graceChord: boolean = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var type: string = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (node.Elements("type").Any()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var typeNode: IEnumerable<IXmlElement> = node.Elements("type"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var typeNode: IXmlElement[] = node.Elements("type"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (typeNode.Any()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 type = typeNode.First().Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 try { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -503,19 +510,19 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this.currentStaffEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (this.currentVoiceEntry.GraceVoiceEntriesBefore == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this.currentVoiceEntry.GraceVoiceEntriesBefore = new List<VoiceEntry>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.currentVoiceEntry.GraceVoiceEntriesBefore.Add(graceVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.currentVoiceEntry.GraceVoiceEntriesBefore.push(graceVoiceEntry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this.currentVoiceEntry.GraceVoiceEntriesBefore != null && this.currentVoiceEntry.GraceVoiceEntriesBefore.Count > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.currentVoiceEntry.GraceVoiceEntriesBefore != null && this.currentVoiceEntry.GraceVoiceEntriesBefore.length > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 graceVoiceEntry = this.currentVoiceEntry.GraceVoiceEntriesBefore.Last(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (graceVoiceEntry != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            graceVoiceEntry.Notes.Add(note); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            graceVoiceEntry.Notes.push(note); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             note.ParentVoiceEntry = graceVoiceEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private addTuplet(node: IXmlElement, tupletNodeList: IEnumerable<IXmlElement>): number { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (tupletNodeList != null && tupletNodeList.Count() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private addTuplet(node: IXmlElement, tupletNodeList: IXmlElement[]): number { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (tupletNodeList != null && tupletNodeList.length() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var timeModNode: IXmlElement = node.Element("time-modification"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (timeModNode != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 timeModNode = timeModNode.Element("actual-notes"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -544,16 +551,16 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var tuplet: Tuplet = new Tuplet(tupletLabelNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (this.tupletDict.ContainsKey(tupletNumber)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             this.tupletDict.Remove(tupletNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (this.tupletDict.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (this.tupletDict.length == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.openTupletNumber = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            else if (this.tupletDict.Count > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            else if (this.tupletDict.length > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.openTupletNumber--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        this.tupletDict.Add(tupletNumber, tuplet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.tupletDict.push(tupletNumber, tuplet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var subnotelist: List<Note> = new List<Note>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        subnotelist.Add(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        tuplet.Notes.Add(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        tuplet.Fractions.Add(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        subnotelist.push(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tuplet.Notes.push(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tuplet.Fractions.push(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         this.currentNote.NoteTuplet = tuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         this.openTupletNumber = tupletNumber; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -564,14 +571,14 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (this.tupletDict.ContainsKey(tupletNumber)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var tuplet: Tuplet = this.tupletDict[tupletNumber]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var subnotelist: List<Note> = new List<Note>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            subnotelist.Add(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            tuplet.Notes.Add(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            tuplet.Fractions.Add(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            subnotelist.push(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            tuplet.Notes.push(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            tuplet.Fractions.push(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             this.currentNote.NoteTuplet = tuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             this.tupletDict.Remove(tupletNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (this.tupletDict.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (this.tupletDict.length == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.openTupletNumber = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            else if (this.tupletDict.Count > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            else if (this.tupletDict.length > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.openTupletNumber--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -619,12 +626,12 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         tuplet = new Tuplet(tupletLabelNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        this.tupletDict.Add(tupletnumber, tuplet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.tupletDict.push(tupletnumber, tuplet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var subnotelist: List<Note> = new List<Note>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    subnotelist.Add(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tuplet.Notes.Add(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tuplet.Fractions.Add(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    subnotelist.push(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tuplet.Notes.push(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tuplet.Fractions.push(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     this.currentNote.NoteTuplet = tuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     this.openTupletNumber = tupletnumber; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -634,13 +641,13 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (this.tupletDict.ContainsKey(tupletnumber)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var tuplet: Tuplet = this.tupletDict[this.openTupletNumber]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var subnotelist: List<Note> = new List<Note>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        subnotelist.Add(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        tuplet.Notes.Add(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        tuplet.Fractions.Add(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        subnotelist.push(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tuplet.Notes.push(subnotelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tuplet.Fractions.push(this.getTupletNoteDurationFromType(node)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         this.currentNote.NoteTuplet = tuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (this.tupletDict.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (this.tupletDict.length == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             this.openTupletNumber = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        else if (this.tupletDict.Count > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        else if (this.tupletDict.length > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             this.openTupletNumber--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         this.tupletDict.Remove(tupletnumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -650,7 +657,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.openTupletNumber; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private handleTimeModificationNode(noteNode: IXmlElement): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.tupletDict.Count != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.tupletDict.length != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var tuplet: Tuplet = this.tupletDict[this.openTupletNumber]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var notes: List<Note> = tuplet.Notes.Last(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -660,10 +667,10 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     noteList = notes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     noteList = new List<Note>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tuplet.Notes.Add(noteList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tuplet.Fractions.Add(this.getTupletNoteDurationFromType(noteNode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tuplet.Notes.push(noteList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tuplet.Fractions.push(this.getTupletNoteDurationFromType(noteNode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                noteList.Add(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                noteList.push(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this.currentNote.NoteTuplet = tuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             catch (ex) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -674,19 +681,19 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else if (this.currentVoiceEntry.Notes.Count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (this.currentVoiceEntry.Notes.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var firstNote: Note = this.currentVoiceEntry.Notes[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (firstNote.NoteTuplet != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var tuplet: Tuplet = firstNote.NoteTuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var notes: List<Note> = tuplet.Notes.Last(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                notes.Add(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                notes.push(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this.currentNote.NoteTuplet = tuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private addTie(tieNodeList: IEnumerable<IXmlElement>, measureStartAbsoluteTimestamp: Fraction, maxTieNoteFraction: Fraction): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private addTie(tieNodeList: IXmlElement[], measureStartAbsoluteTimestamp: Fraction, maxTieNoteFraction: Fraction): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (tieNodeList != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (tieNodeList.Count() == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (tieNodeList.length() == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var tieNode: IXmlElement = tieNodeList.First(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (tieNode != null && tieNode.Attributes().Any()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var type: string = tieNode.Attribute("type").Value; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -697,13 +704,13 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.openTieDict.Remove(number); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var newTieNumber: number = this.getNextAvailableNumberForTie(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var tie: Tie = new Tie(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            this.openTieDict.Add(newTieNumber, tie); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            this.openTieDict.push(newTieNumber, tie); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (this.currentNote.NoteBeam != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 if (this.currentNote.NoteBeam.Notes[0] == this.currentNote) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     tie.BeamStartTimestamp = measureStartAbsoluteTimestamp + this.currentVoiceEntry.Timestamp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    for (var idx: number = 0, len = this.currentNote.NoteBeam.Notes.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    for (var idx: number = 0, len = this.currentNote.NoteBeam.Notes.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         var note: Note = this.currentNote.NoteBeam.Notes[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         if (note.NoteTie != null && note.NoteTie != tie && note.NoteTie.BeamStartTimestamp != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                             tie.BeamStartTimestamp = note.NoteTie.BeamStartTimestamp; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -716,19 +723,19 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         else if (type == "stop") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var tieNumber: number = this.findCurrentNoteInTieDict(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (this.openTieDict.ContainsKey(tieNumber)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var tie: Tie = this.openTieDict[tieNumber]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            var tie: Tie = this.openTieDict[tieNumber]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (tie !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 var tieStartNote: Note = tie.Start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 tieStartNote.NoteTie = tie; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 tieStartNote.Length.Add(this.currentNote.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                tie.Fractions.Add(this.currentNote.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                tie.Fractions.push(this.currentNote.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 if (maxTieNoteFraction < this.currentStaffEntry.Timestamp + this.currentNote.Length) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     maxTieNoteFraction = this.currentStaffEntry.Timestamp + this.currentNote.Length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.currentVoiceEntry.Notes.Remove(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (this.currentVoiceEntry.Articulations.Count == 1 && this.currentVoiceEntry.Articulations[0] == ArticulationEnum.fermata && !tieStartNote.ParentVoiceEntry.Articulations.Contains(ArticulationEnum.fermata)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    tieStartNote.ParentVoiceEntry.Articulations.Add(ArticulationEnum.fermata); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (this.currentVoiceEntry.Articulations.length == 1 && this.currentVoiceEntry.Articulations[0] == ArticulationEnum.fermata && !tieStartNote.ParentVoiceEntry.Articulations.Contains(ArticulationEnum.fermata)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    tieStartNote.ParentVoiceEntry.Articulations.push(ArticulationEnum.fermata); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 if (this.currentNote.NoteBeam != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var noteBeamIndex: number = this.currentNote.NoteBeam.Notes.IndexOf(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    var noteBeamIndex: number = this.currentNote.NoteBeam.Notes.indexOf(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     if (noteBeamIndex == 0 && tie.BeamStartTimestamp == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         tie.BeamStartTimestamp = measureStartAbsoluteTimestamp + this.currentVoiceEntry.Timestamp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     var noteBeam: Beam = this.currentNote.NoteBeam; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -737,28 +744,28 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 if (this.currentNote.NoteTuplet != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     var noteTupletIndex: number = this.currentNote.NoteTuplet.getNoteIndex(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var index: number = this.currentNote.NoteTuplet.Notes[noteTupletIndex].IndexOf(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    var index: number = this.currentNote.NoteTuplet.Notes[noteTupletIndex].indexOf(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     var noteTuplet: Tuplet = this.currentNote.NoteTuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     noteTuplet.Notes[noteTupletIndex][index] = tieStartNote; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     tie.TieTuplet = noteTuplet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                for (var idx: number = 0, len = this.currentNote.NoteSlurs.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                for (var idx: number = 0, len = this.currentNote.NoteSlurs.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     var slur: Slur = this.currentNote.NoteSlurs[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     if (slur.StartNote == this.currentNote) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         slur.StartNote = tie.Start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        slur.StartNote.NoteSlurs.Add(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        slur.StartNote.NoteSlurs.push(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     if (slur.EndNote == this.currentNote) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         slur.EndNote = tie.Start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        slur.EndNote.NoteSlurs.Add(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        slur.EndNote.NoteSlurs.push(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var lyricsEntriesArr: KeyValuePair<number, LyricsEntry>[] = this.currentVoiceEntry.LyricsEntries.ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                for (var idx: number = 0, len = lyricsEntriesArr.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var lyricsEntry: KeyValuePair<number, LyricsEntry> = lyricsEntriesArr[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if (!tieStartNote.ParentVoiceEntry.LyricsEntries.ContainsKey(lyricsEntry.Key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        tieStartNote.ParentVoiceEntry.LyricsEntries.Add(lyricsEntry.Key, lyricsEntry.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        lyricsEntry.Value.Parent = tieStartNote.ParentVoiceEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //var lyricsEntriesArr: KeyValuePair<number, LyricsEntry>[] = this.currentVoiceEntry.LyricsEntries.ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                for (let lyricsEntry in this.currentVoiceEntry.LyricsEntries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    let val: LyricsEntry = this.currentVoiceEntry.LyricsEntries[lyricsEntry]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    if (!tieStartNote.ParentVoiceEntry.LyricsEntries[lyricsEntry] === undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        tieStartNote.ParentVoiceEntry.LyricsEntries[lyricsEntry] = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        val.Parent = tieStartNote.ParentVoiceEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 this.openTieDict.Remove(tieNumber); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -767,42 +774,42 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     catch (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/TieError", "Error while reading tie."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        this.musicSheet.SheetErrors.AddErrorMessageInTempList(errorMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.musicSheet.SheetErrors.pushTemp(errorMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else if (tieNodeList.Count() == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (tieNodeList.length() == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var tieNumber: number = this.findCurrentNoteInTieDict(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (tieNumber >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var tie: Tie = this.openTieDict[tieNumber]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var tieStartNote: Note = tie.Start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     tieStartNote.Length.Add(this.currentNote.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tie.Fractions.Add(this.currentNote.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tie.Fractions.push(this.currentNote.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (this.currentNote.NoteBeam != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        var noteBeamIndex: number = this.currentNote.NoteBeam.Notes.IndexOf(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var noteBeamIndex: number = this.currentNote.NoteBeam.Notes.indexOf(this.currentNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (noteBeamIndex == 0 && tie.BeamStartTimestamp == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             tie.BeamStartTimestamp = measureStartAbsoluteTimestamp + this.currentVoiceEntry.Timestamp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var noteBeam: Beam = this.currentNote.NoteBeam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         noteBeam.Notes[noteBeamIndex] = tieStartNote; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         tie.TieBeam = noteBeam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (var idx: number = 0, len = this.currentNote.NoteSlurs.Count; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (var idx: number = 0, len = this.currentNote.NoteSlurs.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var slur: Slur = this.currentNote.NoteSlurs[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (slur.StartNote == this.currentNote) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             slur.StartNote = tie.Start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            slur.StartNote.NoteSlurs.Add(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            slur.StartNote.NoteSlurs.push(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (slur.EndNote == this.currentNote) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             slur.EndNote = tie.Start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            slur.EndNote.NoteSlurs.Add(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            slur.EndNote.NoteSlurs.push(slur); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var lyricsEntries: KeyValuePair<number, LyricsEntry>[] = this.currentVoiceEntry.LyricsEntries.ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (var idx: number = 0, len = lyricsEntries.length; idx < len; ++idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var lyricsEntry: KeyValuePair<number, LyricsEntry> = lyricsEntries[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (!tieStartNote.ParentVoiceEntry.LyricsEntries.ContainsKey(lyricsEntry.Key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            tieStartNote.ParentVoiceEntry.LyricsEntries.Add(lyricsEntry.Key, lyricsEntry.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            tieStartNote.ParentVoiceEntry.LyricsEntries.push(lyricsEntry.Key, lyricsEntry.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             lyricsEntry.Value.Parent = tieStartNote.ParentVoiceEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -814,15 +821,15 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private getNextAvailableNumberForTie(): number { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var keys: List<number> = new List<number>(this.openTieDict.Keys.ToList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (keys.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var keys: number[] = this.openTieDict.keys(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (keys.length == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         keys.Sort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (var i: number = 0; i < keys.Count; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var i: number = 0; i < keys.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (i + 1 != keys[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return i + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return keys[keys.Count - 1] + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return keys[keys.length - 1] + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private findCurrentNoteInTieDict(candidateNote: Note): number { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var openTieDictArr: KeyValuePair<number, Tie>[] = this.openTieDict.ToArray(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -844,8 +851,8 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/NoteDurationError", "Invalid note duration."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    this.musicSheet.SheetErrors.AddErrorMessageInTempList(errorMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new MusicSheetReadingException("", e, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.musicSheet.SheetErrors.pushTemp(errorMsg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new MusicSheetReadingException("", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 |