public bool Restore() { if (null == mRmem) { return(false); } //Pop the addtional stack elements added int newStackCount = mRmem.Stack.Count; if (newStackCount > mRestorePoint) { mRmem.PopFrame(newStackCount - mRestorePoint); } //Restore the old stack elements that is above the frame pointer int count = mStack.Count; for (int i = 0; i < count; i++) { mRmem.Push(mStack[count - 1 - i]); } return(true); }