 
    - Throws: `FilterError.StreamInitError` if stream initialization failed
    */
-  public init(_ operation: FilterOperation,
-              using algorithm : Algorithm,
-              bufferCapacity : Int = 65536,
-              writingTo writeFunc: @escaping (Data?) throws -> () ) throws
-  {
+  public init(
+    _ operation: FilterOperation,
+    using algorithm: Algorithm,
+    bufferCapacity: Int = 65536,
+    writingTo writeFunc: @escaping (Data?) throws -> ()
+  ) throws {
     _stream = try compression_stream(operation: operation, algorithm: algorithm)
     _buf = UnsafeMutablePointer<UInt8>.allocate(capacity: bufferCapacity)
     _bufCapacity = bufferCapacity

   - Parameter data: data to process

   - Throws:
   `FilterError.FilterProcessError` if an error occurs during processing
   `FilterError.WriteToFinalizedFilter` if `data` is not empty/nil, and the filter is the finalized state
   */
  public func write(_ data: Data?) throws
  {
    // Finalize if data is empty/nil
    if data == nil || data!.isEmpty { try finalize() ; return }

    // Fail if already finalized
    if _finalized { throw FilterError.WriteToFinalizedFilter }

    // Process all incoming data
    try data!.withUnsafeBytes { (src_ptr: UnsafePointer<UInt8>) in

   - bufferCapacity: capacity of the internal data buffer
   - readFunc: called to read the input data

   - Throws: `FilterError.filterInitError` if filter initialization failed
   */
  public init(
    _ operation: FilterOperation,
    using algorithm: Algorithm,
    bufferCapacity: Int = 65536,
    readingFrom readFunc: @escaping (Int) throws -> Data?
  ) throws {
    _stream = try compression_stream(operation: operation, algorithm: algorithm)
    _bufCapacity = bufferCapacity
    _readFunc = readFunc
