Build :class:`~ctfile.ctfile.Ctab` instance.

        :return: :class:`~ctfile.ctfile.Ctab` instance.
        :rtype: :class:`~ctfile.ctfile.Ctab`.

def _build(self, lexer):
        """Build :class:`~ctfile.ctfile.Ctab` instance.

        :return: :class:`~ctfile.ctfile.Ctab` instance.
        :rtype: :class:`~ctfile.ctfile.Ctab`.
        """
        atom_number = 1
        while True:
            token = next(lexer)
            key = token.__class__.__name__

            if key == 'CtabCountsLine':
                self[key].update(token._asdict())

            elif key == 'CtabAtomBlock':
                self[key].append(Atom(atom_number=str(atom_number), **token._asdict()))
                atom_number += 1

            elif key == 'CtabBondBlock':
                first_atom_number, second_atom_number, bond_type, bond_stereo, \
                not_used1, bond_topology, reacting_center_status = token

                first_atom = self.atoms[int(first_atom_number) - 1]
                second_atom = self.atoms[int(second_atom_number) - 1]
                first_atom.neighbors.append(second_atom)
                second_atom.neighbors.append(first_atom)

                bond = Bond(first_atom=first_atom, second_atom=second_atom, bond_type=bond_type,
                            bond_stereo=bond_stereo, not_used1=not_used1, bond_topology=bond_topology,
                            reacting_center_status=reacting_center_status)
                self[key].append(bond)

            elif key == 'CtabPropertiesBlock':
                property_name = token.name
                keys = self.ctab_conf[self.version][property_name]['values']
                ctab_properties = more_itertools.sliced(token.line.split()[3:], len(keys))

                for ctab_property in ctab_properties:
                    atom_number, property_value = ctab_property
                    self.atoms[int(atom_number) - 1]._ctab_property_data[property_name] = property_value

            elif key == 'CtabBlockEnd':
                break

            else:
                raise KeyError('Ctab object does not supposed to have any other information: "{}".'.format(key))