<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _GenerateSingleTypeIteration(self, next_types, processed_types, converted_responses):
 """Yields responses of a given type only. _GenerateSingleTypeIteration iterates through converted_responses and only yields responses of the same type. The type is either popped from next_types or inferred from the first item of converted_responses. The type is added to a set of processed_types. Along the way _GenerateSingleTypeIteration updates next_types set. All newly encountered and not previously processed types are added to next_types set. Calling _GenerateSingleTypeIteration multiple times allows doing multiple passes on converted responses and emitting converted responses of the same type continuously (so that they can be written into the same file by the plugin). Args: next_types: List of value type classes that will be used in further iterations. processed_types: List of value type classes that have been used already. converted_responses: Iterable with values to iterate over. Yields: Values from converted_response with the same type. Type is either popped from the next_types set or inferred from the first converted_responses value. """

    if not next_types:
      current_type = None
    else:
      current_type = next_types.pop()
      processed_types.add(current_type)

    for converted_response in converted_responses:
      if not current_type:
        current_type = converted_response.__class__
        processed_types.add(current_type)

      if converted_response.__class__ != current_type:
        if converted_response.__class__ not in processed_types:
          next_types.add(converted_response.__class__)
        continue

      yield converted_response