code: private List<AnalyzedToken> getImperativeForm(String word, List<String> sentenceTokens, int pos) {
      int idx = sentenceTokens.indexOf(word);
      String previousWord = "";
      while (--idx > -1) {
        previousWord = sentenceTokens.get(idx);
        if (StringUtils.isWhitespace(previousWord)) {
          continue;
        }
        break;
      }
      if (!(pos == 0 && sentenceTokens.size() > 1) && !StringUtils.equalsAnyIgnoreCase(previousWord, "ich", "er", "es", "sie")) {
        return null;
      }
      String w = pos == 0 ? word.toLowerCase() : word;
      List<TaggedWord> taggedWithE = getWordTagger().tag(w.concat("e"));
      for (TaggedWord tagged : taggedWithE) {
        if (tagged.getPosTag().startsWith("VER:IMP:SIN:")) {
          // do not overwrite manually removed tags
          if (removalTagger == null || !removalTagger.tag(w).contains(tagged)) {
            return getAnalyzedTokens(Arrays.asList(tagged), word);
          }
          break;
        }
      }
      return null;
    }
docs: /*
  Tag alternative imperative forms (e.g., "Geh bitte!" in addition to "Gehe bitte!")
  To avoid false positives and conflicts with DE_CASE the tagging is restricted to
  [a] words at the start of a sentence ("Geh bitte!") if the sentence counts more than one word
  [b] words preceded by ich/ihr/er/es/sie to catch some real errors ("Er geh jetzt.") by the new rule in rulegroup SUBJECT_VERB_AGREEMENT
  @param word to be checked