private void EnsureSize(int sizeNeeded) {
if (sizeNeeded <= events.Length) {
return;
}
if (events == null || events.Length == 0) {
eventCount = 0;
events = new EventDescriptor[sizeNeeded];
return;
}
EnsureEventsOwned();
int newSize = Math.Max(sizeNeeded, events.Length * 2);
EventDescriptor[] newEvents = new EventDescriptor[newSize];
Array.Copy(events, 0, newEvents, 0, eventCount);
events = newEvents;
}