I had thought about that, but couldn't think of the best way to implement it without a large opportunity for odd behavior.
Here are some of the thoughts that went through my mind:
1) Don't do anything. This would cause a duplicate object reference at data[size] and data[size-1], which would be very bad.
2) Set data[size] = removed_object. The inner array would have only distinct elements with no loss of instances.
3) Shift entire array and set data[size-1] = null. We only lose one object instance at the end, which hopefully wouldn't get hit all the time.
2) is the most efficient, but I didn't know what sort of assurances should be made about the removed element. I think most people would assume that once an object is removed from a List, regardless of the implementation, then that object is safe from modification by the list.