         override class func process(with inputs: [CIImageProcessorInput]?, arguments: [String: Any]?, output: CIImageProcessorOutput) throws {
             
             guard let commandBuffer = output.metalCommandBuffer else { return }
-            guard let source = inputs?.first?.metalTexture else { return }
+            guard let source = inputs?[0].metalTexture else { return }
+            guard let source_region = inputs?[0].region else { return }
             guard let destination = output.metalTexture else { return }
             guard let radius = arguments?["radius"] as? Size else { return }
             

            return areaMin.outputImage
            
        } else {
            
            let _extent = extent.isInfinite ? extent : extent.insetBy(dx: .random(in: -1..<0), dy: .random(in: -1..<0))
            

            
        } else {
            
            let extent = self.extent.insetBy(dx: CGFloat(-ceil(abs(radius.width))), dy: CGFloat(-ceil(abs(radius.height))))
            
            let _extent = extent.isInfinite ? extent : extent.insetBy(dx: .random(in: -1..<0), dy: .random(in: -1..<0))
            
            guard var rendered = try? AreaMaxKernel.apply(withExtent: _extent, inputs: [self], arguments: ["radius": radius]) else { return nil }
