speeding up isSubtypeOf ( by memoization) , ensure a 10 fold performance improvement