/**
  * Propose suggestions for misspelled run-on words. This algorithm is inspired by spell.cc in
  * s_fsa package by Jan Daciuk.
  *
  * @param original The original misspelled word.
  * @return The list of suggested pairs, as space-concatenated strings.
  */
 public List<String> replaceRunOnWords(final String original) {
   final List<String> candidates = new ArrayList<String>();
   if (!isInDictionary(
           DictionaryLookup.applyReplacements(
               original, dictionaryMetadata.getInputConversionPairs()))
       && dictionaryMetadata.isSupportingRunOnWords()) {
     for (int i = 1; i < original.length(); i++) {
       // chop from left to right
       final CharSequence firstCh = original.subSequence(0, i);
       if (isInDictionary(firstCh) && isInDictionary(original.subSequence(i, original.length()))) {
         if (!dictionaryMetadata.getOutputConversionPairs().isEmpty()) {
           candidates.add(firstCh + " " + original.subSequence(i, original.length()));
         } else {
           candidates.add(
               DictionaryLookup.applyReplacements(
                       firstCh + " " + original.subSequence(i, original.length()),
                       dictionaryMetadata.getOutputConversionPairs())
                   .toString());
         }
       }
     }
   }
   return candidates;
 }