Member predicate ArrayType :: isDeeplyConstBelow
Holds if this type is constant and only contains constant types, excluding
the type itself. It is implied by Type.isDeeplyConst() and is just used to
implement that predicate.
const char *const is deeply constant and deeply constant below,
const char * is only deeply constant below (the pointer can be changed,
but not the underlying char).
char *const is neither (it is just
predicate isDeeplyConstBelow ( )