public boolean isWriteable(Object bean, String name) {

        try {
            Object[] call = resolveNested(bean, name);
            if (call != null) {
                bean = call[0];
                name = (String) call[1];
            }
        } catch (IllegalAccessException e) {
            return false;
        } catch (InvocationTargetException e) {
            return false;
        } catch (NoSuchMethodException e) {
            return false;
        }

        // Remove any subscript from the final name value
        name = resolver.getProperty(name);

        try {
            PropertyDescriptor desc = getPropertyDescriptor(bean, name);
            if (desc == null) {
                return false;
            }
            return invoker.isWriteable(bean, desc, false) || invoker.isWriteable(bean, desc, true);

        } catch (IllegalAccessException e) {
            return (false);
        } catch (InvocationTargetException e) {
            return (false);
        } catch (NoSuchMethodException e) {
            return (false);
        }


    }