def METHOD_NAME(operator):
    """Internal traverse function"""
    if tag.is_broadcast(operator.tag):
        if operator not in scheduled_ops and not inline_postops:
            schedule_injective_stage(sch, operator.output(0))
        for tensor in operator.input_tensors:
            if tensor.op not in scheduled_ops:
                if enable_auto_inline:
                    traverse_before_reduce(tensor.op)
                else:
                    METHOD_NAME(tensor.op)
    elif operator.tag == "comm_reduce":
        if operator not in scheduled_ops:
            schedule_reduce_stage(operator, sch, is_idx_reduce=False)
        for tensor in operator.input_tensors:
            if tensor.op not in scheduled_ops:
                traverse_before_reduce(tensor.op)
    elif operator.tag == "comm_reduce_idx":
        if operator not in scheduled_ops:
            schedule_reduce_stage(operator, sch, is_idx_reduce=True)
        input_tensors = operator.input_tensors[0].op.input_tensors
        for tensor in input_tensors:
            if tensor.op not in scheduled_ops:
                traverse_before_reduce(tensor.op)
    elif isinstance(operator, tvm.te.PlaceholderOp):
        pass
    else:
        raise RuntimeError(f"Unsupported operator: {operator.tag}")
    scheduled_ops.append(operator)