docs: def _ctab(stream):
      """Process ``Ctab``.
      
      :param stream: Queue containing lines of text.
      :type stream: :py:class:`collections.deque`
      :return: Tuples of data.
      """
      yield CtabBlockStart()
      counts_line = stream.popleft()
      counts_line_values = [counts_line[i:i + 3].strip() for i in range(0, len(counts_line) - 6, 3)] + \
                           [counts_line[-6:len(counts_line)].strip()]
      ctab_counts_line = CtabCountsLine(*counts_line_values)
      yield ctab_counts_line
  
      number_of_atoms = ctab_counts_line.number_of_atoms
      number_of_bonds = ctab_counts_line.number_of_bonds
  
      # yield from _ctab_atom_bond_block(number_of_lines=number_of_atoms, block_type=CtabAtomBlockLine, stream=stream)
      for token in _ctab_atom_bond_block(number_of_lines=number_of_atoms, block_type=CtabAtomBlockLine, stream=stream):
          yield token
  
      # yield from _ctab_atom_bond_block(number_of_lines=number_of_bonds, block_type=CtabBondBlockLine, stream=stream)
      for token in _ctab_atom_bond_block(number_of_lines=number_of_bonds, block_type=CtabBondBlockLine, stream=stream):
          yield token
  
      # yield from _ctab_property_block(stream=stream)
      for token in _ctab_property_block(stream=stream):
          yield token
  
      yield CtabBlockEnd()