@Override
  @NonNull public Iterable<String> getNextWords(
      @NonNull String currentWord, int maxResults, int minWordUsage) {
    if (mNextNameParts.containsKey(currentWord)) {
      return Arrays.asList(mNextNameParts.get(currentWord));
    } else {
      return Collections.emptyList();
    }
  }
@Test
  public void testGetNextWords() throws Exception {
    Iterator<String> nextWords = mDictionaryUnderTest.getNextWords("Menny", 2, 1).iterator();
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("Even-Danan", nextWords.next());
    Assert.assertFalse(nextWords.hasNext());

    nextWords = mDictionaryUnderTest.getNextWords("Dummy", 2, 1).iterator();
    Assert.assertFalse(nextWords.hasNext());

    nextWords = mDictionaryUnderTest.getNextWords("Erela", 2, 1).iterator();
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("Portugaly", nextWords.next());
    Assert.assertFalse(nextWords.hasNext());

    nextWords = mDictionaryUnderTest.getNextWords("John", 2, 1).iterator();
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("Lennon", nextWords.next());
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("Smith", nextWords.next());
    Assert.assertFalse(nextWords.hasNext());

    nextWords = mDictionaryUnderTest.getNextWords("Mika", 2, 1).iterator();
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("Michael", nextWords.next());
    Assert.assertFalse(nextWords.hasNext());
    // next part of the name
    nextWords = mDictionaryUnderTest.getNextWords("Michael", 2, 1).iterator();
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("Michelle", nextWords.next());
    Assert.assertFalse(nextWords.hasNext());

    nextWords = mDictionaryUnderTest.getNextWords("Jonathan", 2, 1).iterator();
    Assert.assertTrue(nextWords.hasNext());
    Assert.assertEquals("With'In", nextWords.next());
    Assert.assertFalse(nextWords.hasNext());
  }