protected bool IsSubsentMatchCondition(XElement subsent, Language language, out IEnumerable <SubjectData> subjectData
                                               , out CitationQuotes quotePairLeft
                                               , out CitationQuotes quotePairRight)
        {
            quotePairLeft  = null;
            quotePairRight = null;
            subjectData    = null;

            var resultList = ExecPatterns(subsent, language);

            if (resultList.IsNotNull())
            {
                var leftExtremeElement = resultList.GetLeftExtremeElement();
                if ((quotePairLeft = CitationQuotes.GetBefore(leftExtremeElement)) == null)
                {
                    return(false);
                }

                var rightExtremeElement = resultList.GetRightExtremeElement();
                if ((quotePairRight = CitationQuotes.GetAfter(rightExtremeElement)) == null)
                {
                    return(false);
                }

                subjectData = resultList;
                return(true);
            }

            return(false);
        }
        protected override bool IsSubsentMatchCondition(XElement subsent, Language language, out IEnumerable <SubjectData> subjectData, out CitationQuotes quotePair)
        {
            quotePair   = null;
            subjectData = null;

            var resultList = ExecPatterns(subsent, language);

            if (resultList.IsNotNull())
            {
                var leftExtremeElement = resultList.GetLeftExtremeElement();
                if ((quotePair = CitationQuotes.GetBefore(leftExtremeElement)) != null)
                {
                    subjectData = resultList;
                    return(true);
                }
            }

            return(false);
        }
 protected abstract bool IsSubsentMatchCondition(XElement subsent, Language language, out IEnumerable <SubjectData> subjectData, out CitationQuotes quotePair);