I am a Windows person, sooo here I go:
Check that you have a valid range of addresses that you can read using IsBadReadPtr(pointer(abitmap), abitmap.InstanceSize)
We still don't know what's in these addresses. Repeat the same process based on the type you are checking.
For classes, the first address is a PPVMT, check the address it points at using IsBadReadPtr
and again for
and finally for the class name pointer. Then compare the class name.