     private var connections: [PortConnection] = []
 
     static func add(connection: PortConnection) {
-        precondition(contexts.count > 0, "No avaliable PortConnectionsBuildingContext. You can only use `=>` operator in FilterGraph.makeImage function.")
+        precondition(contexts.count > 0, "No avaliable PortConnectionsBuildingContext. You can only use `=>` operator in FilterGraph.makeImage or FilterGraph.connect function.")
         contexts[contexts.count - 1].connections.append(connection)
     }
         

        var image: MTIImage?
    }
    
    public static func makeImage(builder: (Port<ImageReceiver,MTIImage?,WritableKeyPath<ImageReceiver,MTIImage?>>) -> Void) -> MTIImage? {
        return makeImage(input: ()) { _, output in
            builder(output)
        }
    }
    
    private static let builderLock = MTILockCreate()
    
    public static func makeImage<T>(input: T, builder: (T, Port<ImageReceiver,MTIImage?,WritableKeyPath<ImageReceiver,MTIImage?>>) -> Void) -> MTIImage?  {
        let outputReceiver = ImageReceiver()
        

            connection.connect(context: context)
        }
        return outputReceiver.image
    }
    
    public static func connect(builder: () -> Void) {
        builderLock.lock()
        PortConnectionsBuildingContext.push()
        builder()
        let connections = PortConnectionsBuildingContext.pop()
        builderLock.unlock()
        let context = PortConnectionContext()
        for connection in connections {
            connection.connect(context: context)
        }
    }
    
    public static func makeImage(builder: (Port<ImageReceiver,MTIImage?,WritableKeyPath<ImageReceiver,MTIImage?>>) -> Void) -> MTIImage? {
        return makeImage(input: ()) { _, output in
            builder(output)
        }
    }
}

