anchor.diff:      var maybeUseValue = provider.getField('useValue');
       if (!dart_objects.isNull(maybeUseValue)) {
         if (maybeUseValue.toStringValue() == noValueProvided) return null;
  -      return _useValueExpression(maybeUseValue);
  +      try {
  +        return _useValueExpression(maybeUseValue);
  +      } on _PrivateConstructorException catch (e) {
  +        _logger.severe(
  +            'Could not link provider "${provider.getField('token')}" to '
  +            '"${e.constructorName}". You may have valid Dart code but the '
  +            'angular2 compiler has limited support for `useValue` that '
  +            'eventually uses a private constructor. As a workaround we '
  +            'recommend `useFactory`.');
  +      }
       }
       return null;
     }
  
positive.code:     var importType = o.importType(id, null, [o.TypeModifier.Const]);
  
      if (invocation.constructor.name.isNotEmpty) {
        return new o.InstantiateExpr(
            type.prop(invocation.constructor.name), params, importType);
      }
  
negative.code:         .prop(dart_objects.coerceString(token, 'name'));
    }
  }
  
  class _PrivateConstructorException {
    final String constructorName;
    _PrivateConstructorException(this.constructorName);
  }
  