rework hasAncestor -> isAssignableFrom