### Question:
PunctuationSeparator implements TextProcessor { @Override public List<String> preprocess(List<String> tokens) { return tokens.stream() .map(PATTERN::split) .flatMap(Arrays::stream) .filter(s -> !s.isEmpty()) .collect(Collectors.toList()); }  @Override List<String> preprocess(List<String> tokens);  }### Answer:
@Test public void testPreprocess() { String sentence = "Hello.. How are you?! @my_alias"; String expected = "Hello . . How are you ? ! @ my _ alias"; SimpleTokenizer tokenizer = new SimpleTokenizer(); PunctuationSeparator punctuationSeparator = new PunctuationSeparator(); List<String> processedTokens = punctuationSeparator.preprocess(Collections.singletonList(sentence)); Assert.assertEquals(processedTokens.size(), 12); Assert.assertEquals(tokenizer.buildSentence(processedTokens), expected); }