empty {{ size={($T1*)EndX - ($T1*)BeginX} }} ($T1*)EndX - ($T1*)BeginX ($T1*)CapacityX - ($T1*)BeginX ($T1*)EndX - ($T1*)BeginX ($T1*)BeginX {BeginX,s} BeginX,s (char*)EndX - (char*)BeginX (char*)CapacityX - (char*)BeginX (char*)EndX - (char*)BeginX (char*)BeginX {Data,[Length]s} Data,[Length]s Length Length Data {IntMask}: {($T1)(Value & PointerBitMask)} [{($T3)((Value >> IntShift) & IntMask)}] ($T1)(Value & PointerBitMask) ($T3)((Value >> IntShift) & IntMask) {"$T1", s8b}: {($T1)(Val.Value & Val.PointerBitMask)} {"$T2", s8b}: {($T2)(Val.Value & Val.PointerBitMask)} ($T1)(Val.Value & Val.PointerBitMask) ($T2)(Val.Value & Val.PointerBitMask) {"$T1", s8b}: {($T1)((Val.Val.Value >> 2) << 2)} {"$T2", s8b}: {($T2)((Val.Val.Value >> 2) << 2)} {"$T3", s8b}: {($T3)((Val.Val.Value >> 2) << 2)} ($T1)((Val.Val.Value >> 2) << 2) ($T2)((Val.Val.Value >> 2) << 2) ($T3)((Val.Val.Value >> 2) << 2) {"$T1", s8b}: {($T1)((Val.Val.Value >> 2) << 2)} {"$T2", s8b}: {($T2)((Val.Val.Value >> 2) << 2)} {"$T3", s8b}: {($T3)((Val.Val.Value >> 2) << 2)} {"$T4", s8b}: {($T4)((Val.Val.Value >> 2) << 2)} ($T1)((Val.Val.Value >> 2) << 2) ($T2)((Val.Val.Value >> 2) << 2) ($T3)((Val.Val.Value >> 2) << 2) ($T4)((Val.Val.Value >> 2) << 2) {{ empty }} {{ head={Head} }} Head Next this empty RefPtr [1 ref] {*Obj} RefPtr [{Obj->ref_cnt} refs] {*Obj} Obj->ref_cnt Obj {{ [Small Mode] size={NumElements}, capacity={CurArraySize} }} {{ [Big Mode] size={NumElements}, capacity={CurArraySize} }} NumElements CurArraySize CurArraySize ($T1*)CurArray empty {{ size={NumEntries}, buckets={NumBuckets} }} NumEntries NumBuckets NumBuckets Buckets {{ size={NumItems}, buckets={NumBuckets} }} NumItems NumBuckets NumBuckets (MapEntryTy**)TheTable empty ({this+1,s}, {second}) this+1,s second {Data} empty {*(($T1 *)(unsigned char *)storage.buffer)} *(($T1 *)(unsigned char *)storage.buffer)