docs: def _read(self, directory, filename, session, path, name, extension, spatial, spatialReferenceID, replaceParamFile):
          """
          Private file object read method. Classes that inherit from this base class must implement this method.
  
          The ``read()`` method that each file object inherits from this base class performs the processes common to all
          file read methods, after which it calls the file object's ``_read()`` (the preceding underscore denotes that
          the method is a private method).
  
          The purpose of the ``_read()`` method is to perform the file read operations that are specific to the file that
          the file object represents. This method should add any supporting SQLAlchemy objects to the session without
          committing. The common ``read()`` method handles the database commit for all file objects.
  
          The ``read()`` method processes the user input and passes on the information through the many parameters of the
          ``_read()`` method. As the ``_read()`` method should never be called by the user directly, the arguments will
          be defined in terms of what they offer for the developer of a new file object needing to implement this method.
  
          Args:
              directory (str): Directory containing the file to be read. Same as given by user in ``read()``.
              filename (str): Name of the file which will be read (e.g.: 'example.prj'). Same as given by user. Same as
                  given by user in ``read()``.
              session (:mod:`sqlalchemy.orm.session.Session`): SQLAlchemy session object bound to PostGIS enabled
                  database. Same as given by user in ``read()``.
              path (str): Directory and filename combined into the path to the file. This is a convenience parameter.
              name (str): Name of the file without extension. This is a convenience parameter.
              extension (str): Extension of the file without the name. This is a convenience parameter.
              spatial (bool, optional): If True, spatially enabled objects will be read in as PostGIS spatial objects.
                  Defaults to False. Same as given by user in ``read()``.
              spatialReferenceID (int, optional): Integer id of spatial reference system for the model. Required if
                  spatial is True. Same as given by user in ``read()``.
              replaceParamFile (:class:`gsshapy.orm.ReplaceParamFile`, optional): Handle the case when replacement
                  parameters are used in place of normal variables. If this is not None, then the user expects there
                  to be replacement variables in the file. Use the gsshapy.lib.parsetools.valueReadPreprocessor() to
                  handle these.
          """