       values: [T],
       file: StaticString = #file,
       line: UInt = #line)
-      where T.AsyncNinjaWrapped: Equatable {
-      let gettingExpectation = self.expectation(description: "getting \(keyPath) test finished")
-      DispatchQueue.global().async {
-        var updatingIterator = updating.makeIterator()
-        let _ = updatingIterator.next() // skip an initial value
-        for value in values {
-          DispatchQueue.main.sync {
-            object.setValue(value, forKeyPath: keyPath)
-          }
-          usleep(10_000)
-          XCTAssertEqual(updatingIterator.next()?.asyncNinjaOptionalValue, value.asyncNinjaOptionalValue)
-        }
-
-        gettingExpectation.fulfill()
+      where T.AsyncNinjaWrapped: Equatable
+    {
+      var updatingIterator = updating.makeIterator()
+      let _ = updatingIterator.next() // skip an initial value
+      for value in values {
+        object.setValue(value, forKeyPath: keyPath)
+        XCTAssertEqual(updatingIterator.next()?.asyncNinjaOptionalValue, value.asyncNinjaOptionalValue)
       }
-
-      self.waitForExpectations(timeout: 1.0)
     }
-}
+  }
   
 #endif

      keyPath: String,
      values: [T],
      file: StaticString = #file,
      line: UInt = #line) {
      let settingExpectation = self.expectation(description: "setting \(keyPath) test finished")

      let runLoop = RunLoop.current

      DispatchQueue.global().async {
        for value in values {
          updatable.update(value)
          usleep(10_000)
          DispatchQueue.main.sync {
            XCTAssertEqual(object.value(forKeyPath: keyPath) as? T, value)
          }
        }

        settingExpectation.fulfill()
      }

      runLoop.run(until: Date().addingTimeInterval(1.0))
      self.waitForExpectations(timeout: 0.0)

      self.testUpdating(updating: updatable, object: object, keyPath: keyPath, values: values, file: file, line: line)
    }


      keyPath: String,
      values: [T],
      file: StaticString = #file,
      line: UInt = #line)
    {
      var updatingIterator = updating.makeIterator()
      let _ = updatingIterator.next() // skip an initial value
      for value in values {
        object.setValue(value, forKeyPath: keyPath)

        XCTAssertEqual(updatingIterator.next(), value)
      }
    }

    private func testUpdatableProperty<T: AsyncNinjaOptionalAdaptor, Object: NSObject>(
