class Container implements IContainer {

    @Override
    @SuppressWarnings("unchecked")
    public <T> T resolve(final IKey key, final Object... args)
            throws ResolutionException {
        if (key == null) {
            throw new ResolutionException("Key can't be null");
        }
        IResolveDependencyStrategy strategy = storage.get(key);
        if (strategy == null) {
            throw new ResolutionException("Strategy for key " + key + " not found");
        }

        try {
            return (T) strategy.resolve(args);
        } catch (Exception e) {
            throw new ResolutionException("Resolution of dependency failed for key " + key, e);
        }
    }

    public  Container();

}