    @Test
    public void testInvokeSetterQuietly() throws Throwable
    {

        ObjectWithSetter obj = new ObjectWithSetter();

        assertTrue(Utils.invokeSetterQuietly(obj, "setValue", String.class, "foo"));
        assertEquals("happy path", "foo", obj.value);

        assertTrue(Utils.invokeSetterQuietly(obj, "setValue", String.class, null));
        assertNull("can set null value", obj.value);

        // if any of these throw, we have a problem
        assertFalse(Utils.invokeSetterQuietly(null, "setValue", String.class, "foo"));
        assertFalse(Utils.invokeSetterQuietly(obj, "setSomething", String.class, "foo"));
        assertFalse(Utils.invokeSetterQuietly(obj, "setValue", String.class, Integer.valueOf(123)));
    }