diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 6ad854d..59f53fc 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -452,12 +452,6 @@
         return newKey;
     }
 
-    private Key onUpKey(int x, int y, long eventTime) {
-        mUpTime = eventTime;
-        mCurrentKey = null;
-        return onMoveKeyInternal(x, y);
-    }
-
     public void processMotionEvent(int action, int x, int y, long eventTime,
             KeyEventHandler handler) {
         switch (action) {
diff --git a/java/src/com/android/inputmethod/latin/ContactsDictionary.java b/java/src/com/android/inputmethod/latin/ContactsDictionary.java
index 2f33952..c9b8d6e 100644
--- a/java/src/com/android/inputmethod/latin/ContactsDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsDictionary.java
@@ -34,6 +34,7 @@
  *
  * @deprecated Use {@link ContactsBinaryDictionary}.
  */
+@Deprecated
 public class ContactsDictionary extends ExpandableDictionary {
 
     private static final String[] PROJECTION = {
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index 1ec678f..231e9ab 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -33,7 +33,7 @@
 
     /**
      * Interface to be implemented by classes requesting words to be fetched from the dictionary.
-     * @see #getWords(WordComposer, WordCallback, ProximityInfo)
+     * @see #getWords(WordComposer, CharSequence, WordCallback, ProximityInfo)
      */
     public interface WordCallback {
         /**
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
index 4cd1b38..a22d73a 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
@@ -89,7 +89,6 @@
     /**
      * Initializes a dictionary from a raw resource file
      * @param context application context for reading resources
-     * @param resId the resource containing the raw binary dictionary
      * @param locale the locale to use for the resource
      * @return an initialized instance of BinaryDictionary
      */
diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
index dd9c57e..6c457af 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -309,7 +309,8 @@
      * @param word the word to insert, as an array of code points
      * @param depth the depth of the node in the tree
      * @param finalFreq the frequency for this word
-     * @return whether there is still space for more words. {@see Dictionary.WordCallback#addWord}.
+     * @return whether there is still space for more words.
+     * @see Dictionary.WordCallback#addWord(char[], int, int, int, int, int)
      */
     private boolean addWordAndShortcutsFromNode(final Node node, final char[] word, final int depth,
             final int finalFreq, final WordCallback callback) {
diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java
index aa979a6..66d6d58 100644
--- a/java/src/com/android/inputmethod/latin/ResearchLogger.java
+++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java
@@ -54,7 +54,7 @@
  * This class logs operations on the IME keyboard, including what the user has typed.
  * Data is stored locally in a file in app-specific storage.
  *
- * This functionality is off by default. See {@link ProductionFlag.IS_EXPERIMENTAL}.
+ * This functionality is off by default. See {@link ProductionFlag#IS_EXPERIMENTAL}.
  */
 public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChangeListener {
     private static final String TAG = ResearchLogger.class.getSimpleName();
diff --git a/java/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java
index 81e2fdc..c1efadd 100644
--- a/java/src/com/android/inputmethod/latin/UserDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserDictionary.java
@@ -35,6 +35,7 @@
  *
  * @deprecated Use {@link UserBinaryDictionary}.
  */
+@Deprecated
 public class UserDictionary extends ExpandableDictionary {
 
     // TODO: use Words.SHORTCUT when it's public in the SDK
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
index 563f8a9..89c59f8 100644
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
@@ -882,9 +882,9 @@
                 final int indexOfShortcutByteSize = index;
                 index += GROUP_SHORTCUT_LIST_SIZE_SIZE;
                 groupAddress += GROUP_SHORTCUT_LIST_SIZE_SIZE;
-                final Iterator shortcutIterator = group.mShortcutTargets.iterator();
+                final Iterator<WeightedString> shortcutIterator = group.mShortcutTargets.iterator();
                 while (shortcutIterator.hasNext()) {
-                    final WeightedString target = (WeightedString)shortcutIterator.next();
+                    final WeightedString target = shortcutIterator.next();
                     ++groupAddress;
                     int shortcutFlags = makeShortcutFlags(shortcutIterator.hasNext(),
                             target.mFrequency);
@@ -902,9 +902,9 @@
             }
             // Write bigrams
             if (null != group.mBigrams) {
-                final Iterator bigramIterator = group.mBigrams.iterator();
+                final Iterator<WeightedString> bigramIterator = group.mBigrams.iterator();
                 while (bigramIterator.hasNext()) {
-                    final WeightedString bigram = (WeightedString)bigramIterator.next();
+                    final WeightedString bigram = bigramIterator.next();
                     final CharGroup target =
                             FusionDictionary.findWordInTree(dict.mRoot, bigram.mWord);
                     final int addressOfBigram = target.mCachedAddress;
diff --git a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
index c467ef7..8b53c94 100644
--- a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
+++ b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
@@ -296,7 +296,6 @@
      * @param word the word to add.
      * @param frequency the frequency of the word, in the range [0..255].
      * @param shortcutTargets a list of shortcut targets for this word, or null.
-     * @param bigrams a list of bigrams, or null.
      */
     public void add(final String word, final int frequency,
             final ArrayList<WeightedString> shortcutTargets) {
@@ -435,6 +434,8 @@
         }
     }
 
+    private static int ARRAYS_ARE_EQUAL = 0;
+
     /**
      * Custom comparison of two int arrays taken to contain character codes.
      *
@@ -450,7 +451,6 @@
      * @param dstOffset the offset in the right-hand side string.
      * @return the index at which the strings differ, or ARRAYS_ARE_EQUAL = 0 if they don't.
      */
-    private static int ARRAYS_ARE_EQUAL = 0;
     private static int compareArrays(final int[] src, final int[] dst, int dstOffset) {
         // We do NOT test the first char, because we come from a method that already
         // tested it.
@@ -469,6 +469,7 @@
      * This comparator imposes orderings that are inconsistent with equals.
      */
     static private class CharGroupComparator implements java.util.Comparator<CharGroup> {
+        @Override
         public int compare(CharGroup c1, CharGroup c2) {
             if (c1.mChars[0] == c2.mChars[0]) return 0;
             return c1.mChars[0] < c2.mChars[0] ? -1 : 1;
@@ -487,6 +488,8 @@
         return result >= 0 ? result : -result - 1;
     }
 
+    private static int CHARACTER_NOT_FOUND = -1;
+
     /**
      * Find the index of a char in a node, if it exists.
      *
@@ -494,7 +497,6 @@
      * @param character the character to search for.
      * @return the position of the character if it's there, or CHARACTER_NOT_FOUND = -1 else.
      */
-    private static int CHARACTER_NOT_FOUND = -1;
     private static int findIndexOfChar(final Node node, int character) {
         final int insertionIndex = findInsertionIndex(node, character);
         if (node.mData.size() <= insertionIndex) return CHARACTER_NOT_FOUND;
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index aa32501..0e3bf80 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -499,10 +499,6 @@
                 }
                 mUnigramSuggestionsInfoCache.put(query, new SuggestionsParams(suggestions, flags));
             }
-
-            public void remove(String key) {
-                mUnigramSuggestionsInfoCache.remove(key);
-            }
         }
 
         AndroidSpellCheckerSession(final AndroidSpellCheckerService service) {
