public bool CheckAndCorrectVerse(VersePointer versePointer)
        {
            if (versePointer.Chapter == 0)
            {
                return(false);
            }

            ChangeIfOneChapterBook(versePointer);

            if (!string.IsNullOrEmpty(versePointer.ModuleShortName))
            {
                if (!ConvertToMainModuleVerse(versePointer))
                {
                    return(false);
                }
            }

            ExpandVerse(versePointer, null);
            if (versePointer.SubVerses.Verses.Count == 0)
            {
                return(false);
            }

            versePointer.UpdateTopVerseNumber(versePointer.SubVerses.Verses);

            return(true);
        }
        private bool ConvertToMainModuleVerse(VersePointer versePointer)
        {
            ExpandVerse(versePointer, versePointer.ModuleShortName);
            if (versePointer.SubVerses.Verses.Count == 0)
            {
                return(false);
            }

            var parallelVersePointers = _bibleParallelTranslationConnectorManager.GetParallelVersePointer(
                versePointer.SubVerses.Verses.First(), versePointer.ModuleShortName);

            versePointer.OriginalVerseNumber    = versePointer.VerseNumber;
            versePointer.OriginalTopVerseNumber = versePointer.TopVerseNumber;

            versePointer.VerseNumber = parallelVersePointers.First().VerseNumber;

            if (versePointer.SubVerses.Verses.Count == 1)
            {
                versePointer.UpdateTopVerseNumber(parallelVersePointers);
            }
            else
            {
                parallelVersePointers = _bibleParallelTranslationConnectorManager.GetParallelVersePointer(
                    versePointer.SubVerses.Verses.Last(), versePointer.ModuleShortName);

                versePointer.TopVerseNumber = parallelVersePointers.Last().VerseNumber;
            }

            versePointer.SubVerses.Clear();
            return(true);
        }