 		XCTAssertEqual(x, 1, "Multiple Dispose should be safe, but a noop")
 	}
 
+	// Transfer should create a new scope with the same callback, leaving the original scope without a callback
 	func testTransfer() {
 		var x = 0
 		let scope = Scope {

		transferred.dispose()
		XCTAssertEqual(x, 1, "Transferred scope should call the original callback")
	}

    static var allTests : [(String, (scopeTests) -> () throws -> Void)] {
        return [
            ("Dispose should nil the callback", testDisposeCleanup),
            ("Dispose should call the callback", testDispose),
            ("Transfer should create a new scope with the same callback, leaving the original scope without a callback", testTransfer),
        ]
    }
}


class scopeTests: XCTestCase
{
	// Dispose should nil the callback
    func testDisposeCleanup() {
		let scope = Scope {}
		scope.dispose()
        XCTAssertNil(scope.disposeFunc)
    }

	// Dispose should call the callback
	func testDispose() {
		var x = 0
		let scope = Scope {
