Accessing the pasted object during commandName Paste and Duplicate

Currently I’m working on a piece of code for copying and pasting certain game objects. I am using the Event.current.commandName to check for a Paste or Duplicate event. When this event occurs I want to get access to the pasted gameObject, but the selection would still be the copied element. I solved this by adding a flag to my class, signaling that we pasted an object. Now we can use OnSelectionChanged to do everything we need:

private static void HandleCopyPaste()
{
    Event e = Event.current;
    if (e.commandName == "Paste" || e.commandName == "Duplicate")
    {
        pasted = true;
    }
}

static void OnSelectionChange()
{
    if (pasted)
    {
        GameObject selected = Selection.activeGameObject;
        // Do stuff
        pasted = false;
    }
}

My problem:
When I paste two gameObjects quickly after oneanother, the first gameObject never goes through the if(pasted), missing my crucial // Do stuff, which in turn breaks my code.

Also, I doubt this method will work when handling multiple gameObjects.

My question:
Is there a better way to get the gameObject(s) that is (are) being pasted? Can we maybe access the clipboard?

[edit] So basically this is what I would want:

private static void HandleCopyPaste()
{
    Event e = Event.current;
    if (e.commandName == "Paste" || e.commandName == "Duplicate")
    {
        GameObject pastedObject = GetPastedObject();
        pastedObject.DoStuff();
    }
}

Is there a way to access the pasted object during the commandName “Paste”?

Off the top of my head: Add the pasted object to a Queue. If your //Do stuff is always the same, then just loop through the Queue. (List or Stack or similar would also work equally well)

If your //Do stuff depends on the source object, you might want to define a struct to handle that.

struct PasteObject {
    GameObject obj;
    GameObject source;
}

Queue<PasteObject> objs = new Queue<PasteObject>();

void PasteNewObject(GameObject source) {
    objs.Enque(new PasteObject {Selection.activeObject, source});
}

void HandlePastedObjects() {
    while(!objs.isEmpty) {
        PasteObject po = objs.Deque(); 
        //Do stuff with po.obj and po.source
    }
}