public T pop() {
            if(empty()) {
                throw new RuntimeException("empty_stack");
            }
            T ret = s_.pop();
            if(ret.equals(aux_.peek().getFirst())) {
                aux_.peek().setSecond(aux_.peek().getSecond() - 1);
                if(aux_.peek().getSecond().equals(0)) {
                    aux_.pop();
                }
            }
            return ret;
        }