public boolean isSubtypes ( List < Type > ts , List < Type > ss ) { while ( ts . tail != null && ss . tail != null /*inlined: ts.nonEmpty() && ss.nonEmpty()*/ && isSubtype ( ts . head , ss . head ) ) { ts = ts . tail ; ss = ss . tail ; } return ts . tail == null && ss . tail == null ; /*inlined: ts.isEmpty() && ss.isEmpty();*/ }
Are corresponding elements of ts subtypes of ss? If lists are of different length return false .