anchor.diff:        case _PrimitiveDartType.none:
           break;
       }
  -    if (_isStructClass(nativeType)) {
  +    if (nativeType.isStructSubtype) {
         return true;
       }
  -    if (_isPointer(nativeType.element)) {
  +    if (nativeType.isPointer) {
         return true;
  -    }
  -    return false;
  -  }
  -
  -  /// Returns `true` iff [nativeType] is a struct type.
  -  bool _isStructClass(DartType nativeType) {
  -    if (nativeType is InterfaceType) {
  -      final superType = nativeType.element.supertype;
  -      if (superType == null) {
  -        return false;
  -      }
  -      final superClassElement = superType.element;
  -      if (superClassElement.library.name == _dartFfiLibraryName) {
  -        return superClassElement.name == _structClassName &&
  -            nativeType.typeArguments.isEmpty;
  -      }
  -    }
  -    return false;
  -  }
  -
  -  /// Return `true` if the [typeName] represents a subtype of `Struct`.
  -  bool _isSubtypeOfStruct(TypeName typeName) {
  -    var superType = typeName.name.staticElement;
  -    if (superType is ClassElement) {
  -      bool isStruct(InterfaceType? type) {
  -        return type != null &&
  -            type.element.name == _structClassName &&
  -            type.element.library.name == _dartFfiLibraryName;
  -      }
  -
  -      return isStruct(superType.supertype) ||
  -          superType.interfaces.any(isStruct) ||
  -          superType.mixins.any(isStruct);
       }
       return false;
     }
  
positive.code: 
    void _validateElementAt(MethodInvocation node) {
      var targetType = node.realTarget?.staticType;
      if (targetType is InterfaceType &&
          _isPointer(targetType.element) &&
          targetType.typeArguments.length == 1) {
        final DartType T = targetType.typeArguments[0];
  
        if (!_isValidFfiNativeType(T, allowVoid: true, allowEmptyStruct: true)) {
  
negative.code:       if (superName == _allocatorClassName) {
          return;
        }
        if (typename.ffiClass != null) {
          _errorReporter.reportErrorForNode(
              subtypeOfFfiCode, typename, [node.name, typename.name]);
        } else if (typename.isStructSubtype) {
          _errorReporter.reportErrorForNode(
              subtypeOfStructCode, typename, [node.name, typename.name]);
        }
  