def METHOD_NAME(cls, operation, *args, **kwargs):
    """Apply an operation to the entire selection
    This will create and push an operation onto the operation stack. Dependent
    on whether there is one item selected or multiple it will be just the
    operation or a grouped operation containing the operation for each selected
    node.
    :param operation: :type{Class} The operation to create and push. It should take a SceneNode as first positional parameter.
    :param args: The additional positional arguments passed along to the operation constructor.
    :param kwargs: The additional keyword arguments that will be passed along to the operation constructor.
    :return: list of instantiated operations
    """
    if not cls.__selection:
        return
    operations = []
    if len(cls.__selection) == 1:
        node = cls.__selection[0]
        op = operation(node, *args, **kwargs)
        operations.append(op)
    else:
        op = GroupedOperation()
        for node in Selection.getAllSelectedObjects():
            sub_op = operation(node, *args, **kwargs)
            op.addOperation(sub_op)
            operations.append(sub_op)
    op.push()
    return operations