         case "iPad4,4", "iPad4,5", "iPad4,6":           return .iPadMini2
         case "iPad4,7", "iPad4,8", "iPad4,9":           return .iPadMini3
         case "iPad5,1", "iPad5,2":                      return .iPadMini4
-        case "iPad6,3", "iPad6,4", "iPad6,7", "iPad6,8":return .iPadPro
+        case "iPad6,3", "iPad6,4":                      return .iPadPro9Inch
+        case "iPad6,7", "iPad6,8":                      return .iPadPro12Inch
         case "i386", "x86_64":                          return .simulator(mapIdentifierToDevice(String(validatingUTF8:
           getenv("SIMULATOR_MODEL_IDENTIFIER"))!))
         default:                                        return .unknown(identifier)


    // I know that reduce is O(n^2) (see http://airspeedvelocity.net/2015/08/03/arrays-linked-lists-and-performance/) but it's *so* nice ❤️ and since we are working with very short strings it shouldn't matter.
    let identifier = mirror.children.reduce("") { identifier, element in
      guard let value = element.value as? Int8,
        value != 0 else { return identifier }
      return identifier + String(UnicodeScalar(UInt8(value)))
    }


  /// Device is an [iPad Pro](http://www.apple.com/ipad-pro/)
  ///
  /// ![Image](http://images.apple.com/v/ipad-pro/c/images/shared/buystrip/ipad_pro_large_2x.png)
  case iPadPro9Inch
  case iPadPro12Inch

  #elseif os(tvOS)
  /// Device is an [Apple TV](http://www.apple.com/tv/)
