When designing collection classes, should GetEnumerator be virtual if it implements the generic IEnumerable interface? I can't think of a single good reason why it should be. On the other hand, I can't think of a single bad reason either.