The check for packages.contains(clazz.getPackage().getName()))) can cause an NPE when the clazz is a primitive, e.g. byte[], because those classes have null packages.