generic parameter is always extends object, but it not null if not constraints
corrected inherit checks for generic