<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _parse_file_usage(cls, action_class, args):
 """Find all external files referenced by an action."""


        fixed_files = {}
        variable_files = []

        if not hasattr(action_class, 'FILES'):
            return fixed_files, variable_files

        for file_arg in action_class.FILES:
            arg_value = args.get(file_arg)
            if arg_value is None:
                raise RecipeFileInvalid("Action lists a file argument but none was given", declared_argument=file_arg, passed_arguments=args)

            variables = _extract_variables(arg_value)
            if len(variables) == 0:
                fixed_files[file_arg] = arg_value
            else:
                variable_files.append(arg_value)

        return fixed_files, variable_files