@Test
public void assertSpyingOnPrivateFinalInstanceMethodWorksWhenUsingJavaLangReflectMethod() throws Exception {
PrivateFinal spy = spy(new PrivateFinal());
final String expected = "test";
assertEquals("Hello " + expected, spy.say(expected));
final Method methodToExpect = method(PrivateFinal.class, "sayIt");
when(spy, methodToExpect).withArguments(isA(String.class)).thenReturn(expected);
assertEquals(expected, spy.say(expected));