Java language reflection and dynamic proxy study notes