class PluginInMemoryDBTasks implements IPlugin {

    @Override
    public void load() throws PluginException {

        try {
            BootstrapItem item = new BootstrapItem("InMemoryDBTasksPlugin");
            item
//                    .after("IOC")
//                    .after("IFieldPlugin")
                    .after("InMemoryDatabase")
                    .process(() -> {
                        try {
                            registerCreateCollectionTask();
                            registerUpsertTask();
                            registerInsertTask();
                            registerGetByIdTask();
                            registerSearchTask();
                            registerDeleteTask();
                            registerCountTask();
                        } catch (ResolutionException e) {
                            throw new ActionExecuteException("Can't resolve fields for db task.", e);
                        } catch (InvalidArgumentException e) {
                            throw new ActionExecuteException("Can't create strategy for db task.", e);
                        } catch (RegistrationException e) {
                            throw new ActionExecuteException("Can't register strategy for db task.", e);
                        }
                    });
            bootstrap.add(item);
        } catch (Exception e) {
            throw new PluginException("Can't get BootstrapItem.", e);
        }
    }

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

}