def METHOD_NAME(self, model_name, obs_name, var_list):
    if model_name == obs_name:
        msg = f"Cannot run same dataset against each other ({model_name} vs. {obs_name})"
        logger.info(msg)
        return
    ocfg = self.cfg.get_obs_entry(obs_name)
    if ocfg["is_superobs"]:
        try:
            engine = SuperObsEngine(self.cfg)
            engine.run(
                model_name=model_name,
                obs_name=obs_name,
                var_list=var_list,
                try_colocate_if_missing=True,
            )
        except Exception:
            if self.raise_exceptions:
                raise
            logger.warning("failed to process superobs...")
    elif ocfg["only_superobs"]:
        logger.info(
            f"Skipping json processing of {obs_name}, as this is "
            f"marked to be used only as part of a superobs "
            f"network"
        )
    else:
        col = self.get_colocator(model_name, obs_name)
        if self.cfg.processing_opts.only_json:
            files_to_convert = col.get_available_coldata_files(var_list)
        else:
            col.run(var_list)
            files_to_convert = col.files_written
        if self.cfg.processing_opts.only_colocation:
            logger.info(
                f"FLAG ACTIVE: only_colocation: Skipping "
                f"computation of json files for {obs_name} /"
                f"{model_name} combination."
            )
        else:
            engine = ColdataToJsonEngine(self.cfg)
            engine.run(files_to_convert)