> Note also that this isn't a linear hierarchy: in the String example above, simple-array and string are unrelated.
Are you sure? If that's the case, it would have to be that the object is not a suitable argument to a method parameter of type string.
Don't guess about whether they're considered unrelated in that implementation, use subtypep and typep.
If (typep "X" 'string) yields true, then the type of "X", whatever it is, is related to string.