anchor.diff:  
   class NoProviderException extends ArgumentError {
     NoProviderException(message) : super(message);
  -  NoProviderException.forType(String typeName) : this('No provider for ${typeName}!');
   }
   
   class CircularDependencyException extends ArgumentError {
  
positive.code:       // implicit type provider, only root injector does that
        resolving.add(typeName);
        Provider provider = new _TypeProvider.fromString(typeName);
        instances[typeName] = provider.get(_getInstanceByTypeName, (msg) {
          String graph = resolving.join(' -> ');
          resolving.clear();
          return new NoProviderException('${msg} (resolving ${graph})');
        });
        resolving.removeLast();
      }
  
  
negative.code:     instances['Injector'] = reflect(this);
    }
  
    String _error(message, [appendDependency]) {
      if (?appendDependency) {
        resolving.add(appendDependency);
      }
  
      String graph = resolving.join(' -> ');
  
      resolving.clear();
  
      return '$message (resolving $graph)';
    }
  
    dynamic _getInstanceByTypeName(String typeName) {
      if (PRIMITIVE_TYPES.contains(typeName)) {
        throw new NoProviderException(_error('Cannot inject a primitive type of ${typeName}!', typeName));
      }
  
      if (instances.containsKey(typeName)) {
  