Depends on https://reviews.llvm.org/D23078 and https://reviews.llvm.org/D23079
We say ObjCTypeParamType is ObjCObjectPointerType, but we assert
fail when trying to call Type::getPointeeType.
We compare the types between declaration and definition for ObjCMethods that
use the type parameter, by using simpleTransform that transforms the
ObjCTypeParamType to the underlying type of the ObjCTypeParamDecl. This matches
our previous behavior.
rdar://24619481
rdar://25060179
I think we should combine the protocol lists.