internal unsafe String GetStringPoolString(uint offset) {
char* pCharValues = unchecked((char*)(m_pDataPool + offset));
// In the case of empty string, pCharValues[0] will have a size of 1, so we should check pCharValues[1] for empty string.
if (pCharValues[1] == 0) return (String.Empty);
return (new String(pCharValues + 1, 0, (int)pCharValues[0]));
}