public synchronized void persistSome( long targetSize )
    {
        boolean done = false;
        long bytesSaved = 0;
        int persisted = 0;
        while ( !done )
        {
            try
            {
                WrappedString suggested = strategy.suggest();
                if ( suggested == null )
                {
                    for ( Map.Entry<WrappedString, ArrayHashMapOption> entry : store.entrySet() )
                    {
                        if ( entry.getValue().inMemory() )
                        {
                            System.out.println(
                                    "Found in memory option while strategy was oblivious" );
                            entry.getValue().persist();
                        }
                    }
                }
                ArrayHashMapOption currentOption = store.get(suggested );
                if ( currentOption == null )
                {
                    throw new IllegalStateException( "could not find "
                                                     + suggested
                                                     + " in the store" );
                }
                /*
                System.out.println( "Suggested for eviction was "
                        + suggested.hashCode() + " with size "
                        + currentOption.getValue().size() );
                */
                if ( currentOption.inMemory() )
                {
                    bytesSaved += currentOption.getValue().getKeys().length * 8;
                    bytesSaved += currentOption.persist();
                    strategy.evict( suggested );
                    persisted++;
                }
                else
                {
                    throw new IllegalStateException(
                            suggested
                                    + " is already evicted but was proposed nonetheless." );
                }
                if ( bytesSaved > targetSize )
                {
                    System.out.println( "We are done by size" );
                    done = true;
                }
                if ( persisted > 130 )
                {
                    System.out.println( "We are done by count" );
                    // done = true;
                }
            }
            catch ( IOException e )
            {
                e.printStackTrace();
            }
        }
        System.out.println( "Evicted " + bytesSaved + " bytes in total" );
    }