docs: def _clean_key_type(key_name, escape_char=ESCAPE_SEQ):
      """Removes type specifier returning detected type and
      a key name without type specifier.
  
      :param str key_name: A key name containing type postfix.
      :rtype: tuple[type|None, str]
      :returns: Type definition and cleaned key name.
      """
  
      for i in (2, 1):
  
          if len(key_name) < i:
              return None, key_name
  
          type_v = key_name[-i:]
  
          if type_v in _KEY_SPLIT:
              if len(key_name) <= i:
                  return _KEY_SPLIT[type_v], ''
  
              esc_cnt = 0
              for pos in range(-i - 1, -len(key_name) - 1, -1):
                  if key_name[pos] == escape_char:
                      esc_cnt += 1
                  else:
                      break
  
              if esc_cnt % 2 == 0:
                  return _KEY_SPLIT[type_v], key_name[:-i]
              else:
                  return None, key_name
  
      return None, key_name