   let base: Base
 
   @usableFromInline
-  let predicate: (Element, Element) async -> Bool
+  let predicate: @Sendable (Element, Element) async -> Bool
   
-  init(_ base: Base, predicate: @escaping (Element, Element) async -> Bool) {
+  init(_ base: Base, predicate: @escaping @Sendable (Element, Element) async -> Bool) {
     self.base = base
     self.predicate = predicate
   }

}

extension AsyncSequence {
  public func removeDuplicates(by predicate: @escaping (Element, Element) async -> Bool) -> AsyncRemoveDuplicatesSequence<Self> {
    return AsyncRemoveDuplicatesSequence(self, predicate: predicate)
  }
  
  public func removeDuplicates(by predicate: @escaping (Element, Element) async throws -> Bool) -> AsyncThrowingRemoveDuplicatesSequence<Self> {
    return AsyncThrowingRemoveDuplicatesSequence(self, predicate: predicate)
  }
}

  let base: Base

  @usableFromInline
  let predicate: @Sendable (Element, Element) async throws -> Bool
  
  init(_ base: Base, predicate: @escaping @Sendable (Element, Element) async throws -> Bool) {
    self.base = base
    self.predicate = predicate
  }
