def METHOD_NAME(self):
    WNDPROC = WINFUNCTYPE(c_long, c_int, c_int, c_int, c_int)
    def wndproc(hwnd, msg, wParam, lParam):
        return hwnd + msg + wParam + lParam
    HINSTANCE = c_int
    HICON = c_int
    HCURSOR = c_int
    LPCTSTR = c_char_p
    class WNDCLASS(Structure):
        _fields_ = [("style", c_uint),
                    ("lpfnWndProc", WNDPROC),
                    ("cbClsExtra", c_int),
                    ("cbWndExtra", c_int),
                    ("hInstance", HINSTANCE),
                    ("hIcon", HICON),
                    ("hCursor", HCURSOR),
                    ("lpszMenuName", LPCTSTR),
                    ("lpszClassName", LPCTSTR)]
    wndclass = WNDCLASS()
    wndclass.lpfnWndProc = WNDPROC(wndproc)
    WNDPROC_2 = WINFUNCTYPE(c_long, c_int, c_int, c_int, c_int)
    # This is no longer true, now that WINFUNCTYPE caches created types internally.
    ## # CFuncPtr subclasses are compared by identity, so this raises a TypeError:
    ## self.assertRaises(TypeError, setattr, wndclass,
    ##                  "lpfnWndProc", WNDPROC_2(wndproc))
    # instead:
    self.assertIs(WNDPROC, WNDPROC_2)
    # 'wndclass.lpfnWndProc' leaks 94 references.  Why?
    self.assertEqual(wndclass.lpfnWndProc(1, 2, 3, 4), 10)
    f = wndclass.lpfnWndProc
    del wndclass
    del wndproc
    self.assertEqual(f(10, 11, 12, 13), 46)