public T WriteInterleaver <T>(CreateInterleaver <T> createInterleaver) where T : IInterleave
        {
            TextWriter.Flush();
            StoreInterleaver();
            T val = createInterleaver(_interleavingContent.Count, _stream.Position);

            _currentInterleaver = val;
            return(val);
        }
        public T WriteInterleaver <T>(CreateInterleaver <T> createInterleaver) where T : IInterleave
        {
            this.TextWriter.Flush();
            this.StoreInterleaver();
            T val = createInterleaver(((ICollection <IInterleave>) this._interleavingContent).Count, this._stream.Position);

            this._currentInterleaver = (IInterleave)(object)val;
            return(val);
        }