anchor.diff:      expected.Status <- MainController.NoUndoActionsStatus
       assertAreEqual expected model
   
  +[<Test>]
  +let ``Redo with empty stack sets status only``() =
  +    let fileSys = Mock.Of<IFileSystemService>()
  +    let contr = createController fileSys
  +    let model = createModel()
  +    model.RedoStack <- []
  +    contr.Redo model
  +
  +    let expected = createModel()
  +    expected.RedoStack <- []
  +    expected.Status <- MainController.NoRedoActionsStatus
  +    assertAreEqual expected model
  +
  +
   [<TestCase(1, false)>]
   [<TestCase(2, false)>]
   [<TestCase(1, true)>]
  
positive.code:     expected.SetErrorStatus (MainController.CannotUndoNonEmptyCreatedStatus createdNode)
      assertAreEqual expected model
  
  
  [<TestCase(true)>]
  [<TestCase(false)>]
  
negative.code:         expected.ForwardStack <- []
      assertAreEqual expected model
  
  
  [<TestCase(false)>]
  [<TestCase(true)>]
  let ``Undo delete or delete permanently sets status message and consumes action`` permanent =
      let fileSys =
          fileSysMock()
              .Setup(fun x -> <@ x.IsEmpty (any()) @>).Returns(false)
              .Create()
      let contr = createController fileSys
      let deletedNode = createNode "path" "deleteMe"
      let undoAction = DeletedItem (deletedNode, permanent)
      let model = createModel()
      model.Path <- Path "other"
      model.UndoStack <- undoAction :: model.UndoStack
      contr.Undo model
  
      let expected = createModel()
      expected.Path <- Path "other"
      expected.SetErrorStatus (MainController.CannotUndoDeleteStatus permanent deletedNode)
      assertAreEqual expected model
  