class ProviderStack {

    protected List<T> refresh() {
        ArrayList<T> l = new ArrayList<T>();
        for (Iterator<ProviderHolder<T>> iterator = providers.iterator(); iterator.hasNext();) {
            ProviderHolder<T> holder = iterator.next();
            T provider = holder.getProvider();
            if (provider == null) {
                iterator.remove();
            } else {
                l.add(provider);
            }
        }
        return l;
    }

    public  ProviderStack();
    public  ProviderStack(ServiceManager serviceManager, Class<T> providerType);
    public  ProviderStack(T[] currentProviders);

}