diff --git a/Lib/email/_policybase.py b/Lib/email/_policybase.py
index d5e8df9..8106114 100644
--- a/Lib/email/_policybase.py
+++ b/Lib/email/_policybase.py
@@ -91,31 +91,25 @@
         return self.clone(**other.__dict__)
 
 
-# Conceptually this isn't a subclass of ABCMeta, but since we want Policy to
-# use ABCMeta as a metaclass *and* we want it to use this one as well, we have
-# to make this one a subclas of ABCMeta.
-class _DocstringExtenderMetaclass(abc.ABCMeta):
+def _append_doc(doc, added_doc):
+    doc = doc.rsplit('\n', 1)[0]
+    added_doc = added_doc.split('\n', 1)[1]
+    return doc + '\n' + added_doc
 
-    def __new__(meta, classname, bases, classdict):
-        if classdict.get('__doc__') and classdict['__doc__'].startswith('+'):
-            classdict['__doc__'] = meta._append_doc(bases[0].__doc__,
-                                                    classdict['__doc__'])
-        for name, attr in classdict.items():
-            if attr.__doc__ and attr.__doc__.startswith('+'):
-                for cls in (cls for base in bases for cls in base.mro()):
-                    doc = getattr(getattr(cls, name), '__doc__')
-                    if doc:
-                        attr.__doc__ = meta._append_doc(doc, attr.__doc__)
-                        break
-        return super().__new__(meta, classname, bases, classdict)
-
-    @staticmethod
-    def _append_doc(doc, added_doc):
-        added_doc = added_doc.split('\n', 1)[1]
-        return doc + '\n' + added_doc
+def _extend_docstrings(cls):
+    if cls.__doc__ and cls.__doc__.startswith('+'):
+        cls.__doc__ = _append_doc(cls.__bases__[0].__doc__, cls.__doc__)
+    for name, attr in cls.__dict__.items():
+        if attr.__doc__ and attr.__doc__.startswith('+'):
+            for c in (c for base in cls.__bases__ for c in base.mro()):
+                doc = getattr(getattr(c, name), '__doc__')
+                if doc:
+                    attr.__doc__ = _append_doc(doc, attr.__doc__)
+                    break
+    return cls
 
 
-class Policy(_PolicyBase, metaclass=_DocstringExtenderMetaclass):
+class Policy(_PolicyBase, metaclass=abc.ABCMeta):
 
     r"""Controls for how messages are interpreted and formatted.
 
@@ -264,6 +258,7 @@
         raise NotImplementedError
 
 
+@_extend_docstrings
 class Compat32(Policy):
 
     """+
diff --git a/Lib/email/policy.py b/Lib/email/policy.py
index bfffb45..32cad0d 100644
--- a/Lib/email/policy.py
+++ b/Lib/email/policy.py
@@ -2,7 +2,7 @@
 code that adds all the email6 features.
 """
 
-from email._policybase import Policy, Compat32, compat32
+from email._policybase import Policy, Compat32, compat32, _extend_docstrings
 from email.utils import _has_surrogates
 from email.headerregistry import HeaderRegistry as HeaderRegistry
 
@@ -17,6 +17,7 @@
     'HTTP',
     ]
 
+@_extend_docstrings
 class EmailPolicy(Policy):
 
     """+
diff --git a/Lib/test/test_email/__init__.py b/Lib/test/test_email/__init__.py
index bd9d52c..f206ace 100644
--- a/Lib/test/test_email/__init__.py
+++ b/Lib/test/test_email/__init__.py
@@ -73,10 +73,8 @@
                                     'item {}'.format(i))
 
 
-# Metaclass to allow for parameterized tests
-class Parameterized(type):
-
-    """Provide a test method parameterization facility.
+def parameterize(cls):
+    """A test method parameterization class decorator.
 
     Parameters are specified as the value of a class attribute that ends with
     the string '_params'.  Call the portion before '_params' the prefix.  Then
@@ -92,9 +90,10 @@
     In a _params dictioanry, the keys become part of the name of the generated
     tests.  In a _params list, the values in the list are converted into a
     string by joining the string values of the elements of the tuple by '_' and
-    converting any blanks into '_'s, and this become part of the name.  The
-    full name of a generated test is the portion of the _params name before the
-    '_params' portion, plus an '_', plus the name derived as explained above.
+    converting any blanks into '_'s, and this become part of the name.
+    The  full name of a generated test is a 'test_' prefix, the portion of the
+    test function name after the  '_as_' separator, plus an '_', plus the name
+    derived as explained above.
 
     For example, if we have:
 
@@ -123,30 +122,29 @@
     be used to select the test individually from the unittest command line.
 
     """
-
-    def __new__(meta, classname, bases, classdict):
-        paramdicts = {}
-        for name, attr in classdict.items():
-            if name.endswith('_params'):
-                if not hasattr(attr, 'keys'):
-                    d = {}
-                    for x in attr:
-                        if not hasattr(x, '__iter__'):
-                            x = (x,)
-                        n = '_'.join(str(v) for v in x).replace(' ', '_')
-                        d[n] = x
-                    attr = d
-                paramdicts[name[:-7] + '_as_'] = attr
-        testfuncs = {}
-        for name, attr in classdict.items():
-            for paramsname, paramsdict in paramdicts.items():
-                if name.startswith(paramsname):
-                    testnameroot = 'test_' + name[len(paramsname):]
-                    for paramname, params in paramsdict.items():
-                        test = (lambda self, name=name, params=params:
-                                        getattr(self, name)(*params))
-                        testname = testnameroot + '_' + paramname
-                        test.__name__ = testname
-                        testfuncs[testname] = test
-        classdict.update(testfuncs)
-        return super().__new__(meta, classname, bases, classdict)
+    paramdicts = {}
+    for name, attr in cls.__dict__.items():
+        if name.endswith('_params'):
+            if not hasattr(attr, 'keys'):
+                d = {}
+                for x in attr:
+                    if not hasattr(x, '__iter__'):
+                        x = (x,)
+                    n = '_'.join(str(v) for v in x).replace(' ', '_')
+                    d[n] = x
+                attr = d
+            paramdicts[name[:-7] + '_as_'] = attr
+    testfuncs = {}
+    for name, attr in cls.__dict__.items():
+        for paramsname, paramsdict in paramdicts.items():
+            if name.startswith(paramsname):
+                testnameroot = 'test_' + name[len(paramsname):]
+                for paramname, params in paramsdict.items():
+                    test = (lambda self, name=name, params=params:
+                                    getattr(self, name)(*params))
+                    testname = testnameroot + '_' + paramname
+                    test.__name__ = testname
+                    testfuncs[testname] = test
+    for key, value in testfuncs.items():
+        setattr(cls, key, value)
+    return cls
diff --git a/Lib/test/test_email/test_generator.py b/Lib/test/test_email/test_generator.py
index 7e1529b..8917408 100644
--- a/Lib/test/test_email/test_generator.py
+++ b/Lib/test/test_email/test_generator.py
@@ -4,10 +4,11 @@
 from email import message_from_string, message_from_bytes
 from email.generator import Generator, BytesGenerator
 from email import policy
-from test.test_email import TestEmailBase, Parameterized
+from test.test_email import TestEmailBase, parameterize
 
 
-class TestGeneratorBase(metaclass=Parameterized):
+@parameterize
+class TestGeneratorBase:
 
     policy = policy.default
 
diff --git a/Lib/test/test_email/test_headerregistry.py b/Lib/test/test_email/test_headerregistry.py
index 4a57ff1..fc11fba 100644
--- a/Lib/test/test_email/test_headerregistry.py
+++ b/Lib/test/test_email/test_headerregistry.py
@@ -4,7 +4,7 @@
 from email import errors
 from email import policy
 from email.message import Message
-from test.test_email import TestEmailBase, Parameterized
+from test.test_email import TestEmailBase, parameterize
 from email import headerregistry
 from email.headerregistry import Address, Group
 
@@ -175,7 +175,8 @@
         self.assertEqual(m['Date'].datetime, self.dt)
 
 
-class TestAddressHeader(TestHeaderBase, metaclass=Parameterized):
+@parameterize
+class TestAddressHeader(TestHeaderBase):
 
     example_params = {
 
diff --git a/Lib/test/test_email/test_pickleable.py b/Lib/test/test_email/test_pickleable.py
index 09477e0..daa8d25 100644
--- a/Lib/test/test_email/test_pickleable.py
+++ b/Lib/test/test_email/test_pickleable.py
@@ -6,9 +6,11 @@
 import email.message
 from email import policy
 from email.headerregistry import HeaderRegistry
-from test.test_email import TestEmailBase, Parameterized
+from test.test_email import TestEmailBase, parameterize
 
-class TestPickleCopyHeader(TestEmailBase, metaclass=Parameterized):
+
+@parameterize
+class TestPickleCopyHeader(TestEmailBase):
 
     header_factory = HeaderRegistry()
 
@@ -33,7 +35,8 @@
         self.assertEqual(str(h), str(header))
 
 
-class TestPickleCopyMessage(TestEmailBase, metaclass=Parameterized):
+@parameterize
+class TestPickleCopyMessage(TestEmailBase):
 
     # Message objects are a sequence, so we have to make them a one-tuple in
     # msg_params so they get passed to the parameterized test method as a
