Index: src/java/org/apache/lucene/index/MultiReader.java
===================================================================
--- src/java/org/apache/lucene/index/MultiReader.java	(revision 724438)
+++ src/java/org/apache/lucene/index/MultiReader.java	(working copy)
@@ -365,8 +365,11 @@
     throw new UnsupportedOperationException("MultiReader does not support this method.");
   }
   
-  // for testing
-  IndexReader[] getSubReaders() {
+  public IndexReader[] getSubReaders() {
     return subReaders;
   }
+  
+  public boolean isMultiReader() {
+    return true;
+  }
 }
Index: src/java/org/apache/lucene/index/IndexReader.java
===================================================================
--- src/java/org/apache/lucene/index/IndexReader.java	(revision 724438)
+++ src/java/org/apache/lucene/index/IndexReader.java	(working copy)
@@ -1134,4 +1134,21 @@
   public static Collection listCommits(Directory dir) throws IOException {
     return DirectoryIndexReader.listCommits(dir);
   }
+  
+  /**
+   * If the subclass of Indexreader represents multiple IndexReaders
+   * then this method returns true.
+   * @return
+   */
+  public boolean isMultiReader() {
+    return false;
+  }
+  
+  /**
+   * If the subclass of the IndexReader represents multiple readers 
+   * this method returns the sub-readers.  By default the returned value is null.  
+   */
+  public IndexReader[] getSubReaders() {
+    return null;
+  }
 }
Index: src/java/org/apache/lucene/index/MultiSegmentReader.java
===================================================================
--- src/java/org/apache/lucene/index/MultiSegmentReader.java	(revision 724438)
+++ src/java/org/apache/lucene/index/MultiSegmentReader.java	(working copy)
@@ -433,7 +433,7 @@
   } 
   
   // for testing
-  SegmentReader[] getSubReaders() {
+  public SegmentReader[] getSubReaders() {
     return subReaders;
   }
 
@@ -650,4 +650,8 @@
       return ((TermPositions) current).isPayloadAvailable();
     }
   }
+  
+  public boolean isMultiReader() {
+    return true;
+  }
 }
