public BibleTranslationDifferencesParallelVersesFormula(string parallelVersesFormula,
                                                                BibleTranslationDifferencesBaseVersesFormula baseVersesFormula, BibleBookDifference.CorrespondenceVerseType correspondenceType,
                                                                int?valueVersesCount, bool skipCheck, bool emptyVerseContent)
            : base(parallelVersesFormula)
        {
            if (valueVersesCount.HasValue && valueVersesCount == 0)
            {
                throw new NotSupportedException("ValueVersesCount must be greater than 0.");
            }

            if (valueVersesCount.HasValue && correspondenceType == BibleBookDifference.CorrespondenceVerseType.All)
            {
                throw new ArgumentException("CorrespondenceType must not be 'All' if ValueVersesCount defined.");
            }

            this.BaseVersesFormula  = baseVersesFormula;
            this.CorrespondenceType = correspondenceType;
            this.ValueVersesCount   = valueVersesCount;

            if (!string.IsNullOrEmpty(OriginalFormula))
            {
                var indexOfColon = OriginalFormula.IndexOf(":");

                if (indexOfColon != OriginalFormula.LastIndexOf(":"))
                {
                    var indexOfComma = OriginalFormula.IndexOf(",");
                    if (indexOfComma == -1)
                    {
                        throw new NotSupportedException(string.Format("Two colons must be devided by comma: '{0}'", OriginalFormula));
                    }

                    if (indexOfComma != OriginalFormula.LastIndexOf(","))
                    {
                        throw new NotSupportedException(string.Format("Only one comma is supported: '{0}'", OriginalFormula));
                    }

                    var parts = OriginalFormula.Split(new char[] { ',' });
                    this.OriginalFormula = parts[0];
                    SecondFormula        = new BibleTranslationDifferencesParallelVersesFormula(
                        parts[1],
                        this.BaseVersesFormula,
                        this.CorrespondenceType,
                        this.ValueVersesCount,
                        skipCheck,
                        emptyVerseContent);
                }

                ChapterFormulaPart = new ParallelChapterFormulaPart(OriginalFormula.Substring(0, indexOfColon), this);
                VersesFormulaPart  = new ParallelVersesFormulaPart(OriginalFormula.Substring(indexOfColon + 1), this, correspondenceType);
            }
            else
            {
                this.IsEmpty = true;
            }

            this.SkipCheck         = skipCheck;
            this.EmptyVerseContent = emptyVerseContent;
        }
        //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;
        }