The only case when we need to apply the additional logic is when we run into parameterized type with type variable. For all other cases we can either do this validation in constant time (proposed double checking) or linear time (current).