Merge "Revert "Revert "Use IsAssignableFrom instead of IsSubclass for robustness."""