Implement whole bunch of stuff in IsAssignableTo.