Index: src/test/org/apache/lucene/search/TestCachingWrapperFilter.java
===================================================================
--- src/test/org/apache/lucene/search/TestCachingWrapperFilter.java	(revision 822855)
+++ src/test/org/apache/lucene/search/TestCachingWrapperFilter.java	(working copy)
@@ -17,19 +17,18 @@
  * limitations under the License.
  */
 
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.OpenBitSet;
-import org.apache.lucene.util.OpenBitSetDISI;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
+import java.io.IOException;
+
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.OpenBitSet;
+import org.apache.lucene.util.OpenBitSetDISI;
 
-import java.io.IOException;
-import java.util.BitSet;
-
 public class TestCachingWrapperFilter extends LuceneTestCase {
   public void testCachingWorks() throws Exception {
     Directory dir = new RAMDirectory();
@@ -45,8 +44,7 @@
     cacher.getDocIdSet(reader);
     assertTrue("first time", filter.wasCalled());
 
-    // make sure no exception if cache is holding the wrong bitset
-    cacher.bits(reader);
+    // make sure no exception if cache is holding the wrong docIdSet
     cacher.getDocIdSet(reader);
 
     // second time, nested filter should not be called
@@ -90,12 +88,6 @@
         return new OpenBitSet();
       }
     }, true);
-    // a deprecated filter is always cacheable
-    assertDocIdSetCacheable(reader, new Filter() {
-      public BitSet bits(IndexReader reader) {
-        return new BitSet();
-      }
-    }, true);
 
     reader.close();
   }
Index: src/test/org/apache/lucene/search/JustCompileSearch.java
===================================================================
--- src/test/org/apache/lucene/search/JustCompileSearch.java	(revision 822855)
+++ src/test/org/apache/lucene/search/JustCompileSearch.java	(working copy)
@@ -244,6 +244,11 @@
   static final class JustCompileFilter extends Filter {
     // Filter is just an abstract class with no abstract methods. However it is
     // still added here in case someone will add abstract methods in the future.
+    
+    @Override
+    public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
+      return null;
+    }
   }
 
   static final class JustCompileFilteredDocIdSet extends FilteredDocIdSet {
@@ -396,6 +401,10 @@
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
+    @Override
+    public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
+      return null;
+    }    
   }
 
   static final class JustCompileTopDocsCollector extends TopDocsCollector {
Index: src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java
===================================================================
--- src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java	(revision 822855)
+++ src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java	(working copy)
@@ -17,15 +17,14 @@
  * limitations under the License.
  */
 
+import java.io.IOException;
+
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.TermDocs;
 import org.apache.lucene.index.TermEnum;
 import org.apache.lucene.util.OpenBitSet;
 
-import java.io.IOException;
-import java.util.BitSet;
-
 /**
  * A wrapper for {@link MultiTermQuery}, that exposes its
  * functionality as a {@link Filter}.
@@ -130,28 +129,6 @@
   }
   
   /**
-   * Returns a BitSet with true for documents which should be
-   * permitted in search results, and false for those that should
-   * not.
-   * @deprecated Use {@link #getDocIdSet(IndexReader)} instead.
-   */
-  @Override
-  public BitSet bits(IndexReader reader) throws IOException {
-    final TermEnum enumerator = query.getEnum(reader);
-    try {
-      final BitSet bitSet = new BitSet(reader.maxDoc());
-      new TermGenerator() {
-        public void handleDoc(int doc) {
-          bitSet.set(doc);
-        }
-      }.generate(reader, enumerator);
-      return bitSet;
-    } finally {
-      enumerator.close();
-    }
-  }
-
-  /**
    * Returns a DocIdSet with documents that should be
    * permitted in search results.
    */
Index: src/java/org/apache/lucene/search/CachingSpanFilter.java
===================================================================
--- src/java/org/apache/lucene/search/CachingSpanFilter.java	(revision 822855)
+++ src/java/org/apache/lucene/search/CachingSpanFilter.java	(working copy)
@@ -42,14 +42,6 @@
     this.filter = filter;
   }
 
-  /**
-   * @deprecated Use {@link #getDocIdSet(IndexReader)} instead.
-   */
-  public BitSet bits(IndexReader reader) throws IOException {
-    SpanFilterResult result = getCachedResult(reader);
-    return result != null ? result.getBits() : null;
-  }
-  
   public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
     SpanFilterResult result = getCachedResult(reader);
     return result != null ? result.getDocIdSet() : null;
Index: src/java/org/apache/lucene/search/Filter.java
===================================================================
--- src/java/org/apache/lucene/search/Filter.java	(revision 822855)
+++ src/java/org/apache/lucene/search/Filter.java	(working copy)
@@ -17,37 +17,22 @@
  * limitations under the License.
  */
 
-import java.util.BitSet;
 import java.io.IOException;
+
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.util.DocIdBitSet;
 
 /** Abstract base class providing a mechanism to use a subset of an index
  *  for restriction or permission of index search results.
  *  <p>
- *  <b>Note:</b> In Lucene 3.0 {@link #bits(IndexReader)} will be removed
- *  and {@link #getDocIdSet(IndexReader)} will be defined as abstract.
- *  All implementing classes must therefore implement {@link #getDocIdSet(IndexReader)}
- *  in order to work with Lucene 3.0.
  */
 public abstract class Filter implements java.io.Serializable {
   /**
-   * @return A BitSet with true for documents which should be permitted in
-   * search results, and false for those that should not.
-   * @deprecated Use {@link #getDocIdSet(IndexReader)} instead.
-   */
-  public BitSet bits(IndexReader reader) throws IOException {
-    throw new UnsupportedOperationException();
-  }
-
-  /**
    * @return a DocIdSet that provides the documents which should be permitted or
    *         prohibited in search results. <b>NOTE:</b> null can be returned if
    *         no documents will be accepted by this Filter.
    * 
    * @see DocIdBitSet
    */
-  public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
-    return new DocIdBitSet(bits(reader));
-  }
+  public abstract DocIdSet getDocIdSet(IndexReader reader) throws IOException;
 }
Index: src/java/org/apache/lucene/search/SpanFilterResult.java
===================================================================
--- src/java/org/apache/lucene/search/SpanFilterResult.java	(revision 822855)
+++ src/java/org/apache/lucene/search/SpanFilterResult.java	(working copy)
@@ -28,22 +28,8 @@
  *
  **/
 public class SpanFilterResult {
-  /** @deprecated */
-  private BitSet bits;
-  
   private DocIdSet docIdSet;
   private List positions;//Spans spans;
-
-  /**
-   *
-   * @param bits The bits for the Filter
-   * @param positions A List of {@link org.apache.lucene.search.SpanFilterResult.PositionInfo} objects
-   * @deprecated Use {@link #SpanFilterResult(DocIdSet, List)} instead
-   */
-  public SpanFilterResult(BitSet bits, List positions) {
-    this.bits = bits;
-    this.positions = positions;
-  }
   
   /**
   *
@@ -64,13 +50,6 @@
     return positions;
   }
 
-  /** 
-   * @deprecated Use {@link #getDocIdSet()}
-   */
-  public BitSet getBits() {
-    return bits;
-  }
-  
   /** Returns the docIdSet */
   public DocIdSet getDocIdSet() {
     return docIdSet;
Index: src/java/org/apache/lucene/search/CachingWrapperFilter.java
===================================================================
--- src/java/org/apache/lucene/search/CachingWrapperFilter.java	(revision 822855)
+++ src/java/org/apache/lucene/search/CachingWrapperFilter.java	(working copy)
@@ -17,13 +17,12 @@
  * limitations under the License.
  */
 
+import java.io.IOException;
+import java.util.Map;
+import java.util.WeakHashMap;
+
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.util.DocIdBitSet;
 import org.apache.lucene.util.OpenBitSetDISI;
-import java.util.BitSet;
-import java.util.WeakHashMap;
-import java.util.Map;
-import java.io.IOException;
 
 /**
  * Wraps another filter's result and caches it.  The purpose is to allow
@@ -35,7 +34,7 @@
   /**
    * A transient Filter cache.
    */
-  protected transient Map cache;
+  protected transient Map<IndexReader, DocIdSet> cache;
 
   /**
    * @param filter Filter to cache results of
@@ -44,36 +43,6 @@
     this.filter = filter;
   }
 
-  /**
-   * @deprecated Use {@link #getDocIdSet(IndexReader)} instead.
-   */
-  public BitSet bits(IndexReader reader) throws IOException {
-    if (cache == null) {
-      cache = new WeakHashMap();
-    }
-
-    Object cached = null;
-    synchronized (cache) {  // check cache
-      cached = cache.get(reader);
-    }
-	
-    if (cached != null) {
-      if (cached instanceof BitSet) {
-        return (BitSet) cached;
-      } else if (cached instanceof DocIdBitSet)
-        return ((DocIdBitSet) cached).getBitSet();
-      // It would be nice to handle the DocIdSet case, but that's not really possible
-    }
-
-    final BitSet bits = filter.bits(reader);
-
-    synchronized (cache) {  // update cache
-      cache.put(reader, bits);
-    }
-
-    return bits;
-  }
-
   /** Provide the DocIdSet to be cached, using the DocIdSet provided
    *  by the wrapped Filter.
    *  <p>This implementation returns the given {@link DocIdSet}, if {@link DocIdSet#isCacheable}
@@ -94,19 +63,16 @@
   
   public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
     if (cache == null) {
-      cache = new WeakHashMap();
+      cache = new WeakHashMap<IndexReader, DocIdSet>();
     }
 
-    Object cached = null;
+    DocIdSet cached = null;
     synchronized (cache) {  // check cache
       cached = cache.get(reader);
     }
 
     if (cached != null) {
-      if (cached instanceof DocIdSet)
-        return (DocIdSet) cached;
-      else
-        return new DocIdBitSet((BitSet) cached);
+      return (DocIdSet) cached;
     }
 
     final DocIdSet docIdSet = docIdSetToCache(filter.getDocIdSet(reader), reader);
Index: src/java/org/apache/lucene/search/QueryWrapperFilter.java
===================================================================
--- src/java/org/apache/lucene/search/QueryWrapperFilter.java	(revision 822855)
+++ src/java/org/apache/lucene/search/QueryWrapperFilter.java	(working copy)
@@ -44,30 +44,6 @@
     this.query = query;
   }
 
-  /**
-   * @deprecated Use {@link #getDocIdSet(IndexReader)} instead.
-   */
-  public BitSet bits(IndexReader reader) throws IOException {
-    final BitSet bits = new BitSet(reader.maxDoc());
-
-    new IndexSearcher(reader).search(query, new Collector() {
-      private int base = 0;
-      public void setScorer(Scorer scorer) throws IOException {
-        // score is not needed by this collector 
-      }
-      public final void collect(int doc) {
-        bits.set(doc + base);  // set bit for hit
-      }
-      public void setNextReader(IndexReader reader, int docBase) {
-        base = docBase;
-      }
-      public boolean acceptsDocsOutOfOrder() {
-        return true;
-      }
-    });
-    return bits;
-  }
-  
   public DocIdSet getDocIdSet(final IndexReader reader) throws IOException {
     final Weight weight = query.weight(new IndexSearcher(reader));
     return new DocIdSet() {
Index: contrib/remote/src/java/org/apache/lucene/search/RemoteCachingWrapperFilter.java
===================================================================
--- contrib/remote/src/java/org/apache/lucene/search/RemoteCachingWrapperFilter.java	(revision 822855)
+++ contrib/remote/src/java/org/apache/lucene/search/RemoteCachingWrapperFilter.java	(working copy)
@@ -18,7 +18,6 @@
  */
 
 import java.io.IOException;
-import java.util.BitSet;
 
 import org.apache.lucene.index.IndexReader;
 
@@ -45,18 +44,6 @@
   public RemoteCachingWrapperFilter(Filter filter) {
     this.filter = filter;
   }
-
-  /**
-   * Uses the {@link org.apache.lucene.search.FilterManager} to keep the cache for a filter on the 
-   * searcher side of a remote connection.
-   * @param reader the index reader for the Filter
-   * @return the bitset
-   * @deprecated Use {@link #getDocIdSet(IndexReader)} instead.
-   */
-  public BitSet bits(IndexReader reader) throws IOException {
-    Filter cachedFilter = FilterManager.getInstance().getFilter(filter);
-    return cachedFilter.bits(reader);
-  }
   
   /**
    * Uses the {@link org.apache.lucene.search.FilterManager} to keep the cache for a filter on the 
Index: contrib/misc/src/test/org/apache/lucene/misc/ChainedFilterTest.java
===================================================================
--- contrib/misc/src/test/org/apache/lucene/misc/ChainedFilterTest.java	(revision 822855)
+++ contrib/misc/src/test/org/apache/lucene/misc/ChainedFilterTest.java	(working copy)
@@ -17,21 +17,31 @@
  * limitations under the License.
  */
 
+import java.util.Calendar;
+
 import junit.framework.TestCase;
-import java.util.*;
-import java.io.IOException;
 
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.WhitespaceAnalyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.IndexWriter.MaxFieldLength;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.CachingWrapperFilter;
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.QueryWrapperFilter;
+import org.apache.lucene.search.Searcher;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TermRangeFilter;
+import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.RAMDirectory;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.WhitespaceAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.search.*;
 
 public class ChainedFilterTest extends TestCase {
   public static final int MAX = 500;
@@ -84,32 +94,7 @@
         new TermQuery(new Term("owner", "sue")));
   }
 
-  private Filter[] getChainWithOldFilters(Filter[] chain) {
-    Filter[] oldFilters = new Filter[chain.length];
-    for (int i = 0; i < chain.length; i++) {
-      final Filter f = chain[i];
-    // create old BitSet-based Filter as wrapper
-      oldFilters[i] = new Filter() {
-        /** @deprecated */
-        public BitSet bits(IndexReader reader) throws IOException {
-          BitSet bits = new BitSet(reader.maxDoc());
-          DocIdSetIterator it = f.getDocIdSet(reader).iterator();  
-          int doc;
-          while((doc = it.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
-            bits.set(doc);
-          }
-          return bits;
-        }
-      };
-    }
-    return oldFilters;
-  }
-  
-  private ChainedFilter getChainedFilter(Filter[] chain, int[] logic, boolean old) {
-    if (old) {
-      chain = getChainWithOldFilters(chain);
-    }
-    
+  private ChainedFilter getChainedFilter(Filter[] chain, int[] logic) {
     if (logic == null) {
       return new ChainedFilter(chain);
     } else {
@@ -117,98 +102,78 @@
     }
   }
 
-  private ChainedFilter getChainedFilter(Filter[] chain, int logic, boolean old) {
-    if (old) {
-      chain = getChainWithOldFilters(chain);
-    }
-    
+  private ChainedFilter getChainedFilter(Filter[] chain, int logic) {
     return new ChainedFilter(chain, logic);
   }
 
   
   public void testSingleFilter() throws Exception {
-    for (int mode = 0; mode < 2; mode++) {
-      boolean old = (mode==0);
-      
-      ChainedFilter chain = getChainedFilter(new Filter[] {dateFilter}, null, old);
-  
-      int numHits = searcher.search(query, chain, 1000).totalHits;
-      assertEquals(MAX, numHits);
-  
-      chain = new ChainedFilter(new Filter[] {bobFilter});
-      numHits = searcher.search(query, chain, 1000).totalHits;
-      assertEquals(MAX / 2, numHits);
-      
-      chain = getChainedFilter(new Filter[] {bobFilter}, new int[] {ChainedFilter.AND}, old);
-      TopDocs hits = searcher.search(query, chain, 1000);
-      numHits = hits.totalHits;
-      assertEquals(MAX / 2, numHits);
-      assertEquals("bob", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
-      
-      chain = getChainedFilter(new Filter[] {bobFilter}, new int[] {ChainedFilter.ANDNOT}, old);
-      hits = searcher.search(query, chain, 1000);
-      numHits = hits.totalHits;
-      assertEquals(MAX / 2, numHits);
-      assertEquals("sue", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
-    }
+    ChainedFilter chain = getChainedFilter(new Filter[] {dateFilter}, null);
+
+    int numHits = searcher.search(query, chain, 1000).totalHits;
+    assertEquals(MAX, numHits);
+
+    chain = new ChainedFilter(new Filter[] {bobFilter});
+    numHits = searcher.search(query, chain, 1000).totalHits;
+    assertEquals(MAX / 2, numHits);
+    
+    chain = getChainedFilter(new Filter[] {bobFilter}, new int[] {ChainedFilter.AND});
+    TopDocs hits = searcher.search(query, chain, 1000);
+    numHits = hits.totalHits;
+    assertEquals(MAX / 2, numHits);
+    assertEquals("bob", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
+    
+    chain = getChainedFilter(new Filter[] {bobFilter}, new int[] {ChainedFilter.ANDNOT});
+    hits = searcher.search(query, chain, 1000);
+    numHits = hits.totalHits;
+    assertEquals(MAX / 2, numHits);
+    assertEquals("sue", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
   }
 
   public void testOR() throws Exception {
-    for (int mode = 0; mode < 2; mode++) {
-      boolean old = (mode==0);
-      ChainedFilter chain = getChainedFilter(
-        new Filter[] {sueFilter, bobFilter}, null, old);
-  
-      int numHits = searcher.search(query, chain, 1000).totalHits;
-      assertEquals("OR matches all", MAX, numHits);
-    }
+    ChainedFilter chain = getChainedFilter(
+      new Filter[] {sueFilter, bobFilter}, null);
+
+    int numHits = searcher.search(query, chain, 1000).totalHits;
+    assertEquals("OR matches all", MAX, numHits);
   }
 
   public void testAND() throws Exception {
-    for (int mode = 0; mode < 2; mode++) {
-      boolean old = (mode==0);
-      ChainedFilter chain = getChainedFilter(
-        new Filter[] {dateFilter, bobFilter}, ChainedFilter.AND, old);
-  
-      TopDocs hits = searcher.search(query, chain, 1000);
-      assertEquals("AND matches just bob", MAX / 2, hits.totalHits);
-      assertEquals("bob", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
-    }
+    ChainedFilter chain = getChainedFilter(
+      new Filter[] {dateFilter, bobFilter}, ChainedFilter.AND);
+
+    TopDocs hits = searcher.search(query, chain, 1000);
+    assertEquals("AND matches just bob", MAX / 2, hits.totalHits);
+    assertEquals("bob", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
   }
 
   public void testXOR() throws Exception {
-    for (int mode = 0; mode < 2; mode++) {
-      boolean old = (mode==0);
-      ChainedFilter chain = getChainedFilter(
-        new Filter[]{dateFilter, bobFilter}, ChainedFilter.XOR, old);
-  
-      TopDocs hits = searcher.search(query, chain, 1000);
-      assertEquals("XOR matches sue", MAX / 2, hits.totalHits);
-      assertEquals("sue", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
-    }
+    ChainedFilter chain = getChainedFilter(
+      new Filter[]{dateFilter, bobFilter}, ChainedFilter.XOR);
+
+    TopDocs hits = searcher.search(query, chain, 1000);
+    assertEquals("XOR matches sue", MAX / 2, hits.totalHits);
+    assertEquals("sue", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
   }
 
   public void testANDNOT() throws Exception {
-    for (int mode = 0; mode < 2; mode++) {
-      boolean old = (mode==0);
-      ChainedFilter chain = getChainedFilter(
-        new Filter[]{dateFilter, sueFilter},
-          new int[] {ChainedFilter.AND, ChainedFilter.ANDNOT}, old);
-  
-      TopDocs hits = searcher.search(query, chain, 1000);
-      assertEquals("ANDNOT matches just bob",
+    ChainedFilter chain = getChainedFilter(
+      new Filter[]{dateFilter, sueFilter},
+        new int[] {ChainedFilter.AND, ChainedFilter.ANDNOT});
+
+    TopDocs hits = searcher.search(query, chain, 1000);
+    assertEquals("ANDNOT matches just bob",
+        MAX / 2, hits.totalHits);
+    assertEquals("bob", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
+    
+    chain = getChainedFilter(
+        new Filter[]{bobFilter, bobFilter},
+          new int[] {ChainedFilter.ANDNOT, ChainedFilter.ANDNOT});
+
+      hits = searcher.search(query, chain, 1000);
+      assertEquals("ANDNOT bob ANDNOT bob matches all sues",
           MAX / 2, hits.totalHits);
-      assertEquals("bob", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
-      
-      chain = getChainedFilter(
-          new Filter[]{bobFilter, bobFilter},
-            new int[] {ChainedFilter.ANDNOT, ChainedFilter.ANDNOT}, old);
-  
-        hits = searcher.search(query, chain, 1000);
-        assertEquals("ANDNOT bob ANDNOT bob matches all sues",
-            MAX / 2, hits.totalHits);
-        assertEquals("sue", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
-    }
+      assertEquals("sue", searcher.doc(hits.scoreDocs[0].doc).get("owner"));
   }
 
   /*
Index: contrib/queries/src/test/org/apache/lucene/search/BooleanFilterTest.java
===================================================================
--- contrib/queries/src/test/org/apache/lucene/search/BooleanFilterTest.java	(revision 822855)
+++ contrib/queries/src/test/org/apache/lucene/search/BooleanFilterTest.java	(working copy)
@@ -18,24 +18,17 @@
  */
 
 import java.io.IOException;
-import java.util.BitSet;
 
+import junit.framework.TestCase;
+
 import org.apache.lucene.analysis.WhitespaceAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanFilter;
-import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.FilterClause;
-import org.apache.lucene.search.TermRangeFilter;
 import org.apache.lucene.store.RAMDirectory;
-import org.apache.lucene.util.DocIdBitSet;
 
-import junit.framework.TestCase;
-
 public class BooleanFilterTest extends TestCase
 {
 	private RAMDirectory directory;
@@ -67,37 +60,15 @@
 		writer.addDocument(doc);
 	}
 	
-  private Filter getOldBitSetFilter(final Filter filter) {
-    
-    return new Filter() {
-      public BitSet bits(IndexReader reader) throws IOException {
-        BitSet bits = new BitSet(reader.maxDoc());
-        DocIdSetIterator it = filter.getDocIdSet(reader).iterator();
-        while(it.next()) {
-          bits.set(it.doc());
-        }
-        return bits;
-      }
-    };
-  }
-
-	
-  private Filter getRangeFilter(String field,String lowerPrice, String upperPrice, boolean old)
+  private Filter getRangeFilter(String field,String lowerPrice, String upperPrice)
 	{
     Filter f = new TermRangeFilter(field,lowerPrice,upperPrice,true,true);
-    if (old) {
-      return getOldBitSetFilter(f);
-    }
-    
     return f;
 	}
-  private Filter getTermsFilter(String field,String text, boolean old)
+  private Filter getTermsFilter(String field,String text)
 	{
 		TermsFilter tf=new TermsFilter();
 		tf.addTerm(new Term(field,text));
-    if (old) {
-      return getOldBitSetFilter(tf);
-    }
     
 		return tf;
 	}
@@ -116,107 +87,73 @@
 		
 	public void testShould() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getTermsFilter("price","030", old),BooleanClause.Occur.SHOULD));
-      tstFilterCard("Should retrieves only 1 doc",1,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getTermsFilter("price","030"),BooleanClause.Occur.SHOULD));
+    tstFilterCard("Should retrieves only 1 doc",1,booleanFilter);
 	}
 	
 	public void testShoulds() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030", old),BooleanClause.Occur.SHOULD));
-      tstFilterCard("Shoulds are Ored together",5,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030"),BooleanClause.Occur.SHOULD));
+    tstFilterCard("Shoulds are Ored together",5,booleanFilter);
 	}
 	public void testShouldsAndMustNot() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getTermsFilter("inStock", "N"),BooleanClause.Occur.MUST_NOT));
+    tstFilterCard("Shoulds Ored but AndNot",4,booleanFilter);
 
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getTermsFilter("inStock", "N", old),BooleanClause.Occur.MUST_NOT));
-      tstFilterCard("Shoulds Ored but AndNot",4,booleanFilter);
-  
-      booleanFilter.add(new FilterClause(getTermsFilter("inStock", "Maybe", old),BooleanClause.Occur.MUST_NOT));
-      tstFilterCard("Shoulds Ored but AndNots",3,booleanFilter);
-    }
-		
+    booleanFilter.add(new FilterClause(getTermsFilter("inStock", "Maybe"),BooleanClause.Occur.MUST_NOT));
+    tstFilterCard("Shoulds Ored but AndNots",3,booleanFilter);
 	}
 	public void testShouldsAndMust() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin", old),BooleanClause.Occur.MUST));
-      tstFilterCard("Shoulds Ored but MUST",3,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin"),BooleanClause.Occur.MUST));
+    tstFilterCard("Shoulds Ored but MUST",3,booleanFilter);
 	}
 	public void testShouldsAndMusts() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin", old),BooleanClause.Occur.MUST));
-      booleanFilter.add(new FilterClause(getRangeFilter("date","20040101", "20041231", old),BooleanClause.Occur.MUST));
-      tstFilterCard("Shoulds Ored but MUSTs ANDED",1,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getRangeFilter("price","010", "020"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getRangeFilter("price","020", "030"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin"),BooleanClause.Occur.MUST));
+    booleanFilter.add(new FilterClause(getRangeFilter("date","20040101", "20041231"),BooleanClause.Occur.MUST));
+    tstFilterCard("Shoulds Ored but MUSTs ANDED",1,booleanFilter);
 	}
 	public void testShouldsAndMustsAndMustNot() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getRangeFilter("price","030", "040", old),BooleanClause.Occur.SHOULD));
-      booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin", old),BooleanClause.Occur.MUST));
-      booleanFilter.add(new FilterClause(getRangeFilter("date","20050101", "20051231", old),BooleanClause.Occur.MUST));
-      booleanFilter.add(new FilterClause(getTermsFilter("inStock","N", old),BooleanClause.Occur.MUST_NOT));
-      tstFilterCard("Shoulds Ored but MUSTs ANDED and MustNot",0,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getRangeFilter("price","030", "040"),BooleanClause.Occur.SHOULD));
+    booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin"),BooleanClause.Occur.MUST));
+    booleanFilter.add(new FilterClause(getRangeFilter("date","20050101", "20051231"),BooleanClause.Occur.MUST));
+    booleanFilter.add(new FilterClause(getTermsFilter("inStock","N"),BooleanClause.Occur.MUST_NOT));
+    tstFilterCard("Shoulds Ored but MUSTs ANDED and MustNot",0,booleanFilter);
 	}
 	
 	public void testJustMust() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin", old),BooleanClause.Occur.MUST));
-      tstFilterCard("MUST",3,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getTermsFilter("accessRights", "admin"),BooleanClause.Occur.MUST));
+    tstFilterCard("MUST",3,booleanFilter);
 	}
 	public void testJustMustNot() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getTermsFilter("inStock","N", old),BooleanClause.Occur.MUST_NOT));
-      tstFilterCard("MUST_NOT",4,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getTermsFilter("inStock","N"),BooleanClause.Occur.MUST_NOT));
+    tstFilterCard("MUST_NOT",4,booleanFilter);
 	}
 	public void testMustAndMustNot() throws Throwable
 	{
-    for (int i = 0; i < 2; i++) {
-      boolean old = (i==0);
-
-      BooleanFilter booleanFilter = new BooleanFilter();
-      booleanFilter.add(new FilterClause(getTermsFilter("inStock","N", old),BooleanClause.Occur.MUST));
-      booleanFilter.add(new FilterClause(getTermsFilter("price","030", old),BooleanClause.Occur.MUST_NOT));
-      tstFilterCard("MUST_NOT wins over MUST for same docs",0,booleanFilter);
-    }
+    BooleanFilter booleanFilter = new BooleanFilter();
+    booleanFilter.add(new FilterClause(getTermsFilter("inStock","N"),BooleanClause.Occur.MUST));
+    booleanFilter.add(new FilterClause(getTermsFilter("price","030"),BooleanClause.Occur.MUST_NOT));
+    tstFilterCard("MUST_NOT wins over MUST for same docs",0,booleanFilter);
 	}
 }
Index: contrib/queries/src/java/org/apache/lucene/search/TermsFilter.java
===================================================================
--- contrib/queries/src/java/org/apache/lucene/search/TermsFilter.java	(revision 822855)
+++ contrib/queries/src/java/org/apache/lucene/search/TermsFilter.java	(working copy)
@@ -49,36 +49,6 @@
 		terms.add(term);
 	}
 	
-	
-
-	/* (non-Javadoc)
-	 * @see org.apache.lucene.search.Filter#bits(org.apache.lucene.index.IndexReader)
-	 */
-	public BitSet bits(IndexReader reader) throws IOException
-	{
-		BitSet result=new BitSet(reader.maxDoc());
-        TermDocs td = reader.termDocs();
-        try
-        {
-            for (Iterator iter = terms.iterator(); iter.hasNext();)
-            {
-                Term term = (Term) iter.next();
-                td.seek(term);
-                while (td.next())
-                {
-                    result.set(td.doc());
-                }
-            }
-        }
-        finally
-        {
-            td.close();
-        }
-        return result;
-	}
-
-
-
 /* (non-Javadoc)
    * @see org.apache.lucene.search.Filter#getDocIdSet(org.apache.lucene.index.IndexReader)
 	 */
