     }
     
     @warn_unused_result
-    func replaceEmpty(with: Value) -> Distillate<Value> {
-        return replaceEmpty { with }
+    func replaceEmpty(@autoclosure(escaping) with: () -> Value) -> Distillate<Value> {
+        return replaceEmpty { with() }
     }
     
     @warn_unused_result

import Foundation

public struct Distillate<Value>: DistillateType {
    private let process: () throws -> Value
    
    init(_ process: () throws -> Value) {
        self.process = process
    }
    
    @warn_unused_result
    public func to(_: Value.Type) throws -> Value {
        return try process()
    }
    
    @warn_unused_result
    public func value() throws -> Value {
        return try process()
    }
}

public struct SecureDistillate<Value>: DistillateType {
    private let process: () -> Value
    
    init(_ process: () -> Value) {
        self.process = process
    }
    
    @warn_unused_result
    public func to(_: Value.Type) -> Value {
        return process()
    }
    
    @warn_unused_result
    public func value() throws -> Value {
        return process()
    }
}


    }
    
    @warn_unused_result
    func replaceNil(@autoclosure(escaping) with: () -> Value.Wrapped) -> Distillate<Value.Wrapped> {
        return replaceNil { with() }
    }
    
    @warn_unused_result
