This is part of a patch series working towards the ability to make
SourceLocation into a 64-bit type to handle larger translation units.
In ObjCMethodDecl, an array of pointers (parameters) and an array of
SourceLocations are stored end to end in a single allocated piece of
memory. The offset within that memory where the second array begins
was being computed in a really simple way, based on the assumption
that pointers had at least as much alignment requirement as
SourceLocations. But when pointers and SourceLocations can each be
either 32 or 64 bits, this won't be a reliable assumption any more.
This patch separates the two types of data into two separate
allocations, so that there's no need to do a tricky offset computation.
I don't think you need the const_cast