#3247 Get rid of Py_FindMethod; use tp_members instead.
Otherwise dir(_sre.SRE_Match) returns an empty list.

First step: handle most occurrences, remove tp_getattr and fill the tp_methods and tp_members slots.
Add some test about attribute access.
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index 0b023c2..fd41b6e 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -326,6 +326,13 @@
         self.assertNotEqual(re.match("^x{}$", "x{}"), None)
 
     def test_getattr(self):
+        self.assertEqual(re.compile("(?i)(a)(b)").pattern, "(?i)(a)(b)")
+        self.assertEqual(re.compile("(?i)(a)(b)").flags, re.I)
+        self.assertEqual(re.compile("(?i)(a)(b)").groups, 2)
+        self.assertEqual(re.compile("(?i)(a)(b)").groupindex, {})
+        self.assertEqual(re.compile("(?i)(?P<first>a)(?P<other>b)").groupindex,
+                         {'first': 1, 'other': 2})
+
         self.assertEqual(re.match("(a)", "a").pos, 0)
         self.assertEqual(re.match("(a)", "a").endpos, 1)
         self.assertEqual(re.match("(a)", "a").string, "a")
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py
index 3dbabc5..b4ca582 100644
--- a/Lib/test/test_winreg.py
+++ b/Lib/test/test_winreg.py
@@ -29,6 +29,7 @@
         # Set the default value for this key.
         SetValue(root_key, test_key_name, REG_SZ, "Default value")
         key = CreateKey(root_key, test_key_name)
+        self.assert_(key.handle != 0)
         # Create a sub-key
         sub_key = CreateKey(key, subkeystr)
         # Give the sub-key some named values
diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py
index 485ffdc..b5f3fe5 100644
--- a/Lib/test/test_zlib.py
+++ b/Lib/test/test_zlib.py
@@ -161,6 +161,7 @@
             self.assertEqual(b'', dco.unconsumed_tail, ########
                              "(A) uct should be b'': not %d long" %
                                        len(dco.unconsumed_tail))
+            self.assertEqual(b'', dco.unused_data)
         if flush:
             bufs.append(dco.flush())
         else:
@@ -173,6 +174,7 @@
         self.assertEqual(b'', dco.unconsumed_tail, ########
                          "(B) uct should be b'': not %d long" %
                                        len(dco.unconsumed_tail))
+        self.assertEqual(b'', dco.unused_data)
         self.assertEqual(data, b''.join(bufs))
         # Failure means: "decompressobj with init options failed"