anchor.diff:              PromotableElement, DartType> {
     final Source source;
   
  -  final Expression? _receiver;
  +  /// The expression that was not promoted, or `null` if the thing that was not
  +  /// promoted was an implicit `this`.
  +  final Expression? _expression;
   
     final SyntacticEntity _errorEntity;
   
  
positive.code:   DartType? propertyType;
  
    _WhyNotPromotedVisitor(
        this.source, this._receiver, this._errorEntity, this._dataForTesting);
  
    @override
    DiagnosticMessage? visitDemoteViaExplicitWrite(
  
negative.code:   @override
    DiagnosticMessage? visitPropertyNotPromoted(
        PropertyNotPromoted<DartType> reason) {
      var expression = _expression;
      Element? receiverElement;
      if (expression is SimpleIdentifier) {
        receiverElement = expression.staticElement;
      } else if (expression is PropertyAccess) {
        receiverElement = expression.propertyName.staticElement;
      } else if (expression is PrefixedIdentifier) {
        receiverElement = expression.identifier.staticElement;
      } else {
        assert(false,
            'Unrecognized property access expression: ${expression.runtimeType}');
      }
      if (receiverElement is PropertyAccessorElement) {
        propertyReference = receiverElement;
  