     
     public init(
         loadDataIdentifier        : Identifier,
-        dataLoaderForIdentifier   : AsyncTypes2<Identifier, (DataLoadContext, NSData), NSError>.JAsyncBinder,
+        dataLoaderForIdentifier   : AsyncTypes2<Identifier, (DataLoadContext, NSData), NSError>.AsyncBinder,
         analyzerForData           : JAsyncBinderForIdentifier,
         cacheKeyForIdentifier     : JCacheKeyForIdentifier,
         ignoreFreshDataLoadFail   : Bool,


public class JSmartDataLoaderFields<Identifier, Result, DataLoadContext> {
    
    public typealias JAsyncBinderForIdentifier = (loadDataIdentifier: Identifier) -> AsyncTypes2<(DataRequestContext<DataLoadContext>, NSData), Result, NSError>.JAsyncBinder
    public typealias JCacheKeyForIdentifier    = (loadDataIdentifier: Identifier) -> String
    
    let loadDataIdentifier        : Identifier
    let dataLoaderForIdentifier   : AsyncTypes2<Identifier, (DataLoadContext, NSData), NSError>.JAsyncBinder
    let analyzerForData           : JAsyncBinderForIdentifier
    let cacheKeyForIdentifier     : JCacheKeyForIdentifier
    let ignoreFreshDataLoadFail   : Bool


private func dataLoaderWithCachedResultBinder<Identifier, DataLoadContext>(
    ignoreFreshDataLoadFail: Bool,
    dataLoaderForIdentifier: AsyncTypes2<Identifier, (DataLoadContext, NSData), NSError>.AsyncBinder,
    loadDataIdentifier     : Identifier) -> AsyncTypes2<NSError, (DataRequestContext<DataLoadContext>, NSData), NSError>.AsyncBinder
{
    return { (bindError: NSError) -> AsyncTypes<(DataRequestContext<DataLoadContext>, NSData), NSError>.Async in
        
