| using System; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using System.Text; | 
 | 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); | 
 |         } | 
 |     } | 
 | } |