   
   // MARK: - Thread safety
   
-  private func threadSafe<T>(closure: () throws -> T) rethrows -> T {
+  private func threadSafe<T>(@noescape closure: () throws -> T) rethrows -> T {
     lock.lock()
     defer {
       lock.unlock()

  
  public func register(definition: Definition, forKey key: DefinitionKey) {
    threadSafe {
      self.definitions[key] = definition
    
      if let definition = definition as? AutoInjectedDefinition where key.associatedTag == nil {
        self.registerInjected(definition)
        self.registerInjectedWeak(definition)
      }
    }
  }

   */
  public func reset() {
    threadSafe {
      definitions.removeAll()
    }
  }

