class Container implements IContainer {

    @Override
    public <T> T resolve(final IKey key, final Object ... args)
            throws ResolutionException {
        try {
            IStrategyContainer strategyContainer = (IStrategyContainer) ScopeProvider.getCurrentScope().getValue(strategyContainerKey);
            IResolveDependencyStrategy strategy = strategyContainer.resolve(key);
            return (T) strategy.resolve(args);
        } catch (Throwable e) {
            throw new ResolutionException("Resolution of dependency failed for key " + key, e);
        }
    }

    public  Container();

}