def define_types(self):
<EOL>class A(object):<EOL><INDENT>pass<EOL><DEDENT>class B(A):<EOL><INDENT>pass<EOL><DEDENT>Y = TypeVar('<STR_LIT:Y>')<EOL>Z = TypeVar('<STR_LIT>')<EOL>class C(Generic[Y]):<EOL><INDENT>pass<EOL><DEDENT>class D(Generic[Z, Y], C[Y]):<EOL><INDENT>pass<EOL><DEDENT>return A, B, C, D<EOL>
Defines the types that will be used in the tests. It defines
 * 2 classes with inheritance: A and B inheriting from A
 * 2 'generic' classes (in the sense of the typing module) with inheritance :  C[Y] and
 D[Z, Y] inheriting from C[Y]
:return: