class EruptGsonExclusionStrategies implements ExclusionStrategy {

    @Override
    @SneakyThrows
    public boolean shouldSkipField(FieldAttributes f) {<FILL_FUNCTION_BODY>}

    @Override
    public boolean shouldSkipClass(Class<?> incomingClass) {
        return false;
    }

}

        MetaErupt metaErupt = MetaContext.getErupt();
        if (null == metaErupt || null == metaErupt.getName()) return false;
        if (null == f.getAnnotation(EruptSmartSkipSerialize.class)) return false;
        Class<?> currEruptClass = EruptCoreService.getErupt(metaErupt.getName()).getClazz();
        if (f.getDeclaringClass().isAssignableFrom(currEruptClass)) {
            Field ff = ReflectUtil.findClassField(currEruptClass, f.getName());
            if (null == ff) return false;
            return !f.getDeclaringClass().getName().equals(ff.getDeclaringClass().getName());
        } else {
            return true;
        }
    
<no_super_class>