private static boolean isClassProxyable(Class<?> clazz) {
   if (clazz.isInterface()) {
     return true;
   } else {
     Constructor<?> constructor = Reflections.getDeclaredConstructor(clazz);
     if (constructor == null) {
       return false;
     } else if (Modifier.isPrivate(constructor.getModifiers())) {
       return false;
     } else if (Reflections.isTypeOrAnyMethodFinal(clazz)) {
       return false;
     } else if (Reflections.isPrimitive(clazz)) {
       return false;
     } else if (Reflections.isArrayType(clazz)) {
       return false;
     } else {
       return true;
     }
   }
 }