diff --git a/runtime/reflection.cc b/runtime/reflection.cc
index 6ed61f6..f0ba003 100644
--- a/runtime/reflection.cc
+++ b/runtime/reflection.cc
@@ -799,8 +799,7 @@
   visitor.WalkStack();
   mirror::Class* caller_class = visitor.caller->GetDeclaringClass();
 
-  if ((((access_flags & kAccPublic) != 0) && declaring_class->IsPublic()) ||
-      caller_class == declaring_class) {
+  if (((access_flags & kAccPublic) != 0) || (caller_class == declaring_class)) {
     return true;
   }
   if ((access_flags & kAccPrivate) != 0) {
diff --git a/test/064-field-access/src/Main.java b/test/064-field-access/src/Main.java
index c9b93ba..8dd22ba 100644
--- a/test/064-field-access/src/Main.java
+++ b/test/064-field-access/src/Main.java
@@ -554,15 +554,17 @@
         }
         // Check access or lack of to field.
         Class<?> subClassAccessExceptionClass = null;
-        if (f.getName().contains("Private") ||
+        if ((f.getName().contains("Private") ||
             (!same_package && f.getName().contains("Package")) ||
-            (!same_package && f.getName().contains("Protected"))) {
+            (!same_package && f.getName().contains("Protected"))) &&
+            !(protected_class && f.getName().contains("Public"))) {
           subClassAccessExceptionClass = IllegalAccessException.class;
         }
         Class<?> mainClassAccessExceptionClass = null;
-        if (f.getName().contains("Private") ||
+        if ((f.getName().contains("Private") ||
             (!same_package && f.getName().contains("Package")) ||
-            (!same_package && f.getName().contains("Protected"))) {
+            (!same_package && f.getName().contains("Protected"))) &&
+            !(protected_class && f.getName().contains("Public"))) {
           mainClassAccessExceptionClass = IllegalAccessException.class;
         }
 
@@ -605,7 +607,7 @@
 
       for (Method m : methods) {
         Class<?> subClassAccessExceptionClass = null;
-        if (protected_class || m.getName().contains("Private") ||
+        if (m.getName().contains("Private") ||
             (!same_package && m.getName().contains("Package")) ||
             (!same_package && m.getName().contains("Protected"))) {
           subClassAccessExceptionClass = IllegalAccessException.class;
