Inheritance: ICloneable, IDocumentStateEngine
            public IndentStack(TypeScriptIndentEngine engine, int capacity)
            {
                this.engine = engine;
                if (capacity < InitialCapacity)
                    capacity = InitialCapacity;

                this.stack = new Node [capacity];
                this.count = 0;
            }
        // Clone the TypeScriptIndentEngine - useful if a consumer of this class wants
        // to test things w/o changing the real indent engine state
        public object Clone()
        {
            var engine = new TypeScriptIndentEngine (policy, textPolicy);

            engine.stack = (IndentStack) stack.Clone ();
            engine.linebuf = new StringBuilder (linebuf.ToString (), linebuf.Capacity);

            engine.keyword = keyword;
            engine.currIndent = currIndent;

            engine.needsReindent = needsReindent;
            engine.popVerbatim = popVerbatim;
            engine.canBeLabel = canBeLabel;
            engine.isEscaped = isEscaped;

            engine.firstNonLwsp = firstNonLwsp;
            engine.lastNonLwsp = lastNonLwsp;
            engine.wordStart = wordStart;

            engine.prc = prc;
            engine.pc = pc;
            engine.rc = rc;

            engine.currLineNumber = currLineNumber;
            engine.cursor = cursor;

            return engine;
        }
 public IndentStack(TypeScriptIndentEngine engine)
     : this(engine, InitialCapacity)
 {
 }