def METHOD_NAME(expected, actual, replace_str="", replace_with="", python_files=False):
    def order(line):
        line = line.replace(',', ' ,')  # for imports
        line = line.replace('(', '( ')  # for
        line = line.replace(')', ' )')  # calls
        line = line.split(" ")
        line.sort()
        return ' '.join(line)
    def equal_by_content(diff):
        # todo: it doesn't show diff for follow case, shouldn't we fix it?
        # 01: + func1()
        # 02:   func2()
        # 03: - func1()
        # func1 moved and order has been changed
        act_lines = [line[1:] for line in diff if line.startswith('-')]
        exp_lines = [line[1:] for line in diff if line.startswith('+')]
        if len(act_lines) != len(exp_lines):
            return False
        for pair in zip(act_lines, exp_lines):
            if order(pair[0]) != order(pair[1]):
                return False
        return True
    if isinstance(replace_str, str):
        replace_str = [replace_str]
    if isinstance(replace_with, str):
        replace_with = [replace_with]
    with open(expected) as exp, open(actual) as act:
        act_lines = act.readlines()
        exp_lines = exp.readlines()
    subs = dict(zip(replace_str, replace_with))
    subs.update({'<': '< ', '>': ' >'})     # for xml
    for key in subs:
        act_lines = [x.replace(key, subs[key]).rstrip() for x in act_lines]
        exp_lines = [x.replace(key, subs[key]).rstrip() for x in exp_lines]
    if python_files:
        act_lines = astunparse.unparse(ast.parse('\n'.join(act_lines))).split('\n')
        exp_lines = astunparse.unparse(ast.parse('\n'.join(exp_lines))).split('\n')
    diff = list(difflib.unified_diff(exp_lines, act_lines))
    if diff and not equal_by_content(diff[2:]):
        ROOT_LOGGER.info("Replacements are: %s => %s", replace_str, replace_with)
        msg = "Failed asserting that two files are equal:\n%s\nversus\n%s\nDiff is:\n\n%s"
        # here we show full diff, even equal_by_content
        # todo: show only really different lines
        raise AssertionError(msg % (actual, expected, "\n".join(diff)))