def METHOD_NAME(self, split, epoch=1, combine=False):
    """Load a given dataset split.
    Args:
        split (str): name of the split (e.g., train, valid, test)
    """
    loaded_datasets = []
    paths = utils.split_paths(self.args.data)
    assert len(paths) > 0
    data_path = paths[(epoch - 1) % len(paths)]
    logger.info("data_path", data_path)
    for k in itertools.count():
        split_k = split + (str(k) if k > 0 else "")
        path = os.path.join(data_path, split_k)
        ds = indexed_dataset.make_dataset(
            path,
            impl=self.args.dataset_impl,
            fix_lua_indexing=True,
            dictionary=self.dictionary,
        )
        if ds is None:
            if k > 0:
                break
            else:
                raise FileNotFoundError(
                    "Dataset not found: {} ({})".format(split, data_path)
                )
        with data_utils.numpy_seed(self.seed + k):
            loaded_datasets.append(
                BlockPairDataset(
                    ds,
                    self.dictionary,
                    ds.sizes,
                    self.args.tokens_per_sample,
                    break_mode=self.args.break_mode,
                    doc_break_size=1,
                )
            )
        logger.info(
            "{} {} {} examples".format(data_path, split_k, len(loaded_datasets[-1]))
        )
        if not combine:
            break
    if len(loaded_datasets) == 1:
        dataset = loaded_datasets[0]
        sizes = dataset.sizes
    else:
        dataset = ConcatDataset(loaded_datasets)
        sizes = np.concatenate([ds.sizes for ds in loaded_datasets])
    self.datasets[split] = MaskedLMDataset(
        dataset=dataset,
        sizes=sizes,
        vocab=self.dictionary,
        pad_idx=self.dictionary.pad(),
        mask_idx=self.dictionary.mask(),
        classif_token_idx=self.dictionary.cls(),
        sep_token_idx=self.dictionary.sep(),
        shuffle=self.args.shuffle_dataset,
        seed=self.seed,
    )