       case let type as Y:
         return other(type, arg)
 
-      case let array as Array<Any>:
+      case let array as [Any]:
         if array.first is T {
           return array.flatMap { $0 as? T }.filter({ filter($0, arg) })
         } else {

      case let type as Y:
        return other(type)

      case let array as Array<Any>:
        if array.first is T {
          return array.flatMap { $0 as? T }.filter(filter)
        } else {

      case let type as T:
        return filter(type, arg)

      case let array as [Any]:
        return array.flatMap { $0 as? T }.filter({ filter($0, arg) })

      default:
