public Wrapper<T> acquire() {
        while(true) {
            Wrapper<T> f = first.get();
            if (f == null)
                return null;
            if (first.compareAndSet(f,f.getNext()))
                return f;
        }
    }