| using System; | 
 | using OfficeOpenXml.FormulaParsing.ExcelUtilities; | 
 |  | 
 | namespace OfficeOpenXml.FormulaParsing; | 
 |  | 
 | /// <summary> | 
 | /// Represents a parsing of a single input or workbook addrses. | 
 | /// </summary> | 
 | public class ParsingScope : IDisposable { | 
 |   private readonly ParsingScopes _parsingScopes; | 
 |  | 
 |   public ParsingScope(ParsingScopes parsingScopes, RangeAddress address) | 
 |       : this(parsingScopes, null, address) {} | 
 |  | 
 |   public ParsingScope(ParsingScopes parsingScopes, ParsingScope parent, RangeAddress address) { | 
 |     _parsingScopes = parsingScopes; | 
 |     Parent = parent; | 
 |     Address = address; | 
 |     ScopeId = Guid.NewGuid(); | 
 |   } | 
 |  | 
 |   /// <summary> | 
 |   /// Id of the scope. | 
 |   /// </summary> | 
 |   public Guid ScopeId { get; private set; } | 
 |  | 
 |   /// <summary> | 
 |   /// The calling scope. | 
 |   /// </summary> | 
 |   public ParsingScope Parent { get; private set; } | 
 |  | 
 |   /// <summary> | 
 |   /// The address of the cell currently beeing parsed. | 
 |   /// </summary> | 
 |   public RangeAddress Address { get; private set; } | 
 |  | 
 |   /// <summary> | 
 |   /// True if the current scope is a Subtotal function beeing executed. | 
 |   /// </summary> | 
 |   public bool IsSubtotal { get; set; } | 
 |  | 
 |   public void Dispose() { | 
 |     _parsingScopes.KillScope(this); | 
 |   } | 
 | } |