If calling TArray.RemoveAt(0, X < 0, false);
It will corrupt the memory. The 2nd parameter is checked for >=0 but they way it is done, fails and so it corrupts the memory entirely.
void RemoveAt(int32 Index, int32 Count = 1, bool bAllowShrinking = true)
{
if (Count)
{
CheckInvariants();
checkSlow((Count >= 0) & (Index >= 0) & (Index + Count <= ArrayNum));
‘checkSlow’ fails when Count < 0, also If (Count) returns true if count is negative!