protected MeasureTrackPair ReadMeasureTrackPair()
        {
            MeasureTrackPair pair = new MeasureTrackPair();
            var beatsNumber       = ReadInt();

            pair.Beats = (new Beat[beatsNumber]).ToList();
            for (int i = 0; i < beatsNumber; i++)
            {
                pair.Beats[i] = ReadBeat();
            }

            return(pair);
        }
        protected MeasureTrackPair ReadMeasureTrackPair(Track track)
        {
            MeasureTrackPair pair = new MeasureTrackPair();

            pair.Beats = new List <Beat>();
            for (int voice = 0; voice < 2; voice++)
            {
                var beatsNumber = ReadInt();

                for (int i = 0; i < beatsNumber; i++)
                {
                    var beat = ReadBeat(voice, track);
                    //if (beat.Notes.Count() > 0)
                    if (!beat.EmptyBit)
                    {
                        pair.Beats.Add(beat);
                    }
                }
            }
            //pair.Beats = pair.Beats.Where(b => !b.RestBit).ToList();
            //NOTE add code is here

            /* List emptyBeats = new List<Beat>();
             * for (int i = 0; i < pair.Beats.Count(); i++)
             * {
             *   TGBeat beat = measure.getBeat(i);
             *   boolean empty = true;
             *   for (int v = 0; v < beat.countVoices(); v++)
             *   {
             *       if (!beat.getVoice(v).isEmpty())
             *       {
             *           empty = false;
             *       }
             *   }
             *   if (empty)
             *   {
             *       emptyBeats.add(beat);
             *   }
             * }
             * Iterator it = emptyBeats.iterator();
             * while (it.hasNext())
             * {
             *   TGBeat beat = (TGBeat)it.next();
             *   measure.removeBeat(beat);
             * }
             * )*/
            return(pair);
        }
        protected MeasureTrackPair ReadMeasureTrackPair()
        {
            MeasureTrackPair pair = new MeasureTrackPair();
            var beatsNumber = ReadInt();
            pair.Beats = (new Beat[beatsNumber]).ToList();
            for (int i = 0; i < beatsNumber; i++)
                pair.Beats[i] = ReadBeat();

            return pair;
        }
        protected MeasureTrackPair ReadMeasureTrackPair(Track track)
        {
            MeasureTrackPair pair = new MeasureTrackPair();
            pair.Beats = new List<Beat>();
            for (int voice = 0; voice < 2; voice++)
            {
                var beatsNumber = ReadInt();

                for (int i = 0; i < beatsNumber; i++)
                {
                    var beat = ReadBeat(voice, track);
                    //if (beat.Notes.Count() > 0)
                    if (!beat.EmptyBit)
                        pair.Beats.Add(beat);
                }
            }
            //pair.Beats = pair.Beats.Where(b => !b.RestBit).ToList();
            //NOTE add code is here
            /* List emptyBeats = new List<Beat>();
             for (int i = 0; i < pair.Beats.Count(); i++)
             {
                 TGBeat beat = measure.getBeat(i);
                 boolean empty = true;
                 for (int v = 0; v < beat.countVoices(); v++)
                 {
                     if (!beat.getVoice(v).isEmpty())
                     {
                         empty = false;
                     }
                 }
                 if (empty)
                 {
                     emptyBeats.add(beat);
                 }
             }
             Iterator it = emptyBeats.iterator();
             while (it.hasNext())
             {
                 TGBeat beat = (TGBeat)it.next();
                 measure.removeBeat(beat);
             }
             )*/
            return pair;
        }