public static Method[] setterMethodDrilldown(Method[] getterMethods)
            throws NoSuchMethodException {
        Method[] setters = new Method[getterMethods.length];
        for (int i = 0; i < setters.length; i++) {
            Method getter = getterMethods[i];
            Class<?> parent = getter.getDeclaringClass();
            String getterName = getter.getName();
            String setterName = "set"
                    + getterName.substring(getterName.charAt(0) == 'i' ? 2 : 3);
            Class<?>[] params = {getter.getReturnType()};
            setters[i] = parent.getMethod(setterName, params);
        }
        return setters;
    }