private static Vector<String> GetHaalSaadehEkhbaariInflections(VerbInflection inflection) {
    Vector<String> lstInflections = new Vector<String>();
    StringBuilder verbBuilder = new StringBuilder();
    verbBuilder.append(inflection.VerbRoot.Prefix);
    if (inflection.VerbRoot.PresentTenseRoot.equals("است")) {
      verbBuilder.append(inflection.VerbRoot.PresentTenseRoot);
      lstInflections.add(verbBuilder.toString());
      return lstInflections;
    }
    if (inflection.VerbRoot.PresentTenseRoot.equals("هست")) {
      if (inflection.Positivity == TensePositivity.POSITIVE)
        verbBuilder.append(inflection.VerbRoot.PresentTenseRoot);
      else if (inflection.Positivity == TensePositivity.NEGATIVE) verbBuilder.append("نیست");
    } else {
      if (inflection.Positivity == TensePositivity.POSITIVE)
        verbBuilder.append("می‌" + inflection.VerbRoot.PresentTenseRoot);
      else if (inflection.Positivity == TensePositivity.NEGATIVE)
        verbBuilder.append("نمی‌" + inflection.VerbRoot.PresentTenseRoot);
    }
    if (inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("A")) {
      if (inflection.VerbRoot.PresentTenseRoot.length() > 1) {
        verbBuilder.delete(verbBuilder.length() - 1, verbBuilder.length());
        verbBuilder.append("ای");
      } else verbBuilder.append("ی");
    } else if (!inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("?")) {
      verbBuilder.append("ی");
    }
    if (inflection.Person == PersonType.FIRST_PERSON_PLURAL) verbBuilder.append("یم");
    else if (inflection.Person == PersonType.FIRST_PERSON_SINGULAR) verbBuilder.append("م");
    else if (inflection.Person == PersonType.SECOND_PERSON_PLURAL) verbBuilder.append("ید");
    else if (inflection.Person == PersonType.SECOND_PERSON_SINGULAR) verbBuilder.append("ی");
    else if (inflection.Person == PersonType.THIRD_PERSON_PLURAL) verbBuilder.append("ند");
    else if (inflection.Person == PersonType.THIRD_PERSON_SINGULAR)
      if (!inflection.VerbRoot.PresentTenseRoot.equals("باید")
          && !inflection.VerbRoot.PresentTenseRoot.equals("هست")) verbBuilder.append("د");

    lstInflections.add(AddAttachedPronoun(verbBuilder.toString(), inflection));
    return lstInflections;
  }
  private static Vector<String> GetAmrInflections(VerbInflection inflection) {
    Vector<String> lstInflections = new Vector<String>();
    StringBuilder verbBuilder1 = new StringBuilder();
    StringBuilder verbBuilder2 = new StringBuilder();
    StringBuilder verbBuilder3 = new StringBuilder();
    StringBuilder verbBuilder4 = new StringBuilder();
    boolean fourthInflec = false;
    if (!inflection.VerbRoot.Prefix.equals("")) {
      verbBuilder1.append(inflection.VerbRoot.Prefix);
      if (inflection.Positivity == TensePositivity.NEGATIVE) {
        verbBuilder3.append(inflection.VerbRoot.Prefix);
      }
      if (inflection.Positivity == TensePositivity.POSITIVE) {
        verbBuilder2.append(inflection.VerbRoot.Prefix);
      }
    }
    if (inflection.Positivity == TensePositivity.POSITIVE)
      if (!(inflection.VerbRoot.PresentTenseRoot.equals("باش")
          || inflection.VerbRoot.PresentTenseRoot.equals("باید"))) verbBuilder1.append("ب");
      else if (inflection.Positivity == TensePositivity.NEGATIVE) {
        verbBuilder1.append("ن");
        verbBuilder3.append("م");
      }
    if (inflection.VerbRoot.PresentRootVowelStart.equals("A")) {
      if (inflection.VerbRoot.PresentTenseRoot.startsWith("آ")) {
        verbBuilder1.append("یا");
        verbBuilder1.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        if (inflection.Positivity == TensePositivity.NEGATIVE) {
          verbBuilder3.append("یا");
          verbBuilder3.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        }
        if (inflection.Positivity == TensePositivity.POSITIVE) {
          verbBuilder2.append(inflection.VerbRoot.PresentTenseRoot);
        }
      } else {
        fourthInflec = true;
        verbBuilder4.append(verbBuilder1.toString());
        verbBuilder1.append("ی");
        verbBuilder4.append("یا");
        verbBuilder1.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        verbBuilder4.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        if (inflection.Positivity == TensePositivity.NEGATIVE) {
          verbBuilder3.append("ی");
          verbBuilder3.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        }
        if (inflection.Positivity == TensePositivity.POSITIVE) {
          verbBuilder2.append(inflection.VerbRoot.PresentTenseRoot);
        }
      }
    } else {
      verbBuilder1.append(inflection.VerbRoot.PresentTenseRoot);
      if (inflection.Positivity
          == TensePositivity.POSITIVE /* && inflection.VerbStem.Type==VerbType.PISHVANDI*/) {
        verbBuilder2.append(inflection.VerbRoot.PresentTenseRoot);
      }
      if (inflection.Positivity == TensePositivity.NEGATIVE) {
        verbBuilder3.append(inflection.VerbRoot.PresentTenseRoot);
      }
    }

    if (inflection.Person == PersonType.SECOND_PERSON_PLURAL)
      if (!inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("?")) {
        verbBuilder1.append("یید");
        verbBuilder4.append("یید");
        if (inflection.Positivity == TensePositivity.NEGATIVE) {
          verbBuilder3.append("یید");
        }
        if (inflection.Positivity == TensePositivity.POSITIVE
            && inflection.VerbRoot.Type == VerbType.PISHVANDI) {
          verbBuilder2.append("یید");
        }
      } else {
        verbBuilder1.append("ید");
        verbBuilder4.append("ید");
        if (inflection.Positivity == TensePositivity.NEGATIVE) {
          verbBuilder3.append("ید");
        }
        if (inflection.Positivity == TensePositivity.POSITIVE
            && inflection.VerbRoot.Type == VerbType.PISHVANDI) {
          verbBuilder2.append("ید");
        }
      }

    if (inflection.ZamirPeyvasteh == AttachedPronounType.AttachedPronoun_NONE) {
      if (!(inflection.VerbRoot.PresentTenseRoot.equals("نه")
          && inflection.Positivity == TensePositivity.NEGATIVE))
        lstInflections.add(verbBuilder1.toString());
      if (fourthInflec) lstInflections.add(verbBuilder4.toString());
      if (inflection.Positivity == TensePositivity.NEGATIVE)
        lstInflections.add(verbBuilder3.toString());
      if (inflection.Positivity == TensePositivity.POSITIVE
          && (inflection.VerbRoot.Type == VerbType.PISHVANDI
              || inflection.VerbRoot.PastTenseRoot.equals("کرد")
              || inflection.VerbRoot.PastTenseRoot.equals("نمود")
              || inflection.VerbRoot.PastTenseRoot.equals("فرمود")))
        lstInflections.add(verbBuilder2.toString());
      if (inflection.VerbRoot.Type == VerbType.PISHVANDI
          && inflection.Person == PersonType.SECOND_PERSON_SINGULAR
          && inflection.Positivity == TensePositivity.POSITIVE
          && !inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("?")) {
        lstInflections.add(verbBuilder2.append("ی").toString());
      }
    } else {
      if (!(inflection.VerbRoot.PresentTenseRoot.equals("نه")
          && inflection.Positivity == TensePositivity.NEGATIVE))
        lstInflections.add(AddAttachedPronoun(verbBuilder1.toString(), inflection));
      if (fourthInflec) lstInflections.add(AddAttachedPronoun(verbBuilder4.toString(), inflection));
      if (inflection.Positivity == TensePositivity.NEGATIVE)
        lstInflections.add(AddAttachedPronoun(verbBuilder3.toString(), inflection));
      if (inflection.VerbRoot.Type == VerbType.PISHVANDI
          && inflection.Positivity == TensePositivity.POSITIVE)
        lstInflections.add(AddAttachedPronoun(verbBuilder2.toString(), inflection));
      if (inflection.VerbRoot.Type == VerbType.PISHVANDI
          && inflection.Person == PersonType.SECOND_PERSON_SINGULAR
          && inflection.Positivity == TensePositivity.POSITIVE
          && !inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("?")) {
        lstInflections.add(AddAttachedPronoun(verbBuilder2.append("ی").toString(), inflection));
      }
    }
    return lstInflections;
  }
  private static Vector<String> GetHaalEltezamiInflections(VerbInflection inflection) {
    Vector<String> lstInflections = new Vector<String>();
    StringBuilder verbBuilder = new StringBuilder();
    StringBuilder verbBuilder2 = new StringBuilder();
    StringBuilder verbBuilder3 = new StringBuilder();
    boolean thirdInflec = false;
    verbBuilder.append(inflection.VerbRoot.Prefix);
    verbBuilder2.append(inflection.VerbRoot.Prefix);

    if (inflection.Positivity == TensePositivity.POSITIVE)
      if (!(inflection.VerbRoot.PresentTenseRoot.equals("باشد")
          || inflection.VerbRoot.PresentTenseRoot.equals("باید"))) verbBuilder.append("ب");
      else if (inflection.Positivity == TensePositivity.NEGATIVE) verbBuilder.append("ن");

    if (inflection.VerbRoot.PresentRootVowelStart.equals("A")) {
      if (inflection.VerbRoot.PresentTenseRoot.startsWith("آ")) {
        verbBuilder.append("یا");
        verbBuilder.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        verbBuilder2.append(inflection.VerbRoot.PresentTenseRoot);
      } else {
        thirdInflec = true;
        verbBuilder3.append(verbBuilder.toString());
        verbBuilder.append("ی");
        verbBuilder3.append("یا");

        verbBuilder.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        verbBuilder3.append(inflection.VerbRoot.PresentTenseRoot.substring(1));
        verbBuilder2.append(inflection.VerbRoot.PresentTenseRoot);
      }
    } else {
      verbBuilder.append(inflection.VerbRoot.PresentTenseRoot);
      verbBuilder2.append(inflection.VerbRoot.PresentTenseRoot);
    }

    if (inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("A")) {
      if (verbBuilder.length() > 1) {
        verbBuilder.delete(verbBuilder.length() - 1, verbBuilder.length());
        verbBuilder.append("ای");
        if (thirdInflec) {
          verbBuilder3.delete(verbBuilder3.length() - 1, verbBuilder3.length());
          verbBuilder3.append("ای");
        }
        if (inflection.VerbRoot.PresentTenseRoot.length() > 1) {
          verbBuilder2.delete(verbBuilder2.length() - 1, verbBuilder2.length());
          verbBuilder2.append("ای");
        } else {
          verbBuilder2.append("ی");
        }
      } else {
        verbBuilder.append("ی");
        verbBuilder3.append("ی");
        verbBuilder2.append("ی");
      }
    } else if (!inflection.VerbRoot.PresentRootConsonantVowelEndStem.equals("?")) {
      if (!inflection.VerbRoot.PastTenseRoot.equals("رفت")
          && !inflection.VerbRoot.PastTenseRoot.equals("شد")) {
        verbBuilder.append("ی");
        verbBuilder3.append("ی");
        verbBuilder2.append("ی");
      }
    }
    if (inflection.Person == PersonType.FIRST_PERSON_PLURAL) {
      verbBuilder.append("یم");
      verbBuilder3.append("یم");
      verbBuilder2.append("یم");
    } else if (inflection.Person == PersonType.FIRST_PERSON_SINGULAR) {
      verbBuilder.append("م");
      verbBuilder3.append("م");
      verbBuilder2.append("م");
    } else if (inflection.Person == PersonType.SECOND_PERSON_PLURAL) {
      verbBuilder.append("ید");
      verbBuilder3.append("ید");
      verbBuilder2.append("ید");
    } else if (inflection.Person == PersonType.SECOND_PERSON_SINGULAR) {
      verbBuilder.append("ی");
      verbBuilder3.append("ی");
      verbBuilder2.append("ی");
    } else if (inflection.Person == PersonType.THIRD_PERSON_PLURAL) {
      verbBuilder.append("ند");
      verbBuilder3.append("ند");
      verbBuilder2.append("ند");
    } else if (inflection.Person == PersonType.THIRD_PERSON_SINGULAR) {
      verbBuilder.append("د");
      verbBuilder3.append("د");
      verbBuilder2.append("د");
    }

    lstInflections.add(AddAttachedPronoun(verbBuilder.toString(), inflection));
    if (thirdInflec) lstInflections.add(AddAttachedPronoun(verbBuilder3.toString(), inflection));
    if (inflection.Positivity == TensePositivity.POSITIVE
        && (inflection.VerbRoot.PresentTenseRoot.length() >= 2
            || inflection.VerbRoot.Type == VerbType.PISHVANDI))
      lstInflections.add(AddAttachedPronoun(verbBuilder2.toString(), inflection));
    return lstInflections;
  }