anchor.diff:        if (superName == _allocatorClassName) {
           return;
         }
  -      if (_isDartFfiClass(typename)) {
  +      if (typename.ffiClass != null) {
           _errorReporter.reportErrorForNode(
               subtypeOfFfiCode, typename, [node.name, typename.name]);
  -      } else if (_isSubtypeOfStruct(typename)) {
  +      } else if (typename.isStructSubtype) {
           _errorReporter.reportErrorForNode(
               subtypeOfStructCode, typename, [node.name, typename.name]);
         }
  
positive.code:   handle,
    none,
  }
  
negative.code:     }
      var target = node.realTarget!;
      var targetType = target.staticType;
      if (targetType is InterfaceType && targetType.isPointer) {
        final DartType T = targetType.typeArguments[0];
        if (!T.isNativeFunction ||
            !_isValidFfiNativeFunctionType(
                (T as InterfaceType).typeArguments.single)) {
          final AstNode errorNode =
  