diff --git a/java/src/com/android/inputmethod/latin/KeyDetector.java b/java/src/com/android/inputmethod/latin/KeyDetector.java
index e443f272b62d0cc87fa34ec8b5adf0004ba5ec29..76fe1200e7b473fd902aedf771503cab84873bcf 100644
--- a/java/src/com/android/inputmethod/latin/KeyDetector.java
+++ b/java/src/com/android/inputmethod/latin/KeyDetector.java
@@ -24,11 +24,15 @@ import java.util.List;
 
 abstract class KeyDetector {
     protected Keyboard mKeyboard;
+
     private Key[] mKeys;
 
     protected int mCorrectionX;
+
     protected int mCorrectionY;
+
     protected boolean mProximityCorrectOn;
+
     protected int mProximityThresholdSquare;
 
     public Key[] setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
@@ -54,7 +58,7 @@ abstract class KeyDetector {
     protected Key[] getKeys() {
         if (mKeys == null)
             throw new IllegalStateException("keyboard isn't set");
-        // mKeyboard is guaranteed not null at setKeybaord() method
+        // mKeyboard is guaranteed not to be null at setKeybaord() method if mKeys is not null
         return mKeys;
     }
 
@@ -70,13 +74,40 @@ abstract class KeyDetector {
         mProximityThresholdSquare = threshold * threshold;
     }
 
+    /**
+     * Allocates array that can hold all key indices returned by {@link #getKeyIndexAndNearbyCodes}
+     * method. The maximum size of the array should be computed by {@link #getMaxNearbyKeys}.
+     *
+     * @return Allocates and returns an array that can hold all key indices returned by
+     *         {@link #getKeyIndexAndNearbyCodes} method. All elements in the returned array are
+     *         initialized by {@link com.android.inputmethod.latin.LatinKeyboardView.NOT_A_KEY}
+     *         value.
+     */
     public int[] newCodeArray() {
         int[] codes = new int[getMaxNearbyKeys()];
         Arrays.fill(codes, LatinKeyboardBaseView.NOT_A_KEY);
         return codes;
     }
 
+    /**
+     * Computes maximum size of the array that can contain all nearby key indices returned by
+     * {@link #getKeyIndexAndNearbyCodes}.
+     *
+     * @return Returns maximum size of the array that can contain all nearby key indices returned
+     *         by {@link #getKeyIndexAndNearbyCodes}.
+     */
     abstract protected int getMaxNearbyKeys();
 
+    /**
+     * Finds all possible nearby key indices around a touch event point and returns the nearest key
+     * index. The algorithm to determine the nearby keys depends on the threshold set by
+     * {@link #setProximityThreshold(int)} and the mode set by
+     * {@link #setProximityCorrectionEnabled(boolean)}.
+     *
+     * @param x The x-coordinate of a touch point
+     * @param y The y-coordinate of a touch point
+     * @param allKeys All nearby key indices are returned in this array
+     * @return The nearest key index
+     */
     abstract public int getKeyIndexAndNearbyCodes(int x, int y, int[] allKeys);
-}
\ No newline at end of file
+}