def METHOD_NAME(self, field_to_split: str = None, split_fields: List[str] = None,
                split_proportions: List[float] = None, split_seed: int = None, stratify: bool = None) -> bool:
    """
    Split given field of dataset to the given list of fields with corresponding proportions
    Args:
        field_to_split: field name (out of ``"train", "valid", "test"``) which to split
        split_fields: list of names (out of ``"train", "valid", "test"``) of fields to which split
        split_proportions: corresponding proportions
        split_seed: random seed for splitting dataset
        stratify: whether to use stratified split
    Returns:
        None
    """
    if split_seed is None:
        split_seed = self.random.randint(0, 10000)
    data_to_div = self.data[field_to_split].copy()
    data_size = len(self.data[field_to_split])
    for i in range(len(split_fields) - 1):
        if stratify:
            stratify = [sample[1] for sample in data_to_div]
        self.data[split_fields[i]], data_to_div = train_test_split(
            data_to_div,
            test_size=len(data_to_div) - int(data_size * split_proportions[i]),
            random_state=split_seed,
            stratify=stratify)
        self.data[split_fields[-1]] = data_to_div
    return True