anchor.diff:  
     @override
     js_ast.Expression visitPropertyGet(PropertyGet node) {
  -    return _emitPropertyGet(
  -        node.receiver, node.interfaceTarget, node.name.text);
  +    var propertyGet =
  +        _emitPropertyGet(node.receiver, node.interfaceTarget, node.name.text);
  +    if (_isCheckableNative(node.interfaceTarget)) {
  +      // If target is a native getter with a non-nullable type, add a null check
  +      // for soundness.
  +      return runtimeCall('checkNativeNonNull(#)', [propertyGet]);
  +    }
  +    return propertyGet;
     }
   
     @override
  
positive.code:   }
  
    /// Return whether [member] returns a native object whose type needs to be
    /// null-checked. This is true for non-nullable native return types.
    bool _isNullCheckableNative(Member member) =>
        member != null &&
        member.isExternal &&
        _extensionTypes.isNativeClass(member.enclosingClass) &&
  
negative.code:       // Fields on a native class are implicitly native.
        // Methods/getters/setters are marked external/native.
        if (member is Field || _isExternal(member)) {
          var jsName = _annotationName(member, isJSName);
          return jsName != null && jsName != name;
        } else {
  