code: def read(self, fileName, **kwargs):
          
          if self._langext is not None:
              with open(fileName, 'r') as fin:
                  newmodel = self._langext.translate(fin.read(), **kwargs)
                  with open(fileName+'.translated', 'w') as fout:
                      fout.write(newmodel)
                      fileName += '.translated'
          lock_and_call(
              lambda: self._impl.read(fileName),
              self._lock
          )
          self._errorhandler_wrapper.check()
docs: Interprets the specified file (script or model or mixed) As a side
          effect, it invalidates all entities (as the passed file can contain any
          arbitrary command); the lists of entities will be re-populated lazily
          (at first access).
  
          Args:
              fileName: Full path to the file.
  
          Raises:
              RuntimeError: in case the file does not exist.