missed some files
diff --git a/pkgs/ffigen/lib/src/config_provider/yaml_config.dart b/pkgs/ffigen/lib/src/config_provider/yaml_config.dart
index 7cb1371..3351e6a 100644
--- a/pkgs/ffigen/lib/src/config_provider/yaml_config.dart
+++ b/pkgs/ffigen/lib/src/config_provider/yaml_config.dart
@@ -1333,6 +1333,8 @@
       node.isIncluded = false;
     } else if (decl.excludeAllByDefault) {
       node.isIncluded = false;
+    } else if (node is public_ast.ObjCInterface && node.isObjCImport) {
+      node.isIncluded = false;
     } else {
       node.isIncluded = true;
     }
diff --git a/pkgs/ffigen/lib/src/header_parser/parser.dart b/pkgs/ffigen/lib/src/header_parser/parser.dart
index 1dcc446..c2ebd04 100644
--- a/pkgs/ffigen/lib/src/header_parser/parser.dart
+++ b/pkgs/ffigen/lib/src/header_parser/parser.dart
@@ -178,13 +178,18 @@
   visit(context, FixOverriddenMethodsVisitation(context), allBindings);
 
   // Execute Public AST visitors.
-  final publicAst = public_ast.PublicAst.fromBindings(rawBindings);
+  final allBindingsWithImports = allBindings.union(
+    rawBindings.where((b) => b.isObjCImport).toSet(),
+  );
+  final publicAst = public_ast.PublicAst.fromBindings(
+    allBindingsWithImports.toList(),
+  );
   for (final v in config.visitors) {
     publicAst.accept(v);
   }
 
   final applyConfigFiltersVisitation = ApplyConfigFiltersVisitation(config);
-  visit(context, applyConfigFiltersVisitation, rawBindings);
+  visit(context, applyConfigFiltersVisitation, allBindingsWithImports);
   final directlyIncluded = applyConfigFiltersVisitation.directlyIncluded;
   final indirectlyIncluded = applyConfigFiltersVisitation.indirectlyIncluded;
   final included = directlyIncluded.union(indirectlyIncluded);
diff --git a/pkgs/ffigen/lib/src/visitor/fill_method_dependencies.dart b/pkgs/ffigen/lib/src/visitor/fill_method_dependencies.dart
index 4de98d5..3dbfe1e 100644
--- a/pkgs/ffigen/lib/src/visitor/fill_method_dependencies.dart
+++ b/pkgs/ffigen/lib/src/visitor/fill_method_dependencies.dart
@@ -95,6 +95,7 @@
 
   @override
   void visitObjCInterface(ObjCInterface node) {
+    if (node.isObjCImport) return;
     if (!finalBindings.contains(node)) {
       node.generateAsStub = true;
       finalBindings.add(node);
diff --git a/pkgs/ffigen/lib/src/visitor/find_transitive_deps.dart b/pkgs/ffigen/lib/src/visitor/find_transitive_deps.dart
index e22f4cd..8398c7d 100644
--- a/pkgs/ffigen/lib/src/visitor/find_transitive_deps.dart
+++ b/pkgs/ffigen/lib/src/visitor/find_transitive_deps.dart
@@ -31,14 +31,18 @@
 
   @override
   void visitEnumClass(EnumClass node) {
-    if (node.isAnonymous) return;
-    visitBinding(node);
+    node.visitChildren(visitor);
+    if (!node.isAnonymous) {
+      transitives.add(node);
+    }
   }
 
   @override
   void visitTypealias(Typealias node) {
-    if (node.isAnonymous) return;
-    visitBinding(node);
+    node.visitChildren(visitor);
+    if (!node.isAnonymous) {
+      transitives.add(node);
+    }
   }
 }
 
diff --git a/pkgs/ffigen/test/native_objc_test/protocol_test_bindings.dart b/pkgs/ffigen/test/native_objc_test/protocol_test_bindings.dart
index 36425ee..7100665 100644
--- a/pkgs/ffigen/test/native_objc_test/protocol_test_bindings.dart
+++ b/pkgs/ffigen/test/native_objc_test/protocol_test_bindings.dart
@@ -646,27 +646,6 @@
       );
 }
 
-/// NSString
-///
-/// NSString
-extension type NSString._(objc.ObjCObject object$)
-    implements
-        objc.ObjCObject,
-        objc.NSObject,
-        objc.NSCopying,
-        objc.NSMutableCopying,
-        objc.NSSecureCoding {
-  /// Constructs a [NSString] that points to the same underlying object as [other].
-  NSString.as(objc.ObjCObject other) : object$ = other {}
-
-  /// Constructs a [NSString] that wraps the given raw object pointer.
-  NSString.fromPointer(
-    ffi.Pointer<objc.ObjCObjectImpl> other, {
-    bool retain = false,
-    bool release = false,
-  }) : object$ = objc.ObjCObject(other, retain: retain, release: release) {}
-}
-
 /// Construction methods for `objc.ObjCBlock<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>`.
 abstract final class ObjCBlock_Int32_ffiVoid {
   /// Returns a block that wraps the given raw block pointer.