Can a class of kind self specializes a class of kind other?

Property definitions

nitc $ MClassKind :: can_specialize
	# Can a class of kind `self` specializes a class of kind `other`?
	fun can_specialize(other: MClassKind): Bool
	do
		if other == interface_kind then
			# everybody can specialize interfaces
			return true
		else if self == interface_kind or self == enum_kind then
			# no other case for interfaces and enums
			return false
		else if self == subset_kind then
			# A subset may specialize anything, except another subset.
			# TODO: Allow sub-subsets once we can handle them.
			return other != subset_kind
		else if self == extern_kind then
			# only compatible with themselves
			return self == other
		else
			# assert self == abstract_kind or self == concrete_kind
			return other == abstract_kind or other == concrete_kind
		end
	end
src/model/model.nit:2744,2--2764,4