compact string is the first two kinds


ASCII:
PyASCIIObject(kind=PyUnicode_1BYTE_KIND) char[length]

non-ASCII(n):
PyASCIIObject(kind=PyUnicode_nBYTE_KIND) 0 NULL UCSn[length]
|                                             |
+-+-------------------------------------------+
  |
  PyCompactUnicodeObject

non-compat (legacy): (created by subclasses of Unicode)
PyCompactUnicodeObject                          UCSn*

Both the non-ascii compat Object and non-compat can be reperent in PyUnicodeObject

PyUnicode_DATA gets the last UCSn arrary/ptr as void*