I need to assert that a base `WorkItem` is passed once to a method and that a derived `SendEmailWorkItem` is passed once.

```
repo = new Mock<IWorkItemRepository>();
repo.Setup(x => x.Add(It.IsAny<WorkItem>())).Verifiable();
repo.Setup(x => x.Add(It.Is<SendEmailWorkItem>(wi => wi.ResponsibleId == responsibleGuid))).Verifiable();

```

Moq says that the first expectation occurs twice and the second 0 times. I understand that happens because the types are in the same inheritance hierarchy. (Assertions below are in MSpec syntax)

```
It should_add_new_claim_workitem = () => repo.Verify(x => x.Add(MockIt.IsAny<WorkItem>()), Times.Once());
It should_add_security_service_notification_workitem_with_same_responsible_as_new_claim = () => repo.Verify(x => x.Add(MockIt.Is<SendEmailWorkItem>(wi => wi.ResponsibleId == responsibleGuid)), Times.Once());

```

How do I restrict the expectations based on the type?