def METHOD_NAME(job_definition: dict[str, Any], start_line: int, end_line: int) -> str:
    """
    extract the step name from the given job within the line of range(start_line, end_line)
    >>> Runner.resolve_step_name({"steps":["checkout",{}],"__startline__":42,"__endline__":49}, 48, 49)
    '[1](checkout)'
    >>> Runner.resolve_step_name({"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v2","__startline__":22,"__endline__":23}]}, 22, 23)
    '[1]'
    >>> Runner.resolve_step_name({"runs-on":"ubuntu-latest","steps":[{"name": "ab","__startline__":22,"__endline__":23}, {"name":"step_name","__startline__":23,"__endline__":33}]}, 23, 33)
    '[2](step_name)'
    """
    if not job_definition:
        return ""
    for idx, step in enumerate([step for step in job_definition.get('steps') or [] if step]):
        if isinstance(step, str):
            return f"[{idx + 1}]({step})"
        elif isinstance(step, dict):
            if step[START_LINE] <= start_line <= end_line <= step[END_LINE]:
                name = step.get('name')
                return f"[{idx + 1}]({name})" if name else f"[{idx + 1}]"
    return ""