class SubscribeScopeProviderOnScopeCreation implements IPlugin {

    @Override
    public void load()
            throws PluginException {
        try {
            IBootstrapItem<String> item = new BootstrapItem("SubscribeScopeProviderOnScopeCreation");
            item
                    .before("CreateNewScope")
                    .process(
                            () -> {
                                try {
                                    ScopeProvider.subscribeOnCreationNewScope(
                                            scope -> {
                                                try {
                                                    scope.setValue(IOC.getIocKey(), new StrategyContainer());
                                                } catch (Exception e) {
                                                    throw new Error(e);
                                                }
                                            }
                                    );
                                } catch (ScopeProviderException e) {
                                    throw new ActionExecuteException("SubscribeScopeProviderOnScopeCreation plugin can't load: can't subscribe on creation new scope", e);
                                }
                            }
                    );
            this.bootstrap.add(item);
        } catch (Throwable e) {
            throw new PluginException("Load plugin execution has been failed.", e);
        }
    }

    public  SubscribeScopeProviderOnScopeCreation(final IBootstrap<IBootstrapItem<String>> bootstrap);

}