Merge "Don't call resetDictionaries if DictionaryFacilitatorLruCache.get() hasn't been called yet. This breaks the AOSP SpellChecker.  This seems to be a bug introduced recently, when the DictionaryFacilitatorLruCache was turned into a "cache" of 1 element."
diff --git a/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java b/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
index 6734ca8..293623c 100644
--- a/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
@@ -359,8 +359,11 @@
      * @param fileAddress the asset dictionary file address.
      * @return information of the specified dictionary.
      */
+    @Nullable
     private static DictionaryInfo createDictionaryInfoFromFileAddress(
             final AssetFileAddress fileAddress) {
+        // TODO: Read the header and update the version number for the new dictionaries.
+        // This will make sure that the dictionary version is updated in the database.
         final DictionaryHeader header = getDictionaryFileHeaderOrNull(
                 new File(fileAddress.mFilename), fileAddress.mOffset, fileAddress.mLength);
         if (header == null) {
@@ -436,7 +439,8 @@
             // Protect against cases of a less-specific dictionary being found, like an
             // en dictionary being used for an en_US locale. In this case, the en dictionary
             // should be used for en_US but discounted for listing purposes.
-            if (!dictionaryInfo.mLocale.equals(locale)) {
+            // TODO: Remove dictionaryInfo == null when the static LMs have the headers.
+            if (dictionaryInfo == null || !dictionaryInfo.mLocale.equals(locale)) {
                 continue;
             }
             addOrUpdateDictInfo(dictList, dictionaryInfo);