//bug add also for reference type assertions
 public static async Task SynchronizeAsyncAccessTo <T>(
     this ObjectAssertions assertions,
     Func <T, Task> callToCheck,
     ILockAssertions lockAssertions,
     T wrappedObjectMock)
     where T : class
 {
     await SynchronizationAssertions.SynchronizesAsync(
         (T)assertions.Subject,
         callToCheck,
         lockAssertions,
         wrappedObjectMock);
 }
 public static void SynchronizeAccessTo <T>(
     this ObjectAssertions assertions,
     Action <T> callToCheck,
     ILockAssertions lockAssertions,
     T wrappedObjectMock)
     where T : class
 {
     SynchronizationAssertions.Synchronizes(
         (T)assertions.Subject,
         callToCheck,
         lockAssertions,
         wrappedObjectMock);
 }
 public static void SynchronizeAccessTo <T, TAssertions>(
     this ReferenceTypeAssertions <T, TAssertions> assertions,
     Action <T> callToCheck,
     ILockAssertions lockAssertions,
     T wrappedObjectMock)
     where T : class
     where TAssertions : ReferenceTypeAssertions <T, TAssertions>
 {
     SynchronizationAssertions.Synchronizes(
         assertions.Subject,
         callToCheck,
         lockAssertions,
         wrappedObjectMock);
 }