class RestrictedCollectionWrappedList<T> implements List<T> {
        private Collection<T> wrapped;
        public RestrictedCollectionWrappedList(Collection<T> wrapped) { this.wrapped = wrapped; }
        @Override public int size() { return wrapped.size(); }
        @Override public boolean isEmpty() { throw new RuntimeException("not implemented"); }
        @Override public boolean contains(Object o) { throw new RuntimeException("not implemented"); }
        @Override public Iterator<T> iterator() { return wrapped.iterator(); }
        @Override public Object[] toArray() { return IteratorUtils.toArray(wrapped.iterator()); }
        @SuppressWarnings({"hiding", "unchecked"}) @Override public <T> T[] toArray(T[] a) { return (T[]) IteratorUtils.toArray(iterator(), a.getClass()); }
        @Override public boolean add(T e) { throw new RuntimeException("immutable list"); }
        @Override public boolean remove(Object o) { throw new RuntimeException("immutable list"); }
        @Override public boolean containsAll(Collection<?> c) { return wrapped.containsAll(c); }
        @Override public boolean addAll(Collection<? extends T> c) { throw new RuntimeException("immutable list"); }
        @Override public boolean addAll(int index, Collection<? extends T> c) { throw new RuntimeException("immutable list"); }
        @Override public boolean removeAll(Collection<?> c) { throw new RuntimeException("immutable list"); }
        @Override public boolean retainAll(Collection<?> c) { throw new RuntimeException("immutable list"); }
        @Override public void clear() { throw new RuntimeException("immutable list"); }
        @Override public T get(int index) { throw new RuntimeException("not implemented"); }
        @Override public T set(int index, T element) { throw new RuntimeException("immutable list"); }
        @Override public void add(int index, T element) { throw new RuntimeException("immutable list"); }
        @Override public T remove(int index) { throw new RuntimeException("immutable list"); }
        @Override public int indexOf(Object o) { throw new RuntimeException("not implemented"); }
        @Override public int lastIndexOf(Object o) { throw new RuntimeException("not implemented"); }
        @Override public ListIterator<T> listIterator() { throw new RuntimeException("not implemented"); }
        @Override public ListIterator<T> listIterator(int index) { throw new RuntimeException("not implemented"); }
        @Override public List<T> subList(int fromIndex, int toIndex) { throw new RuntimeException("not implemented"); }
    }

    protected BdbModule bdb;
    @Autowired
    public void setBdbModule(BdbModule bdb) {
        this.bdb = bdb;
    }

    public static String COOKIEDB_NAME = "hc_httpclient_cookies";

    private transient Database cookieDb;
    private transient StoredSortedMap<byte[],Cookie> cookies;

    public void prepare() {<FILL_FUNCTION_BODY>

        try {
            StoredClassCatalog classCatalog = bdb.getClassCatalog();
            BdbModule.BdbConfig dbConfig = new BdbModule.BdbConfig();
            dbConfig.setTransactional(false);
            dbConfig.setAllowCreate(true);
            dbConfig.setSortedDuplicates(false);
            cookieDb = bdb.openDatabase(COOKIEDB_NAME, dbConfig,
                    isCheckpointRecovery);
            cookies = new StoredSortedMap<byte[],Cookie>(cookieDb,
                    new ByteArrayBinding(), 
                    new SerialBinding<Cookie>(classCatalog, Cookie.class), 
                    true);
        } catch (DatabaseException e) {
            throw new RuntimeException(e);
        }
    
<methods>public non-sealed void <init>() ,public void addCookie(Cookie) ,public abstract void clear() ,public CookieStore cookieStoreFor(org.archive.modules.CrawlURI) throws URIException,public abstract boolean expireCookie(Cookie, java.util.Date) ,public org.archive.spring.ConfigFile getCookiesLoadFile() ,public org.archive.spring.ConfigPath getCookiesSaveFile() ,public boolean isCookieCountMaxedForDomain(java.lang.String) ,public boolean isRunning() ,public void saveCookies() ,public void saveCookies(java.lang.String) ,public void setCookiesLoadFile(org.archive.spring.ConfigFile) ,public void setCookiesSaveFile(org.archive.spring.ConfigPath) ,public void start() ,public void stop() <variables>public static final int MAX_COOKIES_FOR_DOMAIN,protected static final Comparator<Cookie> cookieComparator,protected org.archive.spring.ConfigFile cookiesLoadFile,protected org.archive.spring.ConfigPath cookiesSaveFile,protected boolean isRunning,protected final java.util.logging.Logger logger