public object Clone()
{
var sis = (SegmentInfos)base.MemberwiseClone();
// deep clone, first recreate all collections:
sis.segments = new List<SegmentCommitInfo>(Size());
foreach (SegmentCommitInfo info in segments)
{
Debug.Assert(info.Info.Codec != null);
// dont directly access segments, use add method!!!
sis.Add((SegmentCommitInfo)(info.Clone()));
}
sis._userData = new Dictionary<string, string>(_userData);
return sis;
}