Refactor TypeParameter isCompatibleWith logic out of ParameterizedClass
Refactor isCompatibleWith(TypeValue) to have alternative isCompatibleWith(Type)