public override void ProcessSentence(Sentence sentence)
        {
            _sentence = sentence;
            Debug.Assert(sentence.ElementList != null);
            Debug.Assert(sentence.ElementList.Count > 0);

            foreach (var word in sentence.ElementList.FindAll(x =>
                (x.SyntacticRole.Value == SyntacticRole.DirectObject.Value
                  && !(x.SurfaceSlot.Value == SurfaceSlot.ClauseInfinitiveForModalVerbs.Value)
                  && !(x.SurfaceSlot.Value == SurfaceSlot.ClauseInfinitiveControl.Value)
                )
                ||
                x.SyntacticRole.Value == SyntacticRole.IndirectObject.Value
                ||
                (x.SyntacticRole.Value == SyntacticRole.NonConcordantAttr.Value &&
                  (
                    x.SurfaceSlot.Value == SurfaceSlot.GenitivePostModifier.Value ||
                    x.SurfaceSlot.Value == SurfaceSlot.IdiomaticNominalGenitivePostmodifier.Value
                  )
                )
                ||
                (
                   (x.GrammarInfo.PartOfSpeech.Value == GrammarInfoPartOfSpeech.Noun.Value)
                   && !(x.GrammarInfo.Case.Value == GrammarInfoCase.Nominative.Value)
                   && (x.SurfaceSlot.Value == SurfaceSlot.RelativeGroup.Value)
                )
                ))
            {
                Stage1ResultElement item = new Stage1ResultElement();
                item.CopyFromSourceWord(word);
                Result.Items.Add(item);
            }
        }
        public override void ProcessSentence(Sentence sentence)
        {
            _sentence = sentence;
            Debug.Assert(sentence.ElementList != null);
            Debug.Assert(sentence.ElementList.Count > 0);

            foreach (SentenceElement word in sentence.ElementList.FindAll(x =>
                                                                    (x.SyntacticRole.Value == SyntacticRole.Predicate.Value)
                                                                    & !(x.SurfaceSlot.Value == SurfaceSlot.InternalFiniteVerb.Value)))
            {
                Stage1ResultElement item = new Stage1ResultElement();
                item.CopyFromSourceWord(word);
                Result.Items.Add(item);
            }
        }
        public override void ProcessSentence(Sentence sentence)
        {
            _sentence = sentence;
            Debug.Assert(sentence.WordList != null);
            Debug.Assert(sentence.WordList.Count > 0);

            foreach (SentenceWord word in sentence.WordList.FindAll(x =>
                   x.DOM == SentenceWord.DOMRoot
                || x.Link.Value == LinkType.SentSoch.Value
                || x.Link.Value == LinkType.PodchSouz.Value
                || x.Link.Value == LinkType.InfSouz.Value
                || x.Link.Value == LinkType.Eksplet.Value
                || x.Link.Value == LinkType.Relyat.Value
            ))
            {
                Stage1ResultElement item = new Stage1ResultElement();
                item.CopyFromSourceWord(word);
                Result.Items.Add(item);
            }
        }