Returns true if mod is a subclass of other or is the same
as other. Returns nil if there’s no relationship between the
two. (Think of the relationship in terms of the class definition: “class
A<B” implies “A<B”.)
VALUErb_class_inherited_p(VALUEmod,VALUEarg){VALUEstart=mod;if(mod==arg)returnQtrue;if(!CLASS_OR_MODULE_P(arg)&&!RB_TYPE_P(arg,T_ICLASS)){rb_raise(rb_eTypeError,"compared with non class/module");}arg=RCLASS_ORIGIN(arg);if(class_search_ancestor(mod,arg)){returnQtrue;}/* not mod < arg; check if mod > arg */if(class_search_ancestor(arg,start)){returnQfalse;}returnQnil;}