def METHOD_NAME(self, filename, path="", lazy=True, loadsettings=True):
    """
    Loads DREAM output from the specified file. If 'path' is
    given, this indicates which group path in the file to load
    the output from.
    :param str filename:      Name of file to load output from.
    :param str path:          Path to subsect of HDF5 file containing DREAM output.
    :param bool lazy:         If ``True``, allows the file to be read lazily (on-demand) by return h5py DataSet objects instead of the actual data (wrapped in a DREAM.DataObject).  This can greatly reduce load times, but may complicate typing slightly. Note also that the HDF5 file will be locked for as long as the Python interpreter is running.
    :param bool loadsettings: If ``True``, load the settings stored in the output object.
    """
    self.filename = filename
    od, self.h5handle, self.filesize = DREAMIO.LoadHDF5AsDict(filename, path=path, returnhandle=True, returnsize=True, lazy=lazy)
    if 'grid' in od:
        self.grid = Grid(od['grid'])
    else:
        print("WARNING: No grid found in '{}'.".format(filename))
    if 'ionmeta' in od:
        self.ionmeta = IonMetaData(od['ionmeta'])
    else:
        print("WARNING: No ion meta data found in '{}'.".format(filename))
    # Equation system should be loaded last, because it
    # may depend on previously loaded sections
    if 'eqsys' in od:
        self.eqsys = EquationSystem(od['eqsys'], grid=self.grid, output=self)
    else:
        print("WARNING: No equation system found in '{}'.".format(filename))
    # Load "other" quantities (i.e. quantities which are not part of
    # the equation system, but may still be interesting to know the
    # evolution of; this include collision frequencies, bounce averages
    # and more)
    if 'other' in od:
        self.other = OtherQuantityHandler(od['other'], grid=self.grid, output=self)
    # Load settings for the run
    if 'settings' in od and loadsettings:
        s = od['settings']
        if lazy:
            # Actually read all settings
            # (yes, we explicitly ignore the lazy loading request since
            # much of the settings interface has been created without lazy
            # loading in mind, and since settings are typically *very* small
            # compared to full-blown DREAM output)
            s = DREAMIO.unlazy(s)
        self.settings = DREAMSettings(s)
    # Solver statistics
    if 'solver' in od:
        self.solver = self._getsolver(od['solver'], output=self)
    # Timing information
    if 'timings' in od:
        self.timings = Timings(od['timings'], output=self)
    return od