@Test
public void MustCorrectLoadPlugin() throws Exception {

    BootstrapItem bootstrapItem = mock(BootstrapItem.class);
    whenNew(BootstrapItem.class).withArguments("CreateAsyncOperationActorPlugin").thenReturn(bootstrapItem);
    when(bootstrapItem.after(anyString())).thenReturn(bootstrapItem);
    when(bootstrapItem.before(anyString())).thenReturn(bootstrapItem);
    plugin.load();
    verifyNew(BootstrapItem.class).withArguments("CreateAsyncOperationActorPlugin");
    ArgumentCaptor<IPoorAction> actionArgumentCaptor = ArgumentCaptor.forClass(IPoorAction.class);
    //verify(bootstrapItem).after("IOC");
    verify(bootstrapItem).process(actionArgumentCaptor.capture());
    verify(bootstrap).add(bootstrapItem);
    IKey createAsyncOpKey = mock(IKey.class);
    when(Keys.getOrAdd(CreateAsyncOperationActor.class.getCanonicalName())).thenReturn(createAsyncOpKey);
    actionArgumentCaptor.getValue().execute();
    verifyStatic();
    Keys.getOrAdd(CreateAsyncOperationActor.class.getCanonicalName());
    ArgumentCaptor<CreateNewInstanceStrategy> createNewInstanceStrategyArgumentCaptor = ArgumentCaptor.forClass(CreateNewInstanceStrategy.class);
    verifyStatic();
    IOC.register(eq(createAsyncOpKey), createNewInstanceStrategyArgumentCaptor.capture());
    IObject arg = mock(IObject.class);
    CreateAsyncOperationActor actor = mock(CreateAsyncOperationActor.class);
    whenNew(CreateAsyncOperationActor.class).withArguments(arg).thenReturn(actor);
    assertTrue("Objects must return correct object", createNewInstanceStrategyArgumentCaptor.getValue().resolve(arg) == actor);
    verifyNew(CreateAsyncOperationActor.class).withArguments(arg);
}