def METHOD_NAME(self, hdf=None, group_name=None):
    # keep hdf structure for version peeking in separate variable, so that
    # the inherited from_hdf() can properly deal with it
    h5 = hdf or self.project_hdf5
    if group_name:
        h5 = h5[group_name]
    if "HDF_VERSION" in h5.list_nodes():
        hdf_version = h5["HDF_VERSION"]
    else:
        # old versions didn't use to set a HDF version
        hdf_version = "0.1.0"
    if hdf_version == "0.1.0":
        super().METHOD_NAME(hdf=hdf, group_name=group_name)
        with self.project_hdf5.open("input") as hdf5_input:
            self.append(Atoms().METHOD_NAME(hdf5_input))
    elif hdf_version == "0.2.0":
        GenericJob.METHOD_NAME(self, hdf=hdf, group_name=group_name)
        hdf = self.project_hdf5["structures"]
        for group in sorted(hdf.list_groups()):
            self.append(Atoms().METHOD_NAME(hdf=hdf, group_name=group))
    else:
        super().METHOD_NAME(hdf=hdf, group_name=group_name)
        self._container.METHOD_NAME(hdf=self.project_hdf5, group_name="structures")