anchor.diff:      return;
     }
   }
  +
  +extension on InterfaceType? {
  +  bool isConcrete(String name) {
  +    var self = this;
  +    if (self == null) return false;
  +    var element = self.element;
  +    return element.lookUpConcreteMethod(name, element.library) != null;
  +  }
  +}
  
positive.code: 
  import 'package:analyzer/dart/ast/ast.dart';
  import 'package:analyzer/dart/element/element.dart';
  import 'package:analyzer/error/listener.dart';
  import 'package:analyzer/src/dart/element/element.dart';
  import 'package:analyzer/src/dart/error/hint_codes.dart';
  
negative.code:     var classElement = element.enclosingElement as ClassElement;
      String name = element.name;
  
      if (classElement.supertype.isConcrete(name)) {
        return true;
      }
  
      if (classElement.mixins.any((m) => m.isConcrete(name))) {
        return true;
      }
  
      if (classElement.superclassConstraints.any((c) => c.isConcrete(name))) {
        return true;
      }
  
  