What, Types.scala has never heard of Arrays before now? It's not like there's some theoretical reason beyond platform-specificity that Arrays inflict special cases wherever they go.
```
src/reflect/scala/reflect/internal/Types.scala
652:          || phase.erasedTypes && pre.typeSymbol != ArrayClass
781:     *  fresh existentials, except for Arrays.
787:      case ArrayTypeRef(elem2) if elem2.typeConstructor.isHigherKinded =>
789:          case ArrayTypeRef(elem1) => elem1 matchesPattern elem2
1824:    private var refs: Array[RefMap] = _
1896:      refs = Array(Map(), Map())
1912:      val lastRefs = Array(refs(0), refs(1))
2806:  object ArrayTypeRef {
2808:      case TypeRef(_, ArrayClass, arg :: Nil) => Some(arg)
4314:        if (sym == ArrayClass && phase.erasedTypes) {
```