docs: def get_validated_attribute_type_info(typ, item_type, attr_name):
      """
      Routine to validate that typ is a valid non-empty PEP484 type hint. If it is a forward reference, it will be 
      resolved 
      
      :param typ: 
      :param item_type: 
      :param attr_name: 
      :return: 
      """
      if (typ is None) or (typ is Parameter.empty):
          raise TypeInformationRequiredError.create_for_object_attributes(item_type, attr_name, typ)
  
      # resolve forward references
      typ = resolve_forward_ref(typ)
  
      if not is_valid_pep484_type_hint(typ):
          raise InvalidPEP484TypeHint.create_for_object_attributes(item_type, attr_name, typ)
  
      return typ