diff --git a/java/src/com/android/inputmethod/latin/KeyDetector.java b/java/src/com/android/inputmethod/latin/KeyDetector.java
index e443f27..76fe120 100644
--- a/java/src/com/android/inputmethod/latin/KeyDetector.java
+++ b/java/src/com/android/inputmethod/latin/KeyDetector.java
@@ -24,11 +24,15 @@
 
 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 @@
     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 @@
         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
+}
