         
         let searchAllFilesInDirectory = _stringIsPathToDirectory(_storage)
         let namePrefix = searchAllFilesInDirectory ? nil : url.lastPathComponent
-        let checkFileName = _getFileNameChecker(namePrefix, caseSensetive: flag)
-        let checkExtension = _getExtensionChecker(filterTypes, caseSensetive: flag)
+        let checkFileName = _getFileNamePredicate(namePrefix, caseSensetive: flag)
+        let checkExtension = _getExtensionPredicate(filterTypes, caseSensetive: flag)
         
         guard let
             resolvedURL = url._resolveSymlinksInPath(excludeSystemDirs: false),

        }
        
        var isDirectory = false
        let isAbsolutePath = NSFileManager.defaultManager().fileExistsAtPath(path, isDirectory: &isDirectory)
        return isAbsolutePath && isDirectory
    }
    
    internal typealias _FileNamePredicate = String? -> Bool
    
    internal func _getNamesAtURL(filePathURL: NSURL, prependWith: String, nameValidator: _FileNamePredicate, typeValidator: _FileNamePredicate) -> [String] {
        var result: [String] = []
        
        if let enumerator = NSFileManager.defaultManager().enumeratorAtURL(filePathURL, includingPropertiesForKeys: nil, options: .SkipsSubdirectoryDescendants, errorHandler: nil) {
            for item in enumerator.lazy.map({ $0 as! NSURL }) {
                let itemName = item.lastPathComponent
                
                let matchByName = nameValidator(itemName)
                let matchByExtension = typeValidator(item.pathExtension)
                
                if matchByName && matchByExtension {
                    if prependWith.isEmpty {

            return 0
        }

        var matches = _getNamesAtURL(urlWhereToSearch, prependWith: "", namePredicate: checkFileName, typePredicate: checkExtension)
        
        if matches.count == 1 {
            let theOnlyFoundItem = NSURL(fileURLWithPath: matches[0], relativeToURL: urlWhereToSearch)
            if theOnlyFoundItem.hasDirectoryPath {
                matches = _getNamesAtURL(theOnlyFoundItem, prependWith: matches[0], namePredicate: { _ in true }, typePredicate: checkExtension)
            }
        }
        
