Implemented SyncRoot
Refactor as IEnumerable<TValue>
When list is already empty, Clear() is no-op.