     if !signal.args.allSatisfy({ !($0.knownType is GIR.Alias) }) || (signal.returns.knownType is GIR.Alias) {
         return "// Warning: signal \(signal.name) is ignored because of Alias argument or return is not yet supported"
     }
-    
-    if !signal.args.allSatisfy({ $0.ownershipTransfer == .none }) || signal.returns.ownershipTransfer != .none {
-        return "// Warning: signal \(signal.name) is ignored because of argument or return with owner transfership is not allowed"
-    }
 
     if !signal.args.allSatisfy({ !$0.isOptional }) || signal.returns.isOptional {
         return "// Warning: signal \(signal.name) is ignored because of argument or return optional is not allowed"
     }
 
-    if !signal.args.allSatisfy({ $0.typeRef.type.name != "utf8" }) || signal.returns.typeRef.type.name == "utf8" {
-        return "// Warning: signal \(signal.name) is ignored because of argument or return String is not allowed"
-    }
-    
+    if !signal.args.allSatisfy({ !$0.isArray }) || signal.returns.isArray {
+        return "// Warning: signal \(signal.name) is ignored because of argument or return array is not allowed"
+    }
+
     if !signal.args.allSatisfy({ $0.isNullable == false }) || signal.returns.isNullable == true {
         return "// Warning: signal \(signal.name) is ignored because of argument or return nullability is not allowed"
     }

        case is GIR.Enumeration:
            return self.argumentTypeName
        default: // Treat as fundamental (if not a fundamental, report error)
            return self.argumentTypeName
        }
    }
    

        "public extension \(record.name.swift) {"
        Code.block {
            Code.loop(over: record.signals.filter { signalSanityCheck($0) == nil }) { signal in
                
                commentCode(signal)
                "/// - Note: This function represents signal `\(signal.name)`"
                "/// - Parameter flags: Flags"
