 		}
 
 		func dispose() {
-			guard state.tryDispose() else { return }
-			action?()
-			action = nil
+			if state.tryDispose() {
+				action?()
+				action = nil
+			}
 		}
 	}
 

	}

	public func dispose() {
		guard state.tryDispose() else { return }

		if let disposables = disposables.swap(nil) {
			for disposable in disposables {
				disposable.dispose()
			}

	}

	public func dispose() {
		if state.tryDispose() {
			_inner.swap(nil)?.dispose()
		}
	}

	deinit {
