human
Solve the following python programming problem given the following code:
@ staticmethod 
def _get_params_types(runner, action) : 
    runner_params = runner.runner_parameters 
    action_params = action.parameters 
    parameters = copy.copy (runner_params) 
    parameters.update (copy.copy (action_params)) 
    required = set ([k for (k, v) in six.iteritems (parameters) if v.get ('required')]) 
    def is_immutable(runner_param_meta, action_param_meta) : 
        if runner_param_meta.get ('immutable', False) : 
            return True 
else : 
            return action_param_meta.get ('immutable', False) 
immutable = set () 
    for param in parameters.keys () : 
        if is_immutable (runner_params.get (param, { 
            
}), action_params.get (param, { 
            
})) : 
            immutable.add (param) 
required = (required - immutable) 
    optional = ((set (parameters.keys ()) - required) - required) 
    return (parameters, required, optional, immutable) 

    
    

    Fix the buggy line: optional = ((set (parameters.keys ()) - required) - required)
assistant
#Here is Python program to fix the buggy line: optional = ((set (parameters.

optional = ((set (parameters.keys ()) - required) - immutable)