setUndoData(undoData, cachedUndoDataForSilent, isSilent) {
    if (cachedUndoDataForSilent) {
      undoData = cachedUndoDataForSilent;
    }

    if (!isSilent) {
      extend(this.undoData, undoData);
      cachedUndoDataForSilent = null;
    } else if (!cachedUndoDataForSilent) {
      cachedUndoDataForSilent = undoData;
    }

    return cachedUndoDataForSilent;
  }
Set undoData action
@param {Object} undoData - maked undo data
@param {Object} cachedUndoDataForSilent - cached undo data
@param {boolean} isSilent - is silent execution or not
@returns {Object} cachedUndoDataForSilent