/** <summary>Get all operations before an index of a particular kind</summary> */
        protected virtual IList <RewriteOperation> GetKindOfOps(IList <RewriteOperation> rewrites, Type kind, int before)
        {
            IList <RewriteOperation> ops = new List <RewriteOperation>();

            for (int i = 0; i < before && i < rewrites.Count; i++)
            {
                RewriteOperation op = rewrites[i];
                if (op == null)
                {
                    continue; // ignore deleted
                }
                if (op.GetType() == kind)
                {
                    ops.Add(op);
                }
            }
            return(ops);
        }
        /// <summary>
        /// Get all operations before an index of a particular kind
        /// </summary>
        protected IList GetKindOfOps(IList rewrites, Type kind, int before)
        {
            IList ops = new ArrayList();

            for (int i = 0; i < before && i < rewrites.Count; i++)
            {
                RewriteOperation op = (RewriteOperation)rewrites[i];
                if (op == null)
                {
                    continue;                             // ignore deleted
                }
                if (op.GetType() == kind)
                {
                    ops.Add(op);
                }
            }
            return(ops);
        }