<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def blend(self, proportion=0.2, stratify=False, seed=100, indices=None, add_diff=False):
 """Blends sequence of models. Parameters proportion : float, default 0.2 stratify : bool, default False seed : int, default False indices : list(np.ndarray,np.ndarray), default None Two numpy arrays that contain indices for train/test slicing. add_diff : bool, default False Returns ------- `DataFrame` Examples -------- """

        result_train = []
        result_test = []
        y = None

        for model in self.models:
            result = model.blend(proportion=proportion, stratify=stratify, seed=seed, indices=indices)
            train_df = pd.DataFrame(result.X_train, columns=generate_columns(result.X_train, model.name))
            test_df = pd.DataFrame(result.X_test, columns=generate_columns(result.X_test, model.name))

            result_train.append(train_df)
            result_test.append(test_df)
            if y is None:
                y = result.y_train
        result_train = pd.concat(result_train, axis=1, ignore_index=True)
        result_test = pd.concat(result_test, axis=1, ignore_index=True)

        if add_diff:
            result_train = feature_combiner(result_train)
            result_test = feature_combiner(result_test)

        return Dataset(X_train=result_train, y_train=y, X_test=result_test)