<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def validate_task(original_task):
 """ Validates task and adds default values for missing options using the following steps. 1. If there is no input list specified or if it is None, the input spec is assumed to be ['*']. 2. If there are not outputs specified, or if the output spec is None or an empty list, the output spec is assumed to be ['*']. 3. If the input or output spec is not iterable, they are converted into single element tuples. If they are any iterable, they are converted into tuples. 4. The task['fn'] option must be callable. 5. If number of outputs is more than one, task['fn'] must be a generator function. 6. Generator functions are not supported for output spec of '*'. Returns new task with updated options """

    task = original_task._asdict()

    # Default values for inputs and outputs
    if 'inputs' not in task or task['inputs'] is None:
        task['inputs'] = ['*']

    # Outputs list cannot be empty
    if ('outputs' not in task or
        task['outputs'] is None or
            len(task['outputs']) == 0):
        task['outputs'] = ['*']

    # Convert to tuples (even for single values)
    if not hasattr(task['inputs'], '__iter__') or isinstance(task['inputs'], str):
        task['inputs'] = (task['inputs'],)
    else:
        task['inputs'] = tuple(task['inputs'])

    if not hasattr(task['outputs'], '__iter__') or isinstance(task['outputs'], str):
        task['outputs'] = (task['outputs'],)
    else:
        task['outputs'] = tuple(task['outputs'])

    if not callable(task['fn']):
        raise TypeError('Task function must be a callable object')

    if (len(task['outputs']) > 1 and
            not inspect.isgeneratorfunction(task['fn'])):
        raise TypeError('Multiple outputs are only supported with \
                        generator functions')

    if inspect.isgeneratorfunction(task['fn']):
        if task['outputs'][0] == '*':
            raise TypeError('Generator functions cannot be used for tasks with \
                             output specification "*"')
    return Task(**task)