<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def tuple_of(*generators):
 """ Generates a tuple by generating values for each of the specified generators. This is a class factory, it makes a class which is a closure around the specified generators. """


    class TupleOfGenerators(ArbitraryInterface):
        """
        A closure class around the generators specified above, which
        generates a tuple of the generators.
        """

        @classmethod
        def arbitrary(cls):
            """
            Generate a tuple of the enclosed generators.
            """
            return tuple([
                arbitrary(generator) for generator in generators
                if generator is not tuple
            ])

    TupleOfGenerators.__name__ = ''.join([
        'tuple_of(', ', '.join(generator.__name__ for generator in generators),
        ')'
    ])
    return TupleOfGenerators