Further deduplicate implementation of special forms (#229)

diff --git a/src/typing_extensions.py b/src/typing_extensions.py
index 1f28e54..9e33402 100644
--- a/src/typing_extensions.py
+++ b/src/typing_extensions.py
@@ -201,17 +201,19 @@
 
 ClassVar = typing.ClassVar
 
+
+class _ExtensionsSpecialForm(typing._SpecialForm, _root=True):
+    def __repr__(self):
+        return 'typing_extensions.' + self._name
+
+
 # On older versions of typing there is an internal class named "Final".
 # 3.8+
 if hasattr(typing, 'Final') and sys.version_info[:2] >= (3, 7):
     Final = typing.Final
 # 3.7
 else:
-    class _FinalForm(typing._SpecialForm, _root=True):
-
-        def __repr__(self):
-            return 'typing_extensions.' + self._name
-
+    class _FinalForm(_ExtensionsSpecialForm, _root=True):
         def __getitem__(self, parameters):
             item = typing._type_check(parameters,
                                       f'{self._name} accepts only a single type.')
@@ -303,14 +305,11 @@
         def __hash__(self):
             return hash(frozenset(_value_and_type_iter(self.__args__)))
 
-    class _LiteralForm(typing._SpecialForm, _root=True):
+    class _LiteralForm(_ExtensionsSpecialForm, _root=True):
         def __init__(self, doc: str):
             self._name = 'Literal'
             self._doc = self.__doc__ = doc
 
-        def __repr__(self):
-            return 'typing_extensions.' + self._name
-
         def __getitem__(self, parameters):
             if not isinstance(parameters, tuple):
                 parameters = (parameters,)
@@ -1374,11 +1373,6 @@
         return ()
 
 
-class _ExtensionsSpecialForm(typing._SpecialForm, _root=True):
-    def __repr__(self):
-        return 'typing_extensions.' + self._name
-
-
 # 3.10+
 if hasattr(typing, 'TypeAlias'):
     TypeAlias = typing.TypeAlias