code: def for_all(*generators):
      
      # Pass in n as an argument
      n = 100
  
      def test_property(property_function):
          """
          A closure which takes a property and tests it against arbitrary
          instances of the generators in the closure.
          """
          for generator in generators:
              assert (issubclass(generator, ArbitraryInterface)
                      or generator in arbitrary)
  
          def test_once():
              """
              Tests the property against a single set of instances of the
              generators.
              """
              instances = [arbitrary(generator) for generator in generators]
              try:
                  assert property_function(*instances)
              except AssertionError:
                  generator_names = ', '.join(
                      generator.__name__ for generator in generators)
                  stringed_instances = ', '.join(
                      str(instance) for instance in instances)
                  error_message = ' '.join([
                      'Instances <', stringed_instances, '> of <',
                      generator_names, '> do not satisfy a property.'
                  ])
                  raise AssertionError(error_message)
  
          for _ in range(n):
              test_once()
  
      return test_property
docs: Takes a list of generators and returns a closure which takes a property,
      then tests the property against arbitrary instances of the generators.