<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_dataset(self, name=None, label=None, x_column_label=None, y_column_label=None, index=None, control=False):
 """Add a dataset to a specific plot. This method adds a dataset to a plot. Its functional use is imperative to the plot generation. It handles adding new files as well as indexing to files that are added to other plots. All Args default to None. However, these are note the defaults in the code. See DataImportContainer attributes for defaults in code. Args: name (str, optional):
 Name (path) for file. Required if reading from a file (at least one). Required if file_name is not in "general". Must be ".txt" or ".hdf5". Can include path from working directory. label (str, optional):
 Column label in the dataset corresponding to desired SNR value. Required if reading from a file (at least one). x_column_label/y_column_label (str, optional):
 Column label from input file identifying x/y values. This can override setting in "general". Default is `x`/`y`. index (int, optional):
 Index of plot with preloaded data. Required if not loading a file. control (bool, optional):
 If True, this dataset is set to the control. This is needed for Ratio plots. It sets the baseline. Default is False. Raises: ValueError: If no options are passes. This means no file indication nor index. """

        if name is None and label is None and index is None:
            raise ValueError("Attempting to add a dataset without"
                             + "supplying index or file information.")

        if index is None:
            trans_dict = DataImportContainer()
            if name is not None:
                trans_dict.file_name = name

            if label is not None:
                trans_dict.label = label

            if x_column_label is not None:
                trans_dict.x_column_label = x_column_label

            if y_column_label is not None:
                trans_dict.y_column_label = y_column_label

            if control:
                self.control = trans_dict
            else:
                # need to append file to file list.
                if 'file' not in self.__dict__:
                    self.file = []
                self.file.append(trans_dict)
        else:
            if control:
                self.control = DataImportContainer()
                self.control.index = index

            else:
                # need to append index to index list.
                if 'indices' not in self.__dict__:
                    self.indices = []

                self.indices.append(index)
        return