public IEvent transformEvent(TodoItemNameChanged toTransform, IEvent transformAgainst)
 {
     if (transformAgainst.GetType().Equals(typeof(TodoItemCreated)))
     {
         //Change a name on an item that has been created server side without this side knowing, impossible.
     }
     else if (transformAgainst.GetType().Equals(typeof(TodoItemDeleted)))
     {
         if (toTransform.aggregateId == ((TodoItemDeleted)transformAgainst).aggregateId)
             //Delete todo item when other side has also deleted it. No problem, remove this event.
             return new Unused();
     }
     else if (transformAgainst.GetType().Equals(typeof(TodoItemNameChanged)))
     {
         // If it is the exact same, remove the event.
         if (toTransform.Equals((TodoItemNameChanged)transformAgainst))
             return new Unused();
         // If it is On the same aggregate but not the same, conflict.
         else if (toTransform.aggregateId == ((TodoItemNameChanged)transformAgainst).aggregateId)
             return null;
     }
     else if (transformAgainst.GetType().Equals(typeof(TodoItemsDeleted)))
     {
         //If the item deleted is deleted by multiple on the server, remove this event
         if (((TodoItemsDeleted)transformAgainst).aggregateIds.Contains(toTransform.aggregateId))
             return new Unused();
     }
     return toTransform;
 }