You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by cc...@apache.org on 2013/04/03 19:39:48 UTC

[05/51] [partial] Mass convert mixed tabs to spaces

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/62f018ab/src/core/Index/SegmentInfo.cs
----------------------------------------------------------------------
diff --git a/src/core/Index/SegmentInfo.cs b/src/core/Index/SegmentInfo.cs
index 697dda6..4be12ad 100644
--- a/src/core/Index/SegmentInfo.cs
+++ b/src/core/Index/SegmentInfo.cs
@@ -25,345 +25,345 @@ using BitVector = Lucene.Net.Util.BitVector;
 
 namespace Lucene.Net.Index
 {
-	
-	/// <summary> Information about a segment such as it's name, directory, and files related
-	/// to the segment.
-	/// 
-	/// * <p/><b>NOTE:</b> This API is new and still experimental
-	/// (subject to change suddenly in the next release)<p/>
-	/// </summary>
-	public sealed class SegmentInfo : System.ICloneable
-	{
-		
-		internal const int NO = - 1;            // e.g. no norms; no deletes;
-		internal const int YES = 1;             // e.g. have norms; have deletes;
-		internal const int CHECK_DIR = 0;       // e.g. must check dir to see if there are norms/deletions
-		internal const int WITHOUT_GEN = 0;     // a file name that has no GEN in it. 
-		
-		public System.String name;              // unique name in dir
-		public int docCount;                    // number of docs in seg
-		public Directory dir;                   // where segment resides
-		
-		private bool preLockless;               // true if this is a segments file written before
-		                                        // lock-less commits (2.1)
-		
-		private long delGen;                    // current generation of del file; NO if there
-		                                        // are no deletes; CHECK_DIR if it's a pre-2.1 segment
-		                                        // (and we must check filesystem); YES or higher if
-		                                        // there are deletes at generation N
-		
-		private long[] normGen;                 // current generation of each field's norm file.
-		                                        // If this array is null, for lockLess this means no 
-		                                        // separate norms.  For preLockLess this means we must 
-		                                        // check filesystem. If this array is not null, its 
-		                                        // values mean: NO says this field has no separate  
-		                                        // norms; CHECK_DIR says it is a preLockLess segment and    
-		                                        // filesystem must be checked; >= YES says this field  
-		                                        // has separate norms with the specified generation
-		
-		private sbyte isCompoundFile;           // NO if it is not; YES if it is; CHECK_DIR if it's
-		                                        // pre-2.1 (ie, must check file system to see
-		                                        // if <name>.cfs and <name>.nrm exist)         
-		
-		private bool hasSingleNormFile;         // true if this segment maintains norms in a single file; 
-		                                        // false otherwise
-		                                        // this is currently false for segments populated by DocumentWriter
-		                                        // and true for newly created merged segments (both
-		                                        // compound and non compound).
-		
-		private IList<string> files;            // cached list of files that this segment uses
-		                                        // in the Directory
-		
-		internal long sizeInBytes = - 1;        // total byte size of all of our files (computed on demand)
-		
-		private int docStoreOffset;             // if this segment shares stored fields & vectors, this
-		                                        // offset is where in that file this segment's docs begin
-		private System.String docStoreSegment;  // name used to derive fields/vectors file we share with
-		                                        // other segments
-		private bool docStoreIsCompoundFile;    // whether doc store files are stored in compound file (*.cfx)
-		
-		private int delCount;                   // How many deleted docs in this segment, or -1 if not yet known
-		                                        // (if it's an older index)
-		
-		private bool hasProx;                   // True if this segment has any fields with omitTermFreqAndPositions==false
+    
+    /// <summary> Information about a segment such as it's name, directory, and files related
+    /// to the segment.
+    /// 
+    /// * <p/><b>NOTE:</b> This API is new and still experimental
+    /// (subject to change suddenly in the next release)<p/>
+    /// </summary>
+    public sealed class SegmentInfo : System.ICloneable
+    {
+        
+        internal const int NO = - 1;            // e.g. no norms; no deletes;
+        internal const int YES = 1;             // e.g. have norms; have deletes;
+        internal const int CHECK_DIR = 0;       // e.g. must check dir to see if there are norms/deletions
+        internal const int WITHOUT_GEN = 0;     // a file name that has no GEN in it. 
+        
+        public System.String name;              // unique name in dir
+        public int docCount;                    // number of docs in seg
+        public Directory dir;                   // where segment resides
+        
+        private bool preLockless;               // true if this is a segments file written before
+                                                // lock-less commits (2.1)
+        
+        private long delGen;                    // current generation of del file; NO if there
+                                                // are no deletes; CHECK_DIR if it's a pre-2.1 segment
+                                                // (and we must check filesystem); YES or higher if
+                                                // there are deletes at generation N
+        
+        private long[] normGen;                 // current generation of each field's norm file.
+                                                // If this array is null, for lockLess this means no 
+                                                // separate norms.  For preLockLess this means we must 
+                                                // check filesystem. If this array is not null, its 
+                                                // values mean: NO says this field has no separate  
+                                                // norms; CHECK_DIR says it is a preLockLess segment and    
+                                                // filesystem must be checked; >= YES says this field  
+                                                // has separate norms with the specified generation
+        
+        private sbyte isCompoundFile;           // NO if it is not; YES if it is; CHECK_DIR if it's
+                                                // pre-2.1 (ie, must check file system to see
+                                                // if <name>.cfs and <name>.nrm exist)         
+        
+        private bool hasSingleNormFile;         // true if this segment maintains norms in a single file; 
+                                                // false otherwise
+                                                // this is currently false for segments populated by DocumentWriter
+                                                // and true for newly created merged segments (both
+                                                // compound and non compound).
+        
+        private IList<string> files;            // cached list of files that this segment uses
+                                                // in the Directory
+        
+        internal long sizeInBytes = - 1;        // total byte size of all of our files (computed on demand)
+        
+        private int docStoreOffset;             // if this segment shares stored fields & vectors, this
+                                                // offset is where in that file this segment's docs begin
+        private System.String docStoreSegment;  // name used to derive fields/vectors file we share with
+                                                // other segments
+        private bool docStoreIsCompoundFile;    // whether doc store files are stored in compound file (*.cfx)
+        
+        private int delCount;                   // How many deleted docs in this segment, or -1 if not yet known
+                                                // (if it's an older index)
+        
+        private bool hasProx;                   // True if this segment has any fields with omitTermFreqAndPositions==false
 
         private IDictionary<string, string> diagnostics;
-		
-		public override System.String ToString()
-		{
-			return "si: " + dir.ToString() + " " + name + " docCount: " + docCount + " delCount: " + delCount + " delFileName: " + GetDelFileName();
-		}
-		
-		public SegmentInfo(System.String name, int docCount, Directory dir)
-		{
-			this.name = name;
-			this.docCount = docCount;
-			this.dir = dir;
-			delGen = NO;
-			isCompoundFile = (sbyte) (CHECK_DIR);
-			preLockless = true;
-			hasSingleNormFile = false;
-			docStoreOffset = - 1;
-			docStoreSegment = name;
-			docStoreIsCompoundFile = false;
-			delCount = 0;
-			hasProx = true;
-		}
-		
-		public SegmentInfo(System.String name, int docCount, Directory dir, bool isCompoundFile, bool hasSingleNormFile):this(name, docCount, dir, isCompoundFile, hasSingleNormFile, - 1, null, false, true)
-		{
-		}
-		
-		public SegmentInfo(System.String name, int docCount, Directory dir, bool isCompoundFile, bool hasSingleNormFile, int docStoreOffset, System.String docStoreSegment, bool docStoreIsCompoundFile, bool hasProx):this(name, docCount, dir)
-		{
-			this.isCompoundFile = (sbyte) (isCompoundFile?YES:NO);
-			this.hasSingleNormFile = hasSingleNormFile;
-			preLockless = false;
-			this.docStoreOffset = docStoreOffset;
-			this.docStoreSegment = docStoreSegment;
-			this.docStoreIsCompoundFile = docStoreIsCompoundFile;
-			this.hasProx = hasProx;
-			delCount = 0;
-			System.Diagnostics.Debug.Assert(docStoreOffset == - 1 || docStoreSegment != null, "dso=" + docStoreOffset + " dss=" + docStoreSegment + " docCount=" + docCount);
-		}
-		
-		/// <summary> Copy everything from src SegmentInfo into our instance.</summary>
-		internal void Reset(SegmentInfo src)
-		{
-			ClearFiles();
-			name = src.name;
-			docCount = src.docCount;
-			dir = src.dir;
-			preLockless = src.preLockless;
-			delGen = src.delGen;
-			docStoreOffset = src.docStoreOffset;
-			docStoreIsCompoundFile = src.docStoreIsCompoundFile;
-			if (src.normGen == null)
-			{
-				normGen = null;
-			}
-			else
-			{
-				normGen = new long[src.normGen.Length];
-				Array.Copy(src.normGen, 0, normGen, 0, src.normGen.Length);
-			}
-			isCompoundFile = src.isCompoundFile;
-			hasSingleNormFile = src.hasSingleNormFile;
-			delCount = src.delCount;
-		}
+        
+        public override System.String ToString()
+        {
+            return "si: " + dir.ToString() + " " + name + " docCount: " + docCount + " delCount: " + delCount + " delFileName: " + GetDelFileName();
+        }
+        
+        public SegmentInfo(System.String name, int docCount, Directory dir)
+        {
+            this.name = name;
+            this.docCount = docCount;
+            this.dir = dir;
+            delGen = NO;
+            isCompoundFile = (sbyte) (CHECK_DIR);
+            preLockless = true;
+            hasSingleNormFile = false;
+            docStoreOffset = - 1;
+            docStoreSegment = name;
+            docStoreIsCompoundFile = false;
+            delCount = 0;
+            hasProx = true;
+        }
+        
+        public SegmentInfo(System.String name, int docCount, Directory dir, bool isCompoundFile, bool hasSingleNormFile):this(name, docCount, dir, isCompoundFile, hasSingleNormFile, - 1, null, false, true)
+        {
+        }
+        
+        public SegmentInfo(System.String name, int docCount, Directory dir, bool isCompoundFile, bool hasSingleNormFile, int docStoreOffset, System.String docStoreSegment, bool docStoreIsCompoundFile, bool hasProx):this(name, docCount, dir)
+        {
+            this.isCompoundFile = (sbyte) (isCompoundFile?YES:NO);
+            this.hasSingleNormFile = hasSingleNormFile;
+            preLockless = false;
+            this.docStoreOffset = docStoreOffset;
+            this.docStoreSegment = docStoreSegment;
+            this.docStoreIsCompoundFile = docStoreIsCompoundFile;
+            this.hasProx = hasProx;
+            delCount = 0;
+            System.Diagnostics.Debug.Assert(docStoreOffset == - 1 || docStoreSegment != null, "dso=" + docStoreOffset + " dss=" + docStoreSegment + " docCount=" + docCount);
+        }
+        
+        /// <summary> Copy everything from src SegmentInfo into our instance.</summary>
+        internal void Reset(SegmentInfo src)
+        {
+            ClearFiles();
+            name = src.name;
+            docCount = src.docCount;
+            dir = src.dir;
+            preLockless = src.preLockless;
+            delGen = src.delGen;
+            docStoreOffset = src.docStoreOffset;
+            docStoreIsCompoundFile = src.docStoreIsCompoundFile;
+            if (src.normGen == null)
+            {
+                normGen = null;
+            }
+            else
+            {
+                normGen = new long[src.normGen.Length];
+                Array.Copy(src.normGen, 0, normGen, 0, src.normGen.Length);
+            }
+            isCompoundFile = src.isCompoundFile;
+            hasSingleNormFile = src.hasSingleNormFile;
+            delCount = src.delCount;
+        }
 
-	    public IDictionary<string, string> Diagnostics
-	    {
-	        get { return diagnostics; }
-	        internal set { this.diagnostics = value; }
-	    }
+        public IDictionary<string, string> Diagnostics
+        {
+            get { return diagnostics; }
+            internal set { this.diagnostics = value; }
+        }
 
-	    /// <summary> Construct a new SegmentInfo instance by reading a
-		/// previously saved SegmentInfo from input.
-		/// 
-		/// </summary>
-		/// <param name="dir">directory to load from
-		/// </param>
-		/// <param name="format">format of the segments info file
-		/// </param>
-		/// <param name="input">input handle to read segment info from
-		/// </param>
-		internal SegmentInfo(Directory dir, int format, IndexInput input)
-		{
-			this.dir = dir;
-			name = input.ReadString();
-			docCount = input.ReadInt();
-			if (format <= SegmentInfos.FORMAT_LOCKLESS)
-			{
-				delGen = input.ReadLong();
-				if (format <= SegmentInfos.FORMAT_SHARED_DOC_STORE)
-				{
-					docStoreOffset = input.ReadInt();
-					if (docStoreOffset != - 1)
-					{
-						docStoreSegment = input.ReadString();
-						docStoreIsCompoundFile = (1 == input.ReadByte());
-					}
-					else
-					{
-						docStoreSegment = name;
-						docStoreIsCompoundFile = false;
-					}
-				}
-				else
-				{
-					docStoreOffset = - 1;
-					docStoreSegment = name;
-					docStoreIsCompoundFile = false;
-				}
-				if (format <= SegmentInfos.FORMAT_SINGLE_NORM_FILE)
-				{
-					hasSingleNormFile = (1 == input.ReadByte());
-				}
-				else
-				{
-					hasSingleNormFile = false;
-				}
-				int numNormGen = input.ReadInt();
-				if (numNormGen == NO)
-				{
-					normGen = null;
-				}
-				else
-				{
-					normGen = new long[numNormGen];
-					for (int j = 0; j < numNormGen; j++)
-					{
-						normGen[j] = input.ReadLong();
-					}
-				}
-				isCompoundFile = (sbyte) input.ReadByte();
-				preLockless = (isCompoundFile == CHECK_DIR);
-				if (format <= SegmentInfos.FORMAT_DEL_COUNT)
-				{
-					delCount = input.ReadInt();
-					System.Diagnostics.Debug.Assert(delCount <= docCount);
-				}
-				else
-					delCount = - 1;
-				if (format <= SegmentInfos.FORMAT_HAS_PROX)
-					hasProx = input.ReadByte() == 1;
-				else
-					hasProx = true;
-				
-				if (format <= SegmentInfos.FORMAT_DIAGNOSTICS)
-				{
-					diagnostics = input.ReadStringStringMap();
-				}
-				else
-				{
-					diagnostics = new Dictionary<string,string>();
-				}
-			}
-			else
-			{
-				delGen = CHECK_DIR;
-				normGen = null;
-				isCompoundFile = (sbyte) (CHECK_DIR);
-				preLockless = true;
-				hasSingleNormFile = false;
-				docStoreOffset = - 1;
-				docStoreIsCompoundFile = false;
-				docStoreSegment = null;
-				delCount = - 1;
-				hasProx = true;
-				diagnostics = new Dictionary<string,string>();
-			}
-		}
-		
-		internal void  SetNumFields(int numFields)
-		{
-			if (normGen == null)
-			{
-				// normGen is null if we loaded a pre-2.1 segment
-				// file, or, if this segments file hasn't had any
-				// norms set against it yet:
-				normGen = new long[numFields];
-				
-				if (preLockless)
-				{
-					// Do nothing: thus leaving normGen[k]==CHECK_DIR (==0), so that later we know  
-					// we have to check filesystem for norm files, because this is prelockless.
-				}
-				else
-				{
-					// This is a FORMAT_LOCKLESS segment, which means
-					// there are no separate norms:
-					for (int i = 0; i < numFields; i++)
-					{
-						normGen[i] = NO;
-					}
-				}
-			}
-		}
-		
-		/// <summary>Returns total size in bytes of all of files used by
-		/// this segment. 
-		/// </summary>
+        /// <summary> Construct a new SegmentInfo instance by reading a
+        /// previously saved SegmentInfo from input.
+        /// 
+        /// </summary>
+        /// <param name="dir">directory to load from
+        /// </param>
+        /// <param name="format">format of the segments info file
+        /// </param>
+        /// <param name="input">input handle to read segment info from
+        /// </param>
+        internal SegmentInfo(Directory dir, int format, IndexInput input)
+        {
+            this.dir = dir;
+            name = input.ReadString();
+            docCount = input.ReadInt();
+            if (format <= SegmentInfos.FORMAT_LOCKLESS)
+            {
+                delGen = input.ReadLong();
+                if (format <= SegmentInfos.FORMAT_SHARED_DOC_STORE)
+                {
+                    docStoreOffset = input.ReadInt();
+                    if (docStoreOffset != - 1)
+                    {
+                        docStoreSegment = input.ReadString();
+                        docStoreIsCompoundFile = (1 == input.ReadByte());
+                    }
+                    else
+                    {
+                        docStoreSegment = name;
+                        docStoreIsCompoundFile = false;
+                    }
+                }
+                else
+                {
+                    docStoreOffset = - 1;
+                    docStoreSegment = name;
+                    docStoreIsCompoundFile = false;
+                }
+                if (format <= SegmentInfos.FORMAT_SINGLE_NORM_FILE)
+                {
+                    hasSingleNormFile = (1 == input.ReadByte());
+                }
+                else
+                {
+                    hasSingleNormFile = false;
+                }
+                int numNormGen = input.ReadInt();
+                if (numNormGen == NO)
+                {
+                    normGen = null;
+                }
+                else
+                {
+                    normGen = new long[numNormGen];
+                    for (int j = 0; j < numNormGen; j++)
+                    {
+                        normGen[j] = input.ReadLong();
+                    }
+                }
+                isCompoundFile = (sbyte) input.ReadByte();
+                preLockless = (isCompoundFile == CHECK_DIR);
+                if (format <= SegmentInfos.FORMAT_DEL_COUNT)
+                {
+                    delCount = input.ReadInt();
+                    System.Diagnostics.Debug.Assert(delCount <= docCount);
+                }
+                else
+                    delCount = - 1;
+                if (format <= SegmentInfos.FORMAT_HAS_PROX)
+                    hasProx = input.ReadByte() == 1;
+                else
+                    hasProx = true;
+                
+                if (format <= SegmentInfos.FORMAT_DIAGNOSTICS)
+                {
+                    diagnostics = input.ReadStringStringMap();
+                }
+                else
+                {
+                    diagnostics = new Dictionary<string,string>();
+                }
+            }
+            else
+            {
+                delGen = CHECK_DIR;
+                normGen = null;
+                isCompoundFile = (sbyte) (CHECK_DIR);
+                preLockless = true;
+                hasSingleNormFile = false;
+                docStoreOffset = - 1;
+                docStoreIsCompoundFile = false;
+                docStoreSegment = null;
+                delCount = - 1;
+                hasProx = true;
+                diagnostics = new Dictionary<string,string>();
+            }
+        }
+        
+        internal void  SetNumFields(int numFields)
+        {
+            if (normGen == null)
+            {
+                // normGen is null if we loaded a pre-2.1 segment
+                // file, or, if this segments file hasn't had any
+                // norms set against it yet:
+                normGen = new long[numFields];
+                
+                if (preLockless)
+                {
+                    // Do nothing: thus leaving normGen[k]==CHECK_DIR (==0), so that later we know  
+                    // we have to check filesystem for norm files, because this is prelockless.
+                }
+                else
+                {
+                    // This is a FORMAT_LOCKLESS segment, which means
+                    // there are no separate norms:
+                    for (int i = 0; i < numFields; i++)
+                    {
+                        normGen[i] = NO;
+                    }
+                }
+            }
+        }
+        
+        /// <summary>Returns total size in bytes of all of files used by
+        /// this segment. 
+        /// </summary>
         public long SizeInBytes()
-		{
-			if (sizeInBytes == - 1)
-			{
-				IList<string> files = Files();
-				int size = files.Count;
-				sizeInBytes = 0;
-				for (int i = 0; i < size; i++)
-				{
-					System.String fileName = files[i];
-					// We don't count bytes used by a shared doc store
-					// against this segment:
-					if (docStoreOffset == - 1 || !IndexFileNames.IsDocStoreFile(fileName))
-						sizeInBytes += dir.FileLength(fileName);
-				}
-			}
-			return sizeInBytes;
-		}
+        {
+            if (sizeInBytes == - 1)
+            {
+                IList<string> files = Files();
+                int size = files.Count;
+                sizeInBytes = 0;
+                for (int i = 0; i < size; i++)
+                {
+                    System.String fileName = files[i];
+                    // We don't count bytes used by a shared doc store
+                    // against this segment:
+                    if (docStoreOffset == - 1 || !IndexFileNames.IsDocStoreFile(fileName))
+                        sizeInBytes += dir.FileLength(fileName);
+                }
+            }
+            return sizeInBytes;
+        }
 
         public bool HasDeletions()
-		{
-			// Cases:
-			//
-			//   delGen == NO: this means this segment was written
-			//     by the LOCKLESS code and for certain does not have
-			//     deletions yet
-			//
-			//   delGen == CHECK_DIR: this means this segment was written by
-			//     pre-LOCKLESS code which means we must check
-			//     directory to see if .del file exists
-			//
-			//   delGen >= YES: this means this segment was written by
-			//     the LOCKLESS code and for certain has
-			//     deletions
-			//
-			if (delGen == NO)
-			{
-				return false;
-			}
-			else if (delGen >= YES)
-			{
-				return true;
-			}
-			else
-			{
-				return dir.FileExists(GetDelFileName());
-			}
-		}
-		
-		internal void  AdvanceDelGen()
-		{
-			// delGen 0 is reserved for pre-LOCKLESS format
-			if (delGen == NO)
-			{
-				delGen = YES;
-			}
-			else
-			{
-				delGen++;
-			}
-			ClearFiles();
-		}
-		
-		internal void  ClearDelGen()
-		{
-			delGen = NO;
-			ClearFiles();
-		}
-		
-		public System.Object Clone()
-		{
-			SegmentInfo si = new SegmentInfo(name, docCount, dir);
-			si.isCompoundFile = isCompoundFile;
-			si.delGen = delGen;
-			si.delCount = delCount;
-			si.hasProx = hasProx;
-			si.preLockless = preLockless;
-			si.hasSingleNormFile = hasSingleNormFile;
-		    si.diagnostics = new HashMap<string, string>(this.diagnostics);
+        {
+            // Cases:
+            //
+            //   delGen == NO: this means this segment was written
+            //     by the LOCKLESS code and for certain does not have
+            //     deletions yet
+            //
+            //   delGen == CHECK_DIR: this means this segment was written by
+            //     pre-LOCKLESS code which means we must check
+            //     directory to see if .del file exists
+            //
+            //   delGen >= YES: this means this segment was written by
+            //     the LOCKLESS code and for certain has
+            //     deletions
+            //
+            if (delGen == NO)
+            {
+                return false;
+            }
+            else if (delGen >= YES)
+            {
+                return true;
+            }
+            else
+            {
+                return dir.FileExists(GetDelFileName());
+            }
+        }
+        
+        internal void  AdvanceDelGen()
+        {
+            // delGen 0 is reserved for pre-LOCKLESS format
+            if (delGen == NO)
+            {
+                delGen = YES;
+            }
+            else
+            {
+                delGen++;
+            }
+            ClearFiles();
+        }
+        
+        internal void  ClearDelGen()
+        {
+            delGen = NO;
+            ClearFiles();
+        }
+        
+        public System.Object Clone()
+        {
+            SegmentInfo si = new SegmentInfo(name, docCount, dir);
+            si.isCompoundFile = isCompoundFile;
+            si.delGen = delGen;
+            si.delCount = delCount;
+            si.hasProx = hasProx;
+            si.preLockless = preLockless;
+            si.hasSingleNormFile = hasSingleNormFile;
+            si.diagnostics = new HashMap<string, string>(this.diagnostics);
             if (this.diagnostics != null)
             {
                 si.diagnostics = new System.Collections.Generic.Dictionary<string, string>();
@@ -372,14 +372,14 @@ namespace Lucene.Net.Index
                     si.diagnostics.Add(o,diagnostics[o]);
                 }
             }
-			if (normGen != null)
-			{
-				si.normGen = new long[normGen.Length];
-				normGen.CopyTo(si.normGen, 0);
-			}
-			si.docStoreOffset = docStoreOffset;
-			si.docStoreSegment = docStoreSegment;
-			si.docStoreIsCompoundFile = docStoreIsCompoundFile;
+            if (normGen != null)
+            {
+                si.normGen = new long[normGen.Length];
+                normGen.CopyTo(si.normGen, 0);
+            }
+            si.docStoreOffset = docStoreOffset;
+            si.docStoreSegment = docStoreSegment;
+            si.docStoreIsCompoundFile = docStoreIsCompoundFile;
             if (this.files != null)
             {
                 si.files = new System.Collections.Generic.List<string>();
@@ -389,474 +389,474 @@ namespace Lucene.Net.Index
                 }
             }
             
-			return si;
-		}
+            return si;
+        }
 
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
         public System.String GetDelFileName()
-		{
-			if (delGen == NO)
-			{
-				// In this case we know there is no deletion filename
-				// against this segment
-				return null;
-			}
-			else
-			{
-				// If delGen is CHECK_DIR, it's the pre-lockless-commit file format
-				return IndexFileNames.FileNameFromGeneration(name, "." + IndexFileNames.DELETES_EXTENSION, delGen);
-			}
-		}
+        {
+            if (delGen == NO)
+            {
+                // In this case we know there is no deletion filename
+                // against this segment
+                return null;
+            }
+            else
+            {
+                // If delGen is CHECK_DIR, it's the pre-lockless-commit file format
+                return IndexFileNames.FileNameFromGeneration(name, "." + IndexFileNames.DELETES_EXTENSION, delGen);
+            }
+        }
 
         /// <summary> Returns true if this field for this segment has saved a separate norms file (_&lt;segment&gt;_N.sX).
-		/// 
-		/// </summary>
-		/// <param name="fieldNumber">the field index to check
-		/// </param>
-		public bool HasSeparateNorms(int fieldNumber)
-		{
-			if ((normGen == null && preLockless) || (normGen != null && normGen[fieldNumber] == CHECK_DIR))
-			{
-				// Must fallback to directory file exists check:
-				System.String fileName = name + ".s" + fieldNumber;
-				return dir.FileExists(fileName);
-			}
-			else if (normGen == null || normGen[fieldNumber] == NO)
-			{
-				return false;
-			}
-			else
-			{
-				return true;
-			}
-		}
-		
-		/// <summary> Returns true if any fields in this segment have separate norms.</summary>
-		public bool HasSeparateNorms()
-		{
-			if (normGen == null)
-			{
-				if (!preLockless)
-				{
-					// This means we were created w/ LOCKLESS code and no
-					// norms are written yet:
-					return false;
-				}
-				else
-				{
-					// This means this segment was saved with pre-LOCKLESS
-					// code.  So we must fallback to the original
-					// directory list check:
-					System.String[] result = dir.ListAll();
-					if (result == null)
-					{
+        /// 
+        /// </summary>
+        /// <param name="fieldNumber">the field index to check
+        /// </param>
+        public bool HasSeparateNorms(int fieldNumber)
+        {
+            if ((normGen == null && preLockless) || (normGen != null && normGen[fieldNumber] == CHECK_DIR))
+            {
+                // Must fallback to directory file exists check:
+                System.String fileName = name + ".s" + fieldNumber;
+                return dir.FileExists(fileName);
+            }
+            else if (normGen == null || normGen[fieldNumber] == NO)
+            {
+                return false;
+            }
+            else
+            {
+                return true;
+            }
+        }
+        
+        /// <summary> Returns true if any fields in this segment have separate norms.</summary>
+        public bool HasSeparateNorms()
+        {
+            if (normGen == null)
+            {
+                if (!preLockless)
+                {
+                    // This means we were created w/ LOCKLESS code and no
+                    // norms are written yet:
+                    return false;
+                }
+                else
+                {
+                    // This means this segment was saved with pre-LOCKLESS
+                    // code.  So we must fallback to the original
+                    // directory list check:
+                    System.String[] result = dir.ListAll();
+                    if (result == null)
+                    {
                         throw new System.IO.IOException("cannot read directory " + dir + ": ListAll() returned null");
-					}
+                    }
 
-				    IndexFileNameFilter filter = IndexFileNameFilter.Filter;
-					System.String pattern;
-					pattern = name + ".s";
-					int patternLength = pattern.Length;
-					for (int i = 0; i < result.Length; i++)
-					{
-					    string fileName = result[i];
-						if (filter.Accept(null, fileName) && fileName.StartsWith(pattern) && char.IsDigit(fileName[patternLength]))
-							return true;
-					}
-					return false;
-				}
-			}
-			else
-			{
-				// This means this segment was saved with LOCKLESS
-				// code so we first check whether any normGen's are >= 1
-				// (meaning they definitely have separate norms):
-				for (int i = 0; i < normGen.Length; i++)
-				{
-					if (normGen[i] >= YES)
-					{
-						return true;
-					}
-				}
-				// Next we look for any == 0.  These cases were
-				// pre-LOCKLESS and must be checked in directory:
-				for (int i = 0; i < normGen.Length; i++)
-				{
-					if (normGen[i] == CHECK_DIR)
-					{
-						if (HasSeparateNorms(i))
-						{
-							return true;
-						}
-					}
-				}
-			}
-			
-			return false;
-		}
-		
-		/// <summary> Increment the generation count for the norms file for
-		/// this field.
-		/// 
-		/// </summary>
-		/// <param name="fieldIndex">field whose norm file will be rewritten
-		/// </param>
-		internal void  AdvanceNormGen(int fieldIndex)
-		{
-			if (normGen[fieldIndex] == NO)
-			{
-				normGen[fieldIndex] = YES;
-			}
-			else
-			{
-				normGen[fieldIndex]++;
-			}
-			ClearFiles();
-		}
-		
-		/// <summary> Get the file name for the norms file for this field.
-		/// 
-		/// </summary>
-		/// <param name="number">field index
-		/// </param>
-		public System.String GetNormFileName(int number)
-		{
-			System.String prefix;
-			
-			long gen;
-			if (normGen == null)
-			{
-				gen = CHECK_DIR;
-			}
-			else
-			{
-				gen = normGen[number];
-			}
-			
-			if (HasSeparateNorms(number))
-			{
-				// case 1: separate norm
-				prefix = ".s";
-				return IndexFileNames.FileNameFromGeneration(name, prefix + number, gen);
-			}
-			
-			if (hasSingleNormFile)
-			{
-				// case 2: lockless (or nrm file exists) - single file for all norms 
-				prefix = "." + IndexFileNames.NORMS_EXTENSION;
-				return IndexFileNames.FileNameFromGeneration(name, prefix, WITHOUT_GEN);
-			}
-			
-			// case 3: norm file for each field
-			prefix = ".f";
-			return IndexFileNames.FileNameFromGeneration(name, prefix + number, WITHOUT_GEN);
-		}
+                    IndexFileNameFilter filter = IndexFileNameFilter.Filter;
+                    System.String pattern;
+                    pattern = name + ".s";
+                    int patternLength = pattern.Length;
+                    for (int i = 0; i < result.Length; i++)
+                    {
+                        string fileName = result[i];
+                        if (filter.Accept(null, fileName) && fileName.StartsWith(pattern) && char.IsDigit(fileName[patternLength]))
+                            return true;
+                    }
+                    return false;
+                }
+            }
+            else
+            {
+                // This means this segment was saved with LOCKLESS
+                // code so we first check whether any normGen's are >= 1
+                // (meaning they definitely have separate norms):
+                for (int i = 0; i < normGen.Length; i++)
+                {
+                    if (normGen[i] >= YES)
+                    {
+                        return true;
+                    }
+                }
+                // Next we look for any == 0.  These cases were
+                // pre-LOCKLESS and must be checked in directory:
+                for (int i = 0; i < normGen.Length; i++)
+                {
+                    if (normGen[i] == CHECK_DIR)
+                    {
+                        if (HasSeparateNorms(i))
+                        {
+                            return true;
+                        }
+                    }
+                }
+            }
+            
+            return false;
+        }
+        
+        /// <summary> Increment the generation count for the norms file for
+        /// this field.
+        /// 
+        /// </summary>
+        /// <param name="fieldIndex">field whose norm file will be rewritten
+        /// </param>
+        internal void  AdvanceNormGen(int fieldIndex)
+        {
+            if (normGen[fieldIndex] == NO)
+            {
+                normGen[fieldIndex] = YES;
+            }
+            else
+            {
+                normGen[fieldIndex]++;
+            }
+            ClearFiles();
+        }
+        
+        /// <summary> Get the file name for the norms file for this field.
+        /// 
+        /// </summary>
+        /// <param name="number">field index
+        /// </param>
+        public System.String GetNormFileName(int number)
+        {
+            System.String prefix;
+            
+            long gen;
+            if (normGen == null)
+            {
+                gen = CHECK_DIR;
+            }
+            else
+            {
+                gen = normGen[number];
+            }
+            
+            if (HasSeparateNorms(number))
+            {
+                // case 1: separate norm
+                prefix = ".s";
+                return IndexFileNames.FileNameFromGeneration(name, prefix + number, gen);
+            }
+            
+            if (hasSingleNormFile)
+            {
+                // case 2: lockless (or nrm file exists) - single file for all norms 
+                prefix = "." + IndexFileNames.NORMS_EXTENSION;
+                return IndexFileNames.FileNameFromGeneration(name, prefix, WITHOUT_GEN);
+            }
+            
+            // case 3: norm file for each field
+            prefix = ".f";
+            return IndexFileNames.FileNameFromGeneration(name, prefix + number, WITHOUT_GEN);
+        }
 
-	    /// <summary> Returns true if this segment is stored as a compound
-	    /// file; else, false.
-	    /// </summary>
-	    internal void SetUseCompoundFile(bool value)
-	    {
-	        if (value)
-	        {
-	            this.isCompoundFile = (sbyte) (YES);
-	        }
-	        else
-	        {
-	            this.isCompoundFile = (sbyte) (NO);
-	        }
-	        ClearFiles();
-	    }
+        /// <summary> Returns true if this segment is stored as a compound
+        /// file; else, false.
+        /// </summary>
+        internal void SetUseCompoundFile(bool value)
+        {
+            if (value)
+            {
+                this.isCompoundFile = (sbyte) (YES);
+            }
+            else
+            {
+                this.isCompoundFile = (sbyte) (NO);
+            }
+            ClearFiles();
+        }
 
-	    /// <summary> Returns true if this segment is stored as a compound
-	    /// file; else, false.
-	    /// </summary>
+        /// <summary> Returns true if this segment is stored as a compound
+        /// file; else, false.
+        /// </summary>
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
         public bool GetUseCompoundFile()
-	    {
-	        if (isCompoundFile == NO)
-	        {
-	            return false;
-	        }
-	        if (isCompoundFile == YES)
-	        {
-	            return true;
-	        }
-	        return dir.FileExists(name + "." + IndexFileNames.COMPOUND_FILE_EXTENSION);
-	    }
+        {
+            if (isCompoundFile == NO)
+            {
+                return false;
+            }
+            if (isCompoundFile == YES)
+            {
+                return true;
+            }
+            return dir.FileExists(name + "." + IndexFileNames.COMPOUND_FILE_EXTENSION);
+        }
 
-	    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
         public int GetDelCount()
-		{
-			if (delCount == - 1)
-			{
-				if (HasDeletions())
-				{
-					System.String delFileName = GetDelFileName();
-					delCount = new BitVector(dir, delFileName).Count();
-				}
-				else
-					delCount = 0;
-			}
-			System.Diagnostics.Debug.Assert(delCount <= docCount);
-			return delCount;
-		}
-		
-		internal void  SetDelCount(int delCount)
-		{
-			this.delCount = delCount;
-			System.Diagnostics.Debug.Assert(delCount <= docCount);
-		}
+        {
+            if (delCount == - 1)
+            {
+                if (HasDeletions())
+                {
+                    System.String delFileName = GetDelFileName();
+                    delCount = new BitVector(dir, delFileName).Count();
+                }
+                else
+                    delCount = 0;
+            }
+            System.Diagnostics.Debug.Assert(delCount <= docCount);
+            return delCount;
+        }
+        
+        internal void  SetDelCount(int delCount)
+        {
+            this.delCount = delCount;
+            System.Diagnostics.Debug.Assert(delCount <= docCount);
+        }
 
-	    public int DocStoreOffset
-	    {
-	        get { return docStoreOffset; }
-	        internal set
-	        {
-	            docStoreOffset = value;
-	            ClearFiles();
-	        }
-	    }
+        public int DocStoreOffset
+        {
+            get { return docStoreOffset; }
+            internal set
+            {
+                docStoreOffset = value;
+                ClearFiles();
+            }
+        }
 
-	    public bool DocStoreIsCompoundFile
-	    {
-	        get { return docStoreIsCompoundFile; }
-	        internal set
-	        {
-	            docStoreIsCompoundFile = value;
-	            ClearFiles();
-	        }
-	    }
+        public bool DocStoreIsCompoundFile
+        {
+            get { return docStoreIsCompoundFile; }
+            internal set
+            {
+                docStoreIsCompoundFile = value;
+                ClearFiles();
+            }
+        }
 
-	    public string DocStoreSegment
-	    {
-	        get { return docStoreSegment; }
-	    }
+        public string DocStoreSegment
+        {
+            get { return docStoreSegment; }
+        }
 
         internal void SetDocStore(int offset, System.String segment, bool isCompoundFile)
-		{
-			docStoreOffset = offset;
-			docStoreSegment = segment;
-			docStoreIsCompoundFile = isCompoundFile;
-		}
-		
-		/// <summary> Save this segment's info.</summary>
-		internal void  Write(IndexOutput output)
-		{
-			output.WriteString(name);
-			output.WriteInt(docCount);
-			output.WriteLong(delGen);
-			output.WriteInt(docStoreOffset);
-			if (docStoreOffset != - 1)
-			{
-				output.WriteString(docStoreSegment);
-				output.WriteByte((byte) (docStoreIsCompoundFile?1:0));
-			}
-			
-			output.WriteByte((byte) (hasSingleNormFile?1:0));
-			if (normGen == null)
-			{
-				output.WriteInt(NO);
-			}
-			else
-			{
-				output.WriteInt(normGen.Length);
-				for (int j = 0; j < normGen.Length; j++)
-				{
-					output.WriteLong(normGen[j]);
-				}
-			}
-			output.WriteByte((byte) isCompoundFile);
-			output.WriteInt(delCount);
-			output.WriteByte((byte) (hasProx?1:0));
-			output.WriteStringStringMap(diagnostics);
-		}
+        {
+            docStoreOffset = offset;
+            docStoreSegment = segment;
+            docStoreIsCompoundFile = isCompoundFile;
+        }
+        
+        /// <summary> Save this segment's info.</summary>
+        internal void  Write(IndexOutput output)
+        {
+            output.WriteString(name);
+            output.WriteInt(docCount);
+            output.WriteLong(delGen);
+            output.WriteInt(docStoreOffset);
+            if (docStoreOffset != - 1)
+            {
+                output.WriteString(docStoreSegment);
+                output.WriteByte((byte) (docStoreIsCompoundFile?1:0));
+            }
+            
+            output.WriteByte((byte) (hasSingleNormFile?1:0));
+            if (normGen == null)
+            {
+                output.WriteInt(NO);
+            }
+            else
+            {
+                output.WriteInt(normGen.Length);
+                for (int j = 0; j < normGen.Length; j++)
+                {
+                    output.WriteLong(normGen[j]);
+                }
+            }
+            output.WriteByte((byte) isCompoundFile);
+            output.WriteInt(delCount);
+            output.WriteByte((byte) (hasProx?1:0));
+            output.WriteStringStringMap(diagnostics);
+        }
 
-	    public bool HasProx
-	    {
-	        get { return hasProx; }
-	        internal set
-	        {
-	            this.hasProx = value;
-	            ClearFiles();
-	        }
-	    }
+        public bool HasProx
+        {
+            get { return hasProx; }
+            internal set
+            {
+                this.hasProx = value;
+                ClearFiles();
+            }
+        }
 
-	    private void  AddIfExists(IList<string> files, System.String fileName)
-		{
-			if (dir.FileExists(fileName))
-				files.Add(fileName);
-		}
-		
-		/*
-		* Return all files referenced by this SegmentInfo.  The
-		* returns List is a locally cached List so you should not
-		* modify it.
-		*/
-		
-		public IList<string> Files()
-		{
-			
-			if (files != null)
-			{
-				// Already cached:
-				return files;
-			}
+        private void  AddIfExists(IList<string> files, System.String fileName)
+        {
+            if (dir.FileExists(fileName))
+                files.Add(fileName);
+        }
+        
+        /*
+        * Return all files referenced by this SegmentInfo.  The
+        * returns List is a locally cached List so you should not
+        * modify it.
+        */
+        
+        public IList<string> Files()
+        {
+            
+            if (files != null)
+            {
+                // Already cached:
+                return files;
+            }
 
             var fileList = new System.Collections.Generic.List<string>();
-			
-			bool useCompoundFile = GetUseCompoundFile();
-			
-			if (useCompoundFile)
-			{
+            
+            bool useCompoundFile = GetUseCompoundFile();
+            
+            if (useCompoundFile)
+            {
                 fileList.Add(name + "." + IndexFileNames.COMPOUND_FILE_EXTENSION);
-			}
-			else
-			{
-				System.String[] exts = IndexFileNames.NON_STORE_INDEX_EXTENSIONS;
-				for (int i = 0; i < exts.Length; i++)
+            }
+            else
+            {
+                System.String[] exts = IndexFileNames.NON_STORE_INDEX_EXTENSIONS;
+                for (int i = 0; i < exts.Length; i++)
                     AddIfExists(fileList, name + "." + exts[i]);
-			}
-			
-			if (docStoreOffset != - 1)
-			{
-				// We are sharing doc stores (stored fields, term
-				// vectors) with other segments
-				System.Diagnostics.Debug.Assert(docStoreSegment != null);
-				if (docStoreIsCompoundFile)
-				{
+            }
+            
+            if (docStoreOffset != - 1)
+            {
+                // We are sharing doc stores (stored fields, term
+                // vectors) with other segments
+                System.Diagnostics.Debug.Assert(docStoreSegment != null);
+                if (docStoreIsCompoundFile)
+                {
                     fileList.Add(docStoreSegment + "." + IndexFileNames.COMPOUND_FILE_STORE_EXTENSION);
-				}
-				else
-				{
-					System.String[] exts = IndexFileNames.STORE_INDEX_EXTENSIONS;
-					for (int i = 0; i < exts.Length; i++)
+                }
+                else
+                {
+                    System.String[] exts = IndexFileNames.STORE_INDEX_EXTENSIONS;
+                    for (int i = 0; i < exts.Length; i++)
                         AddIfExists(fileList, docStoreSegment + "." + exts[i]);
-				}
-			}
-			else if (!useCompoundFile)
-			{
-				// We are not sharing, and, these files were not
-				// included in the compound file
-				System.String[] exts = IndexFileNames.STORE_INDEX_EXTENSIONS;
-				for (int i = 0; i < exts.Length; i++)
+                }
+            }
+            else if (!useCompoundFile)
+            {
+                // We are not sharing, and, these files were not
+                // included in the compound file
+                System.String[] exts = IndexFileNames.STORE_INDEX_EXTENSIONS;
+                for (int i = 0; i < exts.Length; i++)
                     AddIfExists(fileList, name + "." + exts[i]);
-			}
-			
-			System.String delFileName = IndexFileNames.FileNameFromGeneration(name, "." + IndexFileNames.DELETES_EXTENSION, delGen);
-			if (delFileName != null && (delGen >= YES || dir.FileExists(delFileName)))
-			{
+            }
+            
+            System.String delFileName = IndexFileNames.FileNameFromGeneration(name, "." + IndexFileNames.DELETES_EXTENSION, delGen);
+            if (delFileName != null && (delGen >= YES || dir.FileExists(delFileName)))
+            {
                 fileList.Add(delFileName);
-			}
-			
-			// Careful logic for norms files    
-			if (normGen != null)
-			{
-				for (int i = 0; i < normGen.Length; i++)
-				{
-					long gen = normGen[i];
-					if (gen >= YES)
-					{
-						// Definitely a separate norm file, with generation:
+            }
+            
+            // Careful logic for norms files    
+            if (normGen != null)
+            {
+                for (int i = 0; i < normGen.Length; i++)
+                {
+                    long gen = normGen[i];
+                    if (gen >= YES)
+                    {
+                        // Definitely a separate norm file, with generation:
                         fileList.Add(IndexFileNames.FileNameFromGeneration(name, "." + IndexFileNames.SEPARATE_NORMS_EXTENSION + i, gen));
-					}
-					else if (NO == gen)
-					{
-						// No separate norms but maybe plain norms
-						// in the non compound file case:
-						if (!hasSingleNormFile && !useCompoundFile)
-						{
-							System.String fileName = name + "." + IndexFileNames.PLAIN_NORMS_EXTENSION + i;
-							if (dir.FileExists(fileName))
-							{
+                    }
+                    else if (NO == gen)
+                    {
+                        // No separate norms but maybe plain norms
+                        // in the non compound file case:
+                        if (!hasSingleNormFile && !useCompoundFile)
+                        {
+                            System.String fileName = name + "." + IndexFileNames.PLAIN_NORMS_EXTENSION + i;
+                            if (dir.FileExists(fileName))
+                            {
                                 fileList.Add(fileName);
-							}
-						}
-					}
-					else if (CHECK_DIR == gen)
-					{
-						// Pre-2.1: we have to check file existence
-						System.String fileName = null;
-						if (useCompoundFile)
-						{
-							fileName = name + "." + IndexFileNames.SEPARATE_NORMS_EXTENSION + i;
-						}
-						else if (!hasSingleNormFile)
-						{
-							fileName = name + "." + IndexFileNames.PLAIN_NORMS_EXTENSION + i;
-						}
-						if (fileName != null && dir.FileExists(fileName))
-						{
+                            }
+                        }
+                    }
+                    else if (CHECK_DIR == gen)
+                    {
+                        // Pre-2.1: we have to check file existence
+                        System.String fileName = null;
+                        if (useCompoundFile)
+                        {
+                            fileName = name + "." + IndexFileNames.SEPARATE_NORMS_EXTENSION + i;
+                        }
+                        else if (!hasSingleNormFile)
+                        {
+                            fileName = name + "." + IndexFileNames.PLAIN_NORMS_EXTENSION + i;
+                        }
+                        if (fileName != null && dir.FileExists(fileName))
+                        {
                             fileList.Add(fileName);
-						}
-					}
-				}
-			}
-			else if (preLockless || (!hasSingleNormFile && !useCompoundFile))
-			{
-				// Pre-2.1: we have to scan the dir to find all
-				// matching _X.sN/_X.fN files for our segment:
-				System.String prefix;
-				if (useCompoundFile)
-					prefix = name + "." + IndexFileNames.SEPARATE_NORMS_EXTENSION;
-				else
-					prefix = name + "." + IndexFileNames.PLAIN_NORMS_EXTENSION;
-				int prefixLength = prefix.Length;
-				System.String[] allFiles = dir.ListAll();
-				IndexFileNameFilter filter = IndexFileNameFilter.Filter;
-				for (int i = 0; i < allFiles.Length; i++)
-				{
-					System.String fileName = allFiles[i];
-					if (filter.Accept(null, fileName) && fileName.Length > prefixLength && System.Char.IsDigit(fileName[prefixLength]) && fileName.StartsWith(prefix))
-					{
-						fileList.Add(fileName);
-					}
-				}
-			}
+                        }
+                    }
+                }
+            }
+            else if (preLockless || (!hasSingleNormFile && !useCompoundFile))
+            {
+                // Pre-2.1: we have to scan the dir to find all
+                // matching _X.sN/_X.fN files for our segment:
+                System.String prefix;
+                if (useCompoundFile)
+                    prefix = name + "." + IndexFileNames.SEPARATE_NORMS_EXTENSION;
+                else
+                    prefix = name + "." + IndexFileNames.PLAIN_NORMS_EXTENSION;
+                int prefixLength = prefix.Length;
+                System.String[] allFiles = dir.ListAll();
+                IndexFileNameFilter filter = IndexFileNameFilter.Filter;
+                for (int i = 0; i < allFiles.Length; i++)
+                {
+                    System.String fileName = allFiles[i];
+                    if (filter.Accept(null, fileName) && fileName.Length > prefixLength && System.Char.IsDigit(fileName[prefixLength]) && fileName.StartsWith(prefix))
+                    {
+                        fileList.Add(fileName);
+                    }
+                }
+            }
             //System.Diagnostics.Debug.Assert();
             files = fileList;
-			return files;
-		}
-		
-		/* Called whenever any change is made that affects which
-		* files this segment has. */
-		private void  ClearFiles()
-		{
-			files = null;
-			sizeInBytes = - 1;
-		}
-		
-		/// <summary>Used for debugging </summary>
-		public System.String SegString(Directory dir)
-		{
-			System.String cfs;
-			try
-			{
-				if (GetUseCompoundFile())
-					cfs = "c";
-				else
-					cfs = "C";
-			}
-			catch (System.IO.IOException)
-			{
-				cfs = "?";
-			}
-			
-			System.String docStore;
-			
-			if (docStoreOffset != - 1)
-				docStore = "->" + docStoreSegment;
-			else
-				docStore = "";
-			
-			return name + ":" + cfs + (this.dir == dir?"":"x") + docCount + docStore;
-		}
-		
-		/// <summary>We consider another SegmentInfo instance equal if it
-		/// has the same dir and same name. 
-		/// </summary>
-		public  override bool Equals(System.Object obj)
-		{
+            return files;
+        }
+        
+        /* Called whenever any change is made that affects which
+        * files this segment has. */
+        private void  ClearFiles()
+        {
+            files = null;
+            sizeInBytes = - 1;
+        }
+        
+        /// <summary>Used for debugging </summary>
+        public System.String SegString(Directory dir)
+        {
+            System.String cfs;
+            try
+            {
+                if (GetUseCompoundFile())
+                    cfs = "c";
+                else
+                    cfs = "C";
+            }
+            catch (System.IO.IOException)
+            {
+                cfs = "?";
+            }
+            
+            System.String docStore;
+            
+            if (docStoreOffset != - 1)
+                docStore = "->" + docStoreSegment;
+            else
+                docStore = "";
+            
+            return name + ":" + cfs + (this.dir == dir?"":"x") + docCount + docStore;
+        }
+        
+        /// <summary>We consider another SegmentInfo instance equal if it
+        /// has the same dir and same name. 
+        /// </summary>
+        public  override bool Equals(System.Object obj)
+        {
             if (this == obj) return true;
 
             if (obj is SegmentInfo)
@@ -864,12 +864,12 @@ namespace Lucene.Net.Index
                 SegmentInfo other = (SegmentInfo) obj;
                 return other.dir == dir && other.name.Equals(name);
             }
-		    return false;
-		}
-		
-		public override int GetHashCode()
-		{
-			return dir.GetHashCode() + name.GetHashCode();
-		}
-	}
+            return false;
+        }
+        
+        public override int GetHashCode()
+        {
+            return dir.GetHashCode() + name.GetHashCode();
+        }
+    }
 }
\ No newline at end of file