diff --git a/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java b/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
index 613ff2ba435ea0973dc54d6c1fa37e35987aa04c..f5f072b7aa662902f6da6bde0c7f205cefb09188 100644
--- a/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
+++ b/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
@@ -193,8 +193,9 @@ public final class FormatSpec {
     // Dictionary version used for testing.
     public static final int VERSION4_ONLY_FOR_TESTING = 399;
     public static final int VERSION4 = 401;
+    public static final int VERSION4_DEV = 402;
     static final int MINIMUM_SUPPORTED_VERSION = VERSION2;
-    static final int MAXIMUM_SUPPORTED_VERSION = VERSION4;
+    static final int MAXIMUM_SUPPORTED_VERSION = VERSION4_DEV;
 
     // TODO: Make this value adaptative to content data, store it in the header, and
     // use it in the reading code.
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
index 35d9a4e184995701c6ab0d895e1b8af4b34d0023..90b90ffb506d2f619173ca03ce0350a0726722bf 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
@@ -46,6 +46,8 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
     private static final String TEST_LOCALE = "test";
     private static final int DUMMY_PROBABILITY = 0;
+    private static final int[] DICT_FORMAT_VERSIONS =
+            new int[] { FormatSpec.VERSION4, FormatSpec.VERSION4_DEV };
 
     private int mCurrentTime = 0;
 
@@ -94,7 +96,8 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     private File createEmptyDictionaryAndGetFile(final String dictId,
             final int formatVersion) throws IOException {
         if (formatVersion == FormatSpec.VERSION4
-                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING) {
+                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING
+                || formatVersion == FormatSpec.VERSION4_DEV) {
             return createEmptyVer4DictionaryAndGetFile(dictId, formatVersion);
         } else {
             throw new IOException("Dictionary format version " + formatVersion
@@ -120,7 +123,7 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
             return file;
         } else {
             throw new IOException("Empty dictionary " + file.getAbsolutePath()
-                    + " cannot be created.");
+                    + " cannot be created. Foramt version: " + formatVersion);
         }
     }
 
@@ -133,7 +136,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testReadDictInJavaSide() {
-        testReadDictInJavaSide(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testReadDictInJavaSide(formatVersion);
+        }
     }
 
     private void testReadDictInJavaSide(final int formatVersion) {
@@ -178,10 +183,6 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testControlCurrentTime() {
-        testControlCurrentTime(FormatSpec.VERSION4);
-    }
-
-    private void testControlCurrentTime(final int formatVersion) {
         final int TEST_COUNT = 1000;
         final long seed = System.currentTimeMillis();
         final Random random = new Random(seed);
@@ -197,7 +198,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testAddValidAndInvalidWords() {
-        testAddValidAndInvalidWords(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddValidAndInvalidWords(formatVersion);
+        }
     }
 
     private void testAddValidAndInvalidWords(final int formatVersion) {
@@ -240,7 +243,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testDecayingProbability() {
-        testDecayingProbability(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testDecayingProbability(formatVersion);
+        }
     }
 
     private void testDecayingProbability(final int formatVersion) {
@@ -295,7 +300,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testAddManyUnigramsToDecayingDict() {
-        testAddManyUnigramsToDecayingDict(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyUnigramsToDecayingDict(formatVersion);
+        }
     }
 
     private void testAddManyUnigramsToDecayingDict(final int formatVersion) {
@@ -354,7 +361,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testOverflowUnigrams() {
-        testOverflowUnigrams(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testOverflowUnigrams(formatVersion);
+        }
     }
 
     private void testOverflowUnigrams(final int formatVersion) {
@@ -413,7 +422,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testAddManyBigramsToDecayingDict() {
-        testAddManyBigramsToDecayingDict(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyBigramsToDecayingDict(formatVersion);
+        }
     }
 
     private void testAddManyBigramsToDecayingDict(final int formatVersion) {
@@ -487,7 +498,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testOverflowBigrams() {
-        testOverflowBigrams(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testOverflowBigrams(formatVersion);
+        }
     }
 
     private void testOverflowBigrams(final int formatVersion) {
@@ -566,7 +579,9 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     }
 
     public void testDictMigration() {
-        testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, formatVersion);
+        }
     }
 
     private void testDictMigration(final int fromFormatVersion, final int toFormatVersion) {
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index 770e76e5fccc0b0a9d6fb7c31041637b956e1276..cfeed0aa40e6a841a13457c505944425dccf11cf 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -43,11 +43,14 @@ import java.util.Random;
 public class BinaryDictionaryTests extends AndroidTestCase {
     private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
     private static final String TEST_LOCALE = "test";
+    private static final int[] DICT_FORMAT_VERSIONS =
+            new int[] { FormatSpec.VERSION4, FormatSpec.VERSION4_DEV };
 
     private File createEmptyDictionaryAndGetFile(final String dictId,
             final int formatVersion) throws IOException {
         if (formatVersion == FormatSpec.VERSION4
-                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING) {
+                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING
+                || formatVersion == FormatSpec.VERSION4_DEV) {
             return createEmptyVer4DictionaryAndGetFile(dictId, formatVersion);
         } else {
             throw new IOException("Dictionary format version " + formatVersion
@@ -67,12 +70,14 @@ public class BinaryDictionaryTests extends AndroidTestCase {
             return file;
         } else {
             throw new IOException("Empty dictionary " + file.getAbsolutePath()
-                    + " cannot be created.");
+                    + " cannot be created. Format version: " + formatVersion);
         }
     }
 
     public void testIsValidDictionary() {
-        testIsValidDictionary(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testIsValidDictionary(formatVersion);
+        }
     }
 
     private void testIsValidDictionary(final int formatVersion) {
@@ -100,7 +105,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testConstructingDictionaryOnMemory() {
-        testConstructingDictionaryOnMemory(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testConstructingDictionaryOnMemory(formatVersion);
+        }
     }
 
     private void testConstructingDictionaryOnMemory(final int formatVersion) {
@@ -131,7 +138,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddTooLongWord() {
-        testAddTooLongWord(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddTooLongWord(formatVersion);
+        }
     }
 
     private void testAddTooLongWord(final int formatVersion) {
@@ -190,7 +199,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddUnigramWord() {
-        testAddUnigramWord(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddUnigramWord(formatVersion);
+        }
     }
 
     private void testAddUnigramWord(final int formatVersion) {
@@ -232,7 +243,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testRandomlyAddUnigramWord() {
-        testRandomlyAddUnigramWord(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRandomlyAddUnigramWord(formatVersion);
+        }
     }
 
     private void testRandomlyAddUnigramWord(final int formatVersion) {
@@ -268,7 +281,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddBigramWords() {
-        testAddBigramWords(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddBigramWords(formatVersion);
+        }
     }
 
     private void testAddBigramWords(final int formatVersion) {
@@ -336,7 +351,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testRandomlyAddBigramWords() {
-        testRandomlyAddBigramWords(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRandomlyAddBigramWords(formatVersion);
+        }
     }
 
     private void testRandomlyAddBigramWords(final int formatVersion) {
@@ -397,7 +414,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testRemoveBigramWords() {
-        testRemoveBigramWords(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRemoveBigramWords(formatVersion);
+        }
     }
 
     private void testRemoveBigramWords(final int formatVersion) {
@@ -447,7 +466,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testFlushDictionary() {
-        testFlushDictionary(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testFlushDictionary(formatVersion);
+        }
     }
 
     private void testFlushDictionary(final int formatVersion) {
@@ -499,7 +520,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testFlushWithGCDictionary() {
-        testFlushWithGCDictionary(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testFlushWithGCDictionary(formatVersion);
+        }
     }
 
     private void testFlushWithGCDictionary(final int formatVersion) {
@@ -547,7 +570,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddBigramWordsAndFlashWithGC() {
-        testAddBigramWordsAndFlashWithGC(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddBigramWordsAndFlashWithGC(formatVersion);
+        }
     }
 
     // TODO: Evaluate performance of GC
@@ -616,7 +641,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testRandomOperationsAndFlashWithGC() {
-        testRandomOperationsAndFlashWithGC(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRandomOperationsAndFlashWithGC(formatVersion);
+        }
     }
 
     private void testRandomOperationsAndFlashWithGC(final int formatVersion) {
@@ -727,7 +754,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddManyUnigramsAndFlushWithGC() {
-        testAddManyUnigramsAndFlushWithGC(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyUnigramsAndFlushWithGC(formatVersion);
+        }
     }
 
     private void testAddManyUnigramsAndFlushWithGC(final int formatVersion) {
@@ -775,7 +804,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testUnigramAndBigramCount() {
-        testUnigramAndBigramCount(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testUnigramAndBigramCount(formatVersion);
+        }
     }
 
     private void testUnigramAndBigramCount(final int formatVersion) {
@@ -834,7 +865,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddMultipleDictionaryEntries() {
-        testAddMultipleDictionaryEntries(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddMultipleDictionaryEntries(formatVersion);
+        }
     }
 
     private void testAddMultipleDictionaryEntries(final int formatVersion) {
@@ -896,7 +929,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testGetWordProperties() {
-        testGetWordProperties(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testGetWordProperties(formatVersion);
+        }
     }
 
     private void testGetWordProperties(final int formatVersion) {
@@ -995,7 +1030,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testIterateAllWords() {
-        testIterateAllWords(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testIterateAllWords(formatVersion);
+        }
     }
 
     private void testIterateAllWords(final int formatVersion) {
@@ -1091,7 +1128,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddShortcuts() {
-        testAddShortcuts(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddShortcuts(formatVersion);
+        }
     }
 
     private void testAddShortcuts(final int formatVersion) {
@@ -1151,7 +1190,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testAddManyShortcuts() {
-        testAddManyShortcuts(FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyShortcuts(formatVersion);
+        }
     }
 
     private void testAddManyShortcuts(final int formatVersion) {
@@ -1227,7 +1268,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testDictMigration() {
-        testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, formatVersion);
+        }
     }
 
     private void testDictMigration(final int fromFormatVersion, final int toFormatVersion) {
@@ -1271,7 +1314,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
     }
 
     public void testLargeDictMigration() {
-        testLargeDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, FormatSpec.VERSION4);
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testLargeDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, formatVersion);
+        }
     }
 
     private void testLargeDictMigration(final int fromFormatVersion, final int toFormatVersion) {