private void Initialize(string baseVersesFormula, VerseFactory verseFactory)
        {
            if (baseVersesFormula.IndexOf('(') != -1)
            {
                throw new NotSupportedException(string.Format("Brackets in base formula is not supported yet: {0}", baseVersesFormula));
            }

            BaseVersePointer = verseFactory.Func(baseVersesFormula, BookIndex);
            _allVerses       = null;
        }
        //internal int LastChapter
        //{
        //    get
        //    {
        //        return BaseVersePointer.TopVerseNumber.GetValueOrDefault().Chapter;
        //    }
        //}


        public BibleTranslationDifferencesBaseVersesFormula(int bookIndex, string baseVersesFormula, string parallelVersesFormula,
                                                            BibleBookDifference.CorrespondenceVerseType correspondenceType, bool skipCheck, bool emptyVerseContent, VerseFactory verseFactory)
            : base(baseVersesFormula)
        {
            this.BookIndex = bookIndex;
            if (string.IsNullOrEmpty(this.OriginalFormula))
            {
                if (parallelVersesFormula.IndexOfAny(new char[] { 'X', '+' }) != -1)
                {
                    throw new NotSupportedException(
                              string.Format("For empty base verse must be defined concrete parallel verse: '{0}'", parallelVersesFormula));
                }

                var indexOfColon = OriginalFormula.IndexOf(":");
                if (indexOfColon != OriginalFormula.LastIndexOf(":"))
                {
                    throw new NotSupportedException(
                              string.Format("The verses formula with two colons (':') is not supported yet: '{0}'", OriginalFormula));
                }

                Initialize(parallelVersesFormula, verseFactory);
                IsEmpty = true;
            }
            else
            {
                Initialize(baseVersesFormula, verseFactory);
            }

            if (IsMultiVerse && correspondenceType != BibleBookDifference.CorrespondenceVerseType.All)
            {
                throw new NotSupportedException(
                          "Multi Base Verses are not supported for not strict processing (when correspondenceType != 'All').");
            }

            this.SkipCheck         = skipCheck;
            this.EmptyVerseContent = emptyVerseContent;
        }