When an instance of an object of a class, say Foo, is
inserted in a collection like List<T> or Dictionary<TKey, TValue>,
do collections create new instance of Foo
and inserts it or they refer to same instance created before inserting into
collections?