code: private void addArgumentByIndex( int index, StringBuilder currentWords, List<Word> formattedWords, Set<String> usedArguments ) {
          flushCurrentWord( currentWords, formattedWords, true );
          Word argument = argumentIndexToWord( index );
          formattedWords.add( argument );
          usedArguments.add( argument.getArgumentInfo().getArgumentName() );
      }
docs: Looks up the argument by index via {@link #argumentIndexToWord(int)}, adds it to formattedWords and usedArguments
  and flushes the previously accumulated text via {@link #flushCurrentWord(StringBuilder, List, boolean)}.
  
  @param index is searchable index
  @param currentWords this {@link StringBuilder} holds the previously accumulated words
  @param formattedWords this is the resulting List of Words
  @param usedArguments this is the set which tracks which arguments were already used