private boolean isIgnoreProperty(PropertyDescriptor desc) {
        if (desc == null) {
            return true;
        }
        Method getter = desc.getReadMethod();
        Method setter = desc.getWriteMethod();
        return getter == null || setter == null
                || !Modifier.isPublic(getter.getModifiers())
                || !Modifier.isPublic(setter.getModifiers())
                || isAnnotated(getter, Ignore.class)
                || isAnnotated(setter, Ignore.class);
    }