public static void MessagesAreEqual(this Assertions assert, Message expected, Message actual)
 {
     if(expected == null)
     {
         assert.Null(actual);
         return;
     }
     assert.NotNull(actual);
     assert.IsType(expected.GetType(), actual);
     foreach(var method in GetPublicPropertyGetMethods(expected.GetType()))
     {
         assert.Equal(method.Invoke(expected, null), method.Invoke(actual, null));
     }
 }