I noticed that query functions like isPointerType() examine the canonical type but isIntegerType() does not? Is this intentional? If so, it would be great if the comments in Type.h made this all a little bit clearer.