/// <summary>
        /// Extension method, search for layout elements inside Part object and convers them to list of pages
        /// </summary>
        /// <param name="part"></param>
        /// <returns>Collection of Pages(Collections of system(first measure number, last measure number)</returns>
        public static List <List <Tuple <string, string> > > TryGetLinesPerPage(this ScorePartwisePartMusicXML part)
        {
            List <Tuple <string, string> > measuresPerLine = new List <Tuple <string, string> >();
            int pagesCount = part.TryGetNumberOfPages();
            List <List <Tuple <string, string> > > linesPerPage = new List <List <Tuple <string, string> > >();
            string fistNumber = "";
            string lastNumber = "";

            foreach (var measure in part.Measure)
            {
                var print = measure.Items.OfType <PrintMusicXML>().FirstOrDefault();

                if (print != null)
                {
                    if (print.NewSystemSpecified)
                    {
                        if (print.NewSystem == Model.Helpers.SimpleTypes.YesNoMusicXML.yes)
                        {
                            lastNumber = part.Measure[part.Measure.IndexOf(measure) - 1].Number;
                            Tuple <string, string> t = new Tuple <string, string>(fistNumber, lastNumber);
                            if (part.Measure.IndexOf(measure) != 0)
                            {
                                measuresPerLine.Add(t);
                            }

                            fistNumber = measure.Number;
                        }
                    }
                    if (print.NewPageSpecified)
                    {
                        if (print.NewPage == Model.Helpers.SimpleTypes.YesNoMusicXML.yes)
                        {
                            lastNumber = part.Measure[part.Measure.IndexOf(measure) - 1].Number;
                            Tuple <string, string> t = new Tuple <string, string>(fistNumber, lastNumber);
                            measuresPerLine.Add(t);
                            linesPerPage.Add(new List <Tuple <string, string> >(measuresPerLine));
                            measuresPerLine.Clear();
                            fistNumber = measure.Number;
                        }
                    }
                    if (part.Measure.IndexOf(measure) == 0)
                    {
                        fistNumber = measure.Number;
                    }
                    if (part.Measure.IndexOf(measure) == part.Measure.Count - 1)
                    {
                        lastNumber = measure.Number;
                        Tuple <string, string> t = new Tuple <string, string>(fistNumber, lastNumber);
                        measuresPerLine.Add(t);
                        if (measuresPerLine.Count != 0)
                        {
                            linesPerPage.Add(new List <Tuple <string, string> >(measuresPerLine));
                        }
                    }
                }
                else
                {
                    if (part.Measure.IndexOf(measure) == 0)
                    {
                        fistNumber = measure.Number;
                    }
                    if (part.Measure.IndexOf(measure) == part.Measure.Count - 1)
                    {
                        lastNumber = measure.Number;
                        Tuple <string, string> t = new Tuple <string, string>(fistNumber, lastNumber);
                        measuresPerLine.Add(t);
                        if (measuresPerLine.Count != 0)
                        {
                            linesPerPage.Add(new List <Tuple <string, string> >(measuresPerLine));
                        }
                    }
                    lastNumber = measure.Number;
                }
            }
            return(linesPerPage);
        }