@staticmethod
def _return_item_dictionary(param_dict, fast_access, copy):
    """Returns a dictionary containing either all parameters, all explored parameters,
        all config, all derived parameters, or all results.

        :param param_dict: The dictionary which is about to be returned
        :param fast_access: Whether to use fast access
        :param copy: If the original dict should be returned or a shallow copy

        :return: The dictionary

        :raises: ValueError if `copy=False` and fast_access=True`

        """
    if not copy and fast_access:
        raise ValueError(
            'You cannot access the original dictionary and use fast access at the same time!'
            )
    if not fast_access:
        if copy:
            return param_dict.copy()
        else:
            return param_dict
    else:
        resdict = {}
        for key in param_dict:
            param = param_dict[key]
            val = param.f_get()
            resdict[key] = val
        return resdict
