diff --git a/vm/analysis/DexOptimize.c b/vm/analysis/DexOptimize.c
index d420043..162ba9a 100644
--- a/vm/analysis/DexOptimize.c
+++ b/vm/analysis/DexOptimize.c
@@ -611,8 +611,8 @@
                     }
                 }
 
-                updateChecksum(dexAddr, dexLength,
-                    (DexHeader*) pDvmDex->pHeader);
+                DexHeader* pHeader = (DexHeader*)pDvmDex->pHeader;
+                updateChecksum(dexAddr, dexLength, pHeader);
 
                 dvmDexFileFree(pDvmDex);
             }
@@ -1713,7 +1713,7 @@
         LOGW("DexOpt: resolve class illegal access: %s -> %s\n",
             referrer->descriptor, resClass->descriptor);
         if (pFailure != NULL)
-            *pFailure = VERIFY_ERROR_ACCESS;
+            *pFailure = VERIFY_ERROR_ACCESS_CLASS;
         return NULL;
     }
 
@@ -1745,8 +1745,7 @@
         if (resClass == NULL) {
             //dvmClearOptException(dvmThreadSelf());
             assert(!dvmCheckException(dvmThreadSelf()));
-            if (pFailure != NULL)
-                *pFailure = VERIFY_ERROR_NO_FIELD;
+            if (pFailure != NULL) { assert(!VERIFY_OK(*pFailure)); }
             return NULL;
         }
 
@@ -1777,7 +1776,7 @@
             referrer->descriptor, resField->field.clazz->descriptor,
             resField->field.name);
         if (pFailure != NULL)
-            *pFailure = VERIFY_ERROR_ACCESS;
+            *pFailure = VERIFY_ERROR_ACCESS_FIELD;
         return NULL;
     }
 
@@ -1811,8 +1810,7 @@
         if (resClass == NULL) {
             //dvmClearOptException(dvmThreadSelf());
             assert(!dvmCheckException(dvmThreadSelf()));
-            if (pFailure != NULL)
-                *pFailure = VERIFY_ERROR_NO_FIELD;
+            if (pFailure != NULL) { assert(!VERIFY_OK(*pFailure)); }
             return NULL;
         }
 
@@ -1846,7 +1844,7 @@
             referrer->descriptor, resField->field.clazz->descriptor,
             resField->field.name);
         if (pFailure != NULL)
-            *pFailure = VERIFY_ERROR_ACCESS;
+            *pFailure = VERIFY_ERROR_ACCESS_FIELD;
         return NULL;
     }
 
@@ -1919,11 +1917,13 @@
 
         resClass = dvmOptResolveClass(referrer, pMethodId->classIdx, pFailure);
         if (resClass == NULL) {
-            /* can't find the class that the method is a part of */
+            /*
+             * Can't find the class that the method is a part of, or don't
+             * have permission to access the class.
+             */
             LOGV("DexOpt: can't find called method's class (?.%s)\n",
                 dexStringById(pDvmDex->pDexFile, pMethodId->nameIdx));
-            if (pFailure != NULL)
-                *pFailure = VERIFY_ERROR_NO_METHOD;
+            if (pFailure != NULL) { assert(!VERIFY_OK(*pFailure)); }
             return NULL;
         }
         if (dvmIsInterfaceClass(resClass)) {
@@ -1999,7 +1999,7 @@
             free(desc);
         }
         if (pFailure != NULL)
-            *pFailure = VERIFY_ERROR_ACCESS;
+            *pFailure = VERIFY_ERROR_ACCESS_METHOD;
         return NULL;
     }
 
