fix the problem with adding elements (elements are not added) after
{elems removal + addition of elements with specified IDs}:
1) add elems with IDs 1,2,3
2) remove elem 1 (1 stored in the pool )
3) add elem with id 1 (1 remains in the pool)
4) add elem with no id specified -> not added as GetFreeID() returns
1 which is already occupied
+ virtual int GetFreeID();