As an example, you could approve the mediation of the first
instance of ViewWithManyMediators by the FirstMediator only if the
view's name is "firstInstance". Similar for the second instance, if
the view's name is "secondInstance", SecondMediator would be the
one mediating the second instance of the view added to the
stage.

So, ViewWithManyMediators exposes a setter and getter for the
viewName.
When you add the 2 views to the stage, you set their names
accordingly, "firstInstance" and "secondInstance".

IDoStuff should, of course, contain the getter and setter for
the viewName, so that the view can implement them.

When the mediators are about to be created, the guards will make
sure that each instance of the view on stage will have different
mediators.

Both mediators are injected with IDoStuff, as are the 2 guards
as well.
[Inject] public var view:IDoStuff;

The 2 instances of the view can exhibit a common behaviour or
different behaviours, dictated by the use of one or more
interfaces. Here is a link to an example that shows how to use
interfaces to create and mediate behaviours, in case you are
interested in the subject: