### Eclipse Workspace Patch 1.0
#P Lucene_trunk_writeable
Index: src/java/org/apache/lucene/search/CachingWrapperFilter.java
===================================================================
--- src/java/org/apache/lucene/search/CachingWrapperFilter.java	(revision 832503)
+++ src/java/org/apache/lucene/search/CachingWrapperFilter.java	(working copy)
@@ -29,12 +29,11 @@
  * filters to simply filter, and then wrap with this class to add caching.
  */
 public class CachingWrapperFilter extends Filter {
-  protected Filter filter;
+  // package private for testing
+  Filter filter;
 
-  /**
-   * A transient Filter cache.
-   */
-  protected transient Map<IndexReader, DocIdSet> cache;
+  // package private for testing
+  transient final Map<IndexReader, DocIdSet> cache = new WeakHashMap<IndexReader, DocIdSet>();
 
   /**
    * @param filter Filter to cache results of
@@ -63,10 +62,6 @@
   
   @Override
   public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
-    if (cache == null) {
-      cache = new WeakHashMap<IndexReader, DocIdSet>();
-    }
-
     DocIdSet cached = null;
     synchronized (cache) {  // check cache
       cached = cache.get(reader);
Index: src/java/org/apache/lucene/search/CachingSpanFilter.java
===================================================================
--- src/java/org/apache/lucene/search/CachingSpanFilter.java	(revision 832503)
+++ src/java/org/apache/lucene/search/CachingSpanFilter.java	(working copy)
@@ -28,17 +28,18 @@
  * filters to simply filter, and then wrap with this class to add caching.
  */
 public class CachingSpanFilter extends SpanFilter {
-  protected SpanFilter filter;
+  final SpanFilter filter;
 
   /**
    * A transient Filter cache.
    */
-  protected transient Map<IndexReader,SpanFilterResult> cache;
+  transient Map<IndexReader,SpanFilterResult> cache = 
+    new WeakHashMap<IndexReader,SpanFilterResult>();
 
   /**
    * @param filter Filter to cache results of
    */
-  public CachingSpanFilter(SpanFilter filter) {
+  public CachingSpanFilter(final SpanFilter filter) {
     this.filter = filter;
   }
 
@@ -50,10 +51,6 @@
   
   private SpanFilterResult getCachedResult(IndexReader reader) throws IOException {
     SpanFilterResult result = null;
-    if (cache == null) {
-      cache = new WeakHashMap<IndexReader,SpanFilterResult>();
-    }
-
     synchronized (cache) {  // check cache
       result = cache.get(reader);
       if (result == null) {
@@ -77,6 +74,8 @@
 
   @Override
   public boolean equals(Object o) {
+    if (o == this)
+      return true;
     if (!(o instanceof CachingSpanFilter)) return false;
     return this.filter.equals(((CachingSpanFilter)o).filter);
   }
