class StrategyStorageStrategy implements IResolveDependencyStrategy, IAdditionDependencyStrategy {

    @Override
    public <T> T resolve(Object... args) throws ResolveDependencyStrategyException {
        try {
            IResolveDependencyStrategy strategy = (IResolveDependencyStrategy) this.findValueByArgumentFunction.execute(this.strategyStorage, args[0]);

            return null == strategy ? null : strategy.resolve(args);
        } catch (Exception e) {
            throw new ResolveDependencyStrategyException("Object resolution failed.", e);
        }
    }

    public  StrategyStorageStrategy(final IFunction argToKeyFunction, final IBiFunction findValueByArgumentFunction);

}