Index: java/org/apache/lucene/util/CloseableThreadLocal.java
===================================================================
--- java/org/apache/lucene/util/CloseableThreadLocal.java	(revision 695616)
+++ java/org/apache/lucene/util/CloseableThreadLocal.java	(working copy)
@@ -42,12 +42,21 @@
  *  references are cleared and then GC is freely able to
  *  reclaim space by objects stored in it. */
 
-public final class CloseableThreadLocal {
+public class CloseableThreadLocal {
 
   private ThreadLocal t = new ThreadLocal();
 
   private Map hardRefs = new HashMap();
-
+  
+  public CloseableThreadLocal() {
+    Object iv = initialValue();
+    if (iv != null) set(iv);
+  }
+  
+  protected Object initialValue() {
+    return null;
+  }
+  
   public Object get() {
     WeakReference weakRef = (WeakReference) t.get();
     if (weakRef == null)
Index: test/org/apache/lucene/index/TestIndexReaderReopen.java
===================================================================
--- test/org/apache/lucene/index/TestIndexReaderReopen.java	(revision 695616)
+++ test/org/apache/lucene/index/TestIndexReaderReopen.java	(working copy)
@@ -853,7 +853,7 @@
     }
   }
   
-  private static void createIndex(Directory dir, boolean multiSegment) throws IOException {
+  public static void createIndex(Directory dir, boolean multiSegment) throws IOException {
     IndexWriter w = new IndexWriter(dir, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.LIMITED);
     
     w.setMergePolicy(new LogDocMergePolicy());
