diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index ae415d0ab1ae155095f459155a7b9b2fff922c2c..15646b87144dc9f741a14f966061de691f042e43 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -106,7 +106,7 @@ public class BinaryDictionary extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getBigrams(final WordComposer codes,
+    protected ArrayList<SuggestedWordInfo> getBigrams(final WordComposer codes,
             final CharSequence previousWord) {
         if (mNativeDict == 0) return null;
 
@@ -145,7 +145,7 @@ public class BinaryDictionary extends Dictionary {
 
     // proximityInfo and/or prevWordForBigrams may not be null.
     @Override
-    public ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
+    protected ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo) {
         final int count = getSuggestions(codes, prevWordForBigrams, proximityInfo, mOutputChars,
                 mScores, mSpaceIndices);
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index 5229d14fa31b70b4a2ee13f11896c9cb2e989a00..4b02e11bfecc3b86a87ddad9090a0c411f147e02 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -78,7 +78,7 @@ public abstract class Dictionary {
      * @param proximityInfo the object for key proximity. May be ignored by some implementations.
      * @return the list of suggestions
      */
-    abstract public ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
+    abstract protected ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo);
 
     /**
@@ -87,7 +87,7 @@ public abstract class Dictionary {
      * @param previousWord the word before
      * @return the list of suggestions
      */
-    public abstract ArrayList<SuggestedWordInfo> getBigrams(final WordComposer composer,
+    abstract protected ArrayList<SuggestedWordInfo> getBigrams(final WordComposer composer,
             final CharSequence previousWord);
 
     /**
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
index dcc53c59f98780d7bc3923dada8a7f0ce0f52361..d2ddebf3e8d2a27a7742fab1ef97e0dc7c455aaa 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -55,7 +55,7 @@ public class DictionaryCollection extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
+    protected ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo) {
         final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries;
         if (dictionaries.isEmpty()) return null;
@@ -74,7 +74,7 @@ public class DictionaryCollection extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getBigrams(final WordComposer composer,
+    protected ArrayList<SuggestedWordInfo> getBigrams(final WordComposer composer,
             final CharSequence previousWord) {
         final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries;
         if (dictionaries.isEmpty()) return null;
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 1cda9f25736601ed7f0b8beaa9d976f136a98664..40d46a873895a826f6ad2c15d07e9896a27bb081 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -192,7 +192,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
+    protected ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo) {
         asyncReloadDictionaryIfRequired();
         return getWordsInner(codes, prevWordForBigrams, proximityInfo);
@@ -215,7 +215,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getBigrams(final WordComposer codes,
+    protected ArrayList<SuggestedWordInfo> getBigrams(final WordComposer codes,
             final CharSequence previousWord) {
         asyncReloadDictionaryIfRequired();
         return getBigramsInner(codes, previousWord);
diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
index 55a25777a6934525bfc94e4767f6630e6865a176..a3c183c2784b364c4438e94ad7466249e6901994 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -247,7 +247,7 @@ public class ExpandableDictionary extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
+    protected ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo) {
         if (reloadDictionaryIfRequired()) return null;
         if (codes.size() >= BinaryDictionary.MAX_WORD_LENGTH) {
@@ -270,7 +270,7 @@ public class ExpandableDictionary extends Dictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getBigrams(final WordComposer codes,
+    protected ArrayList<SuggestedWordInfo> getBigrams(final WordComposer codes,
             final CharSequence previousWord) {
         if (reloadDictionaryIfRequired()) return null;
         final ArrayList<SuggestedWordInfo> suggestions = new ArrayList<SuggestedWordInfo>();
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
index 9b20bd690358a9bf17b9786d9906320d83c52a6f..59bd249e79b3e4f5ce9037e7540f5edf5d201899 100644
--- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
@@ -32,7 +32,7 @@ public class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryD
     }
 
     @Override
-    public synchronized ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
+    protected synchronized ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo) {
         syncReloadDictionaryIfRequired();
         return getWordsInner(codes, prevWordForBigrams, proximityInfo);
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
index 5b2a6edec309d9ddafc3da309b17f49bf89b3755..7abc251be1c52e085bdcd58499eb33f3e3a7e6eb 100644
--- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
@@ -35,7 +35,7 @@ public class SynchronouslyLoadedUserBinaryDictionary extends UserBinaryDictionar
     }
 
     @Override
-    public synchronized ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
+    protected synchronized ArrayList<SuggestedWordInfo> getWords(final WordComposer codes,
             final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo) {
         syncReloadDictionaryIfRequired();
         return getWordsInner(codes, prevWordForBigrams, proximityInfo);
diff --git a/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
index d742e219077ae7d14f42342f9d43a122228eba14..e26349172ed9e5a557596bcaffd698db2d6edde9 100644
--- a/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
@@ -161,7 +161,7 @@ public class UserHistoryDictionary extends ExpandableDictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
+    protected ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
             final CharSequence prevWord, final ProximityInfo proximityInfo) {
         // User history unigrams are not used at this moment. Implement this method to make them
         // useful.
diff --git a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
index 24c94992fa998c394188a22d3ecf0fe7710c5353..be2c80e0e57f7dc09e10f3424cc13b8ec04be3e7 100644
--- a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
+++ b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
@@ -92,7 +92,7 @@ public class WhitelistDictionary extends ExpandableDictionary {
     }
 
     @Override
-    public ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
+    protected ArrayList<SuggestedWordInfo> getWords(final WordComposer composer,
             final CharSequence prevWord, final ProximityInfo proximityInfo) {
         // Whitelist does not supply suggestions (actually it should not even implement the
         // Dictionary interface, as it responds to none of it, but it does for legacy reasons)