/// ------------------------------------------------------------------------------------
 /// <summary>
 /// Adds the new object for use with redo.
 /// </summary>
 /// <param name="key">The key.</param>
 /// <param name="newObject">The new object.</param>
 /// ------------------------------------------------------------------------------------
 public void AddRedo(CacheKey key, object newObject)
 {
     m_RedoObject = new UndoRedoObject(key, newObject);
 }
 /// ------------------------------------------------------------------------------------
 /// <summary>
 /// Adds the old object for use with undo.
 /// </summary>
 /// <param name="key">The key.</param>
 /// <param name="oldObject">The old object.</param>
 /// ------------------------------------------------------------------------------------
 public void AddUndo(CacheKey key, object oldObject)
 {
     m_UndoObject = new UndoRedoObject(key, oldObject);
 }
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Adds the old object for use with undo.
		/// </summary>
		/// <param name="key">The key.</param>
		/// <param name="oldObject">The old object.</param>
		/// ------------------------------------------------------------------------------------
		public void AddUndo(CacheKey key, object oldObject)
		{
			m_UndoObject = new UndoRedoObject(key, oldObject);
		}
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Adds the new object for use with redo.
		/// </summary>
		/// <param name="key">The key.</param>
		/// <param name="newObject">The new object.</param>
		/// ------------------------------------------------------------------------------------
		public void AddRedo(CacheKey key, object newObject)
		{
			m_RedoObject = new UndoRedoObject(key, newObject);
		}
 private void InitializeUndoRedo()
 {
     undoRedoGates = new UndoRedoObject <List <Gate> >();
     undoRedoWires = new UndoRedoObject <List <Wire> >();
 }