Fixes #275 Inheriting from class with package level modifier leads to IllegalAccessException

Signed-off-by: David Kral <david.k.kral@oracle.com>
diff --git a/src/main/java/org/eclipse/yasson/internal/model/PropertyValuePropagation.java b/src/main/java/org/eclipse/yasson/internal/model/PropertyValuePropagation.java
index 62202b9..ab711d8 100644
--- a/src/main/java/org/eclipse/yasson/internal/model/PropertyValuePropagation.java
+++ b/src/main/java/org/eclipse/yasson/internal/model/PropertyValuePropagation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -116,12 +116,20 @@
         }
         Boolean accessible = isVisible(strategy -> strategy.isVisible(field), field, method);
         //overridden by strategy, or anonymous class (readable by spec)
-        if (accessible && (!Modifier.isPublic(field.getModifiers()) || field.getDeclaringClass().isAnonymousClass())) {
+        if (accessible && (
+                !Modifier.isPublic(field.getModifiers())
+                        || field.getDeclaringClass().isAnonymousClass()
+                        || isClassPackagePrivate(field.getDeclaringClass()))) {
             overrideAccessible(field);
         }
         return accessible;
     }
 
+    private boolean isClassPackagePrivate(Class<?> declaringClass) {
+        int modifiers = declaringClass.getModifiers();
+        return !(Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers) || Modifier.isPrivate(modifiers));
+    }
+
     private boolean isMethodVisible(Field field, Method method) {
         if (method == null || Modifier.isStatic(method.getModifiers())) {
             return false;