private static void tagText(final String contents, final JLanguageTool lt) throws IOException {
   AnalyzedSentence analyzedText;
   final List<String> sentences = lt.sentenceTokenize(contents);
   for (final String sentence : sentences) {
     analyzedText = lt.getAnalyzedSentence(sentence);
     System.out.println(getSentence(analyzedText));
   }
 }
 private static void runOnStdIn(final JLanguageTool lt) throws IOException {
   final int MAX_FILE_SIZE = 64_000;
   InputStreamReader isr = null;
   BufferedReader br = null;
   StringBuilder sb = new StringBuilder();
   try {
     isr = new InputStreamReader(new BufferedInputStream(System.in));
     br = new BufferedReader(isr);
     String line;
     while ((line = br.readLine()) != null) {
       sb.append(line);
       sb.append('\n');
       if (lt.getLanguage().getSentenceTokenizer().singleLineBreaksMarksPara()) {
         tagText(sb.toString(), lt);
         sb = new StringBuilder();
       } else {
         if ("".equals(line) || sb.length() >= MAX_FILE_SIZE) {
           tagText(sb.toString(), lt);
           sb = new StringBuilder();
         }
       }
     }
   } finally {
     if (sb.length() > 0) {
       tagText(sb.toString(), lt);
     }
   }
   br.close();
   isr.close();
 }
 @Nullable
 private static MorfologikMultiSpeller getSpeller(Language language) {
   if (!language.getShortName().equals(Locale.GERMAN.getLanguage())) {
     throw new RuntimeException("Language is not a variant of German: " + language);
   }
   try {
     String morfoFile = "/de/hunspell/de_" + language.getCountries()[0] + ".dict";
     if (JLanguageTool.getDataBroker().resourceExists(morfoFile)) {
       // spell data will not exist in LibreOffice/OpenOffice context
       try (InputStream stream =
               JLanguageTool.getDataBroker()
                   .getFromResourceDirAsStream("/de/hunspell/spelling.txt");
           BufferedReader br = new BufferedReader(new InputStreamReader(stream, "utf-8"))) {
         return new MorfologikMultiSpeller(morfoFile, new ExpandingReader(br), MAX_EDIT_DISTANCE);
       }
     } else {
       return null;
     }
   } catch (IOException e) {
     throw new RuntimeException("Could not set up morfologik spell checker", e);
   }
 }