@Nullable
    public static Object getInternalObject(@NonNull Class clazz, @NonNull Set<String> whitelist,
                                           @NonNull Object obj) {
        final Field field = findField(clazz, whitelist);
        if (field == null) {
            return null;
        }

        try {
            return field.get(obj);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return null;
    }
@ Nullable public static Object getInternalObject ( @ NonNull Class clazz , @ NonNull Set < String > whitelist , @ NonNull Object obj ) { final Field field = findField ( clazz , whitelist ) ; if ( field == null ) { return null ; } try { return field . get ( obj ) ; } catch ( IllegalAccessException e ) { e . printStackTrace ( ) ; } return null ; }
@param clazz the class to search in
@param whitelist the whitelist of field names
@param obj the target object whose field we are accessing
@return  the value of the found field, if exists, on the target object, or null