| using System.Collections; | 
 | using System.Collections.Generic; | 
 | using System.Xml; | 
 |  | 
 | namespace OfficeOpenXml; | 
 |  | 
 | public class ExcelProtectedRangeCollection : XmlHelper, IEnumerable<ExcelProtectedRange> { | 
 |   internal ExcelProtectedRangeCollection(XmlNamespaceManager nsm, XmlNode topNode) | 
 |       : base(nsm, topNode) { | 
 |     foreach (XmlNode protectedRangeNode in topNode.SelectNodes( | 
 |         "d:protectedRanges/d:protectedRange", | 
 |         nsm)) { | 
 |       if (!(protectedRangeNode is XmlElement)) { | 
 |         continue; | 
 |       } | 
 |       _baseList.Add(new(nsm, topNode)); | 
 |     } | 
 |   } | 
 |  | 
 |   private readonly List<ExcelProtectedRange> _baseList = new(); | 
 |  | 
 |   public ExcelProtectedRange this[int index] => _baseList[index]; | 
 |  | 
 |   IEnumerator<ExcelProtectedRange> IEnumerable<ExcelProtectedRange>.GetEnumerator() { | 
 |     return _baseList.GetEnumerator(); | 
 |   } | 
 |  | 
 |   IEnumerator IEnumerable.GetEnumerator() { | 
 |     return _baseList.GetEnumerator(); | 
 |   } | 
 | } |