 
 /**
  A unique key under which to register a block in Guise.
- 
- 
 */
 public struct Key: Hashable {
     public let type: String

    case `default`
}

private func hash<H: Hashable>(_ hashables: H...) -> Int {
    // djb2 hash algorithm: http://www.cse.yorku.ca/~oz/hash.html
    // &+ operator handles Int overflow

        return resolve(key: Key(type: T.self, name: Name.default, container: Name.default), parameter: parameter, cached: cached)
    }
    
    /**
     Helper method for filtering.
    */
    private static func filter(type: String?, name: AnyHashable?, container: AnyHashable?) -> [Key] {
        return lock.read {
            var keys = [Key]()
