code: def _build(self, lexer):
          
          key = ''
          while key != 'EndOfFile':
  
              token = next(lexer)
              key = token.__class__.__name__
  
              if key == 'HeaderBlock':
                  self[key].update(token._asdict())
  
              elif key == 'CtabBlockStart':
                  ctab = Ctab()
                  ctab._build(lexer)
                  self['Ctab'] = ctab
  
              elif key == 'MolfileStart':
                  pass
  
              elif key in ('MolfileEnd', 'EndOfFile'):
                  break
  
              else:
                  raise KeyError('Molfile object does not supposed to have any other information: "{}".'.format(key))
  
          return self
docs: Build :class:`~ctfile.ctfile.Molfile` instance.
  
          :return: :class:`~ctfile.ctfile.Molfile` instance.
          :rtype: :class:`~ctfile.ctfile.Molfile`.