public void FitIntoBaseStructure(ref VerbBasedSentence verbBasedSentence, VerbInSentence verbInSentence)
        {
            if (HasPrepositionalObject1)
            {
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT")
                    {
                        if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition1)
                        {
                            if (verbInSentence.NonVerbalElementIndex != -1 && verbInSentence.VerbalPrepositionIndex == -1)
                            {
                                dependencyBasedToken.HeadNumber         = verbInSentence.NonVerbalElementIndex;
                                dependencyBasedToken.DependencyRelation = "VPP";
                            }
                            else
                            {
                                dependencyBasedToken.HeadNumber         = verbInSentence.LightVerbIndex;
                                dependencyBasedToken.DependencyRelation = "VPP";
                            }
                            if (dependencyBasedToken.CPOSTag == "P")
                            {
                                for (int i = dependencyBasedToken.Position; i < verbBasedSentence.SentenceTokens.Count; i++)
                                {
                                    if (verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N")
                                    {
                                        verbBasedSentence.SentenceTokens[i].DependencyRelation = "POSDEP";
                                        verbBasedSentence.SentenceTokens[i].HeadNumber         = dependencyBasedToken.Position;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                for (int i = dependencyBasedToken.Position - 2; i >= 0; i--)
                                {
                                    if ((verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") && (i == 0 || verbBasedSentence.SentenceTokens[i - 1].CPOSTag != "N"))
                                    {
                                        verbBasedSentence.SentenceTokens[i].DependencyRelation = "PREDEP";
                                        verbBasedSentence.SentenceTokens[i].HeadNumber         = dependencyBasedToken.Position;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
            }
            if (HasPrepositionalObject2)
            {
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT")
                    {
                        if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition2)
                        {
                            if (verbInSentence.NonVerbalElementIndex != -1 && verbInSentence.VerbalPrepositionIndex == -1)
                            {
                                dependencyBasedToken.HeadNumber         = verbInSentence.NonVerbalElementIndex;
                                dependencyBasedToken.DependencyRelation = "VPP";
                            }
                            else
                            {
                                dependencyBasedToken.HeadNumber         = verbInSentence.LightVerbIndex;
                                dependencyBasedToken.DependencyRelation = "VPP";
                            }
                            if (dependencyBasedToken.CPOSTag == "P")
                            {
                                for (int i = dependencyBasedToken.Position; i < verbBasedSentence.SentenceTokens.Count; i++)
                                {
                                    if (verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N")
                                    {
                                        verbBasedSentence.SentenceTokens[i].DependencyRelation = "POSDEP";
                                        verbBasedSentence.SentenceTokens[i].HeadNumber         = dependencyBasedToken.Position;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                for (int i = dependencyBasedToken.Position - 2; i >= 0; i--)
                                {
                                    if ((verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") && (i == 0 || verbBasedSentence.SentenceTokens[i - 1].CPOSTag != "N"))
                                    {
                                        verbBasedSentence.SentenceTokens[i].DependencyRelation = "PREDEP";
                                        verbBasedSentence.SentenceTokens[i].HeadNumber         = dependencyBasedToken.Position;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
            }

            if (HasObject && HasRa)
            {
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if (dependencyBasedToken.WordForm == "را" &&
                        dependencyBasedToken.Position < verbInSentence.LightVerbIndex)
                    {
                        dependencyBasedToken.HeadNumber         = verbInSentence.LightVerbIndex;
                        dependencyBasedToken.DependencyRelation = "OBJ";
                        for (int i = dependencyBasedToken.Position - 2; i >= 0; i--)
                        {
                            if ((verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") && (i == 0 || verbBasedSentence.SentenceTokens[i - 1].CPOSTag != "N"))
                            {
                                verbBasedSentence.SentenceTokens[i].DependencyRelation = "PREDEP";
                                verbBasedSentence.SentenceTokens[i].HeadNumber         = dependencyBasedToken.Position;
                                break;
                            }
                        }
                        break;
                    }
                }
            }

            if (HasBandMotammemi)
            {
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if (dependencyBasedToken.CPOSTag == "V" &&
                        dependencyBasedToken.Position > verbInSentence.LightVerbIndex)
                    {
                        bool hasConnector = false;
                        if (HasBandMotemmemiAgreement)
                        {
                            if (dependencyBasedToken.MorphoSyntacticFeats.Person ==
                                verbBasedSentence.SentenceTokens[verbInSentence.LightVerbIndex].MorphoSyntacticFeats.
                                Person)
                            {
                                if (HasBandMotemmemiEltezami)
                                {
                                    if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                        TenseFormationType.HAAL_ELTEZAMI ||
                                        dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                        TenseFormationType.GOZASHTEH_ESTEMRAARI)
                                    {
                                        for (int i = verbInSentence.LightVerbIndex - 1; i < dependencyBasedToken.Position && i > 0; i++)
                                        {
                                            if (verbBasedSentence.SentenceTokens[i].WordForm == "که" || verbBasedSentence.SentenceTokens[i].WordForm == "تا")
                                            {
                                                hasConnector = true;
                                                dependencyBasedToken.HeadNumber =
                                                    verbBasedSentence.SentenceTokens[i].Position;
                                                dependencyBasedToken.DependencyRelation        = "PRD";
                                                verbBasedSentence.SentenceTokens[i].HeadNumber =
                                                    verbInSentence.LightVerbIndex;
                                                verbBasedSentence.SentenceTokens[i].DependencyRelation = "VCL";
                                                break;
                                            }
                                            if (!hasConnector)
                                            {
                                                dependencyBasedToken.HeadNumber         = verbInSentence.LightVerbIndex;
                                                dependencyBasedToken.DependencyRelation = "VCL";
                                            }
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (HasBandMotemmemiEltezami)
                            {
                                if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                    TenseFormationType.HAAL_ELTEZAMI ||
                                    dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                    TenseFormationType.GOZASHTEH_ESTEMRAARI)
                                {
                                    for (int i = verbInSentence.LightVerbIndex - 1; i < dependencyBasedToken.Position && i > 0; i++)
                                    {
                                        if (verbBasedSentence.SentenceTokens[i].WordForm == "که" || verbBasedSentence.SentenceTokens[i].WordForm == "تا")
                                        {
                                            hasConnector = true;
                                            dependencyBasedToken.HeadNumber =
                                                verbBasedSentence.SentenceTokens[i].Position;
                                            dependencyBasedToken.DependencyRelation        = "PRD";
                                            verbBasedSentence.SentenceTokens[i].HeadNumber =
                                                verbInSentence.LightVerbIndex;
                                            verbBasedSentence.SentenceTokens[i].DependencyRelation = "VCL";
                                            break;
                                        }
                                        if (!hasConnector)
                                        {
                                            dependencyBasedToken.HeadNumber         = verbInSentence.LightVerbIndex;
                                            dependencyBasedToken.DependencyRelation = "VCL";
                                        }
                                    }
                                    break;
                                }
                            }
                            else
                            {
                                for (int i = verbInSentence.LightVerbIndex - 1; i < dependencyBasedToken.Position && i > 0; i++)
                                {
                                    if (verbBasedSentence.SentenceTokens[i].WordForm == "که" || verbBasedSentence.SentenceTokens[i].WordForm == "تا")
                                    {
                                        hasConnector = true;
                                        dependencyBasedToken.HeadNumber =
                                            verbBasedSentence.SentenceTokens[i].Position;
                                        dependencyBasedToken.DependencyRelation        = "PRD";
                                        verbBasedSentence.SentenceTokens[i].HeadNumber =
                                            verbInSentence.LightVerbIndex;
                                        verbBasedSentence.SentenceTokens[i].DependencyRelation = "VCL";
                                        break;
                                    }
                                    if (!hasConnector)
                                    {
                                        dependencyBasedToken.HeadNumber         = verbInSentence.LightVerbIndex;
                                        dependencyBasedToken.DependencyRelation = "VCL";
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }
        public bool Satisfy(VerbBasedSentence verbBasedSentence, VerbInSentence verbInSentence)
        {
            bool satisfy = false;

            if (HasPrepositionalObject1)
            {
                satisfy = false;
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT")
                    {
                        if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition1)
                        {
                            satisfy = true;
                            break;
                        }
                    }
                }
                if (!satisfy)
                {
                    return(false);
                }
            }
            if (HasPrepositionalObject2)
            {
                satisfy = false;
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT")
                    {
                        if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition2)
                        {
                            satisfy = true;
                            break;
                        }
                    }
                }
                if (!satisfy)
                {
                    return(false);
                }
            }

            if (HasObject && HasRa)
            {
                satisfy = false;
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if (dependencyBasedToken.WordForm == "را" &&
                        dependencyBasedToken.Position < verbInSentence.LightVerbIndex)
                    {
                        satisfy = true;
                        break;
                    }
                }
                if (!satisfy)
                {
                    return(false);
                }
            }

            if (HasBandMotammemi)
            {
                satisfy = false;
                foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens)
                {
                    if (dependencyBasedToken.CPOSTag == "V" &&
                        dependencyBasedToken.Position > verbInSentence.LightVerbIndex)
                    {
                        if (HasBandMotemmemiAgreement)
                        {
                            if (dependencyBasedToken.MorphoSyntacticFeats.Person ==
                                verbBasedSentence.SentenceTokens[verbInSentence.LightVerbIndex].MorphoSyntacticFeats.
                                Person)
                            {
                                if (HasBandMotemmemiEltezami)
                                {
                                    if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                        TenseFormationType.HAAL_ELTEZAMI ||
                                        dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                        TenseFormationType.GOZASHTEH_ESTEMRAARI)
                                    {
                                        satisfy = true;
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (HasBandMotemmemiEltezami)
                            {
                                if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                    TenseFormationType.HAAL_ELTEZAMI ||
                                    dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect ==
                                    TenseFormationType.GOZASHTEH_ESTEMRAARI)
                                {
                                    satisfy = true;
                                    break;
                                }
                            }
                            else
                            {
                                satisfy = true;
                                break;
                            }
                        }
                    }
                }
                if (!satisfy)
                {
                    return(false);
                }
            }
            return(true);
        }