     ///   - streamTask:   The stream task that has been completed.
     ///   - inputStream:  The created input stream. This InputStream object is unopened.
     ///   - outputStream: The created output stream. This OutputStream object is unopened
+    @available(iOS 9.0, OSX 10.11, *)
     public func urlSession(_ session: URLSession, streamTask: URLSessionStreamTask, didBecome inputStream: InputStream, outputStream: OutputStream) {
         streamTaskOfSessionDidBecomeInOutStream?(streamTask, session, inputStream, outputStream)
     }

    ///   - session: The session collecting the metrics.
    ///   - task:    The task whose metrics have been collected.
    ///   - metrics: The collected metrics.
    @available(OSX 10.12, *)
    public func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
        taskOfSessionDidFinishCollecting?(task, session, metrics)
    }

    /// - Parameters:
    ///   - session:    The session of the stream task that discovered a better route.
    ///   - streamTask: The stream task that discovered a better route.
    @available(iOS 9.0, OSX 10.11, *)
    public func urlSession(_ session: URLSession, betterRouteDiscoveredFor streamTask: URLSessionStreamTask) {
        streamTaskOfSessionBetterRouteDiscovered?(streamTask, session)
    }
