Remove a method that causes annoying side-effects.

...and replace by a call to a central method.

Change-Id: I93d0a2c2e99963a5b69923d1062d0e01853216b6
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dc5bd2e..39cbfa7 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -72,6 +72,7 @@
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
@@ -1782,8 +1783,14 @@
             if (previousSuggestions == mSettingsValues.mSuggestPuncList) {
                 previousSuggestions = SuggestedWords.EMPTY;
             }
+            final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
+                    SuggestedWords.Builder.getTypedWordAndPreviousSuggestions(
+                            typedWord, previousSuggestions);
             final SuggestedWords.Builder obsoleteSuggestionsBuilder = new SuggestedWords.Builder()
-                    .addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions);
+                    .addWords(typedWordAndPreviousSuggestions)
+                    .setTypedWordValid(false)
+                    .setHasMinimalSuggestion(false);
+
             showSuggestions(obsoleteSuggestionsBuilder.build(), typedWord);
         }
     }
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
index 7dd85f6..31f50e4 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -87,12 +87,6 @@
             // Nothing to do here.
         }
 
-        // TODO: the following method is a wrapper to satisfy tests. Update tests and remove it.
-        public Builder addWords(final List<CharSequence> words,
-                final List<SuggestedWordInfo> suggestedWordInfoList) {
-            return addWords(suggestedWordInfoList);
-        }
-
         public Builder addWords(List<SuggestedWordInfo> suggestedWordInfoList) {
             final int N = suggestedWordInfoList.size();
             for (int i = 0; i < N; ++i) {
@@ -161,24 +155,22 @@
 
         // Should get rid of the first one (what the user typed previously) from suggestions
         // and replace it with what the user currently typed.
-        public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord,
-                SuggestedWords previousSuggestions) {
-            mSuggestedWordInfoList.clear();
+        public static ArrayList<SuggestedWordInfo> getTypedWordAndPreviousSuggestions(
+                final CharSequence typedWord, final SuggestedWords previousSuggestions) {
+            final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>();
             final HashSet<String> alreadySeen = new HashSet<String>();
-            addWord(typedWord, new SuggestedWordInfo(typedWord, null, false));
+            suggestionsList.add(new SuggestedWordInfo(typedWord, null, false));
             alreadySeen.add(typedWord.toString());
             final int previousSize = previousSuggestions.size();
             for (int pos = 1; pos < previousSize; pos++) {
                 final String prevWord = previousSuggestions.getWord(pos).toString();
                 // Filter out duplicate suggestion.
                 if (!alreadySeen.contains(prevWord)) {
-                    addWord(prevWord, new SuggestedWordInfo(prevWord, null, true));
+                    suggestionsList.add(new SuggestedWordInfo(prevWord, null, true));
                     alreadySeen.add(prevWord);
                 }
             }
-            mTypedWordValid = false;
-            mHasMinimalSuggestion = false;
-            return this;
+            return suggestionsList;
         }
 
         public SuggestedWords build() {