Collections are among the basic building blocks for writing code. Frequently used collections such as List, Set, and Map are designed to serve a basic fundamental purpose, but sometimes these collections are not enough and developers will extend them to add new functionality. In this session, Nikhil will extend the Map data structure to create two new collections called as a bag (MultiSet) and a multimap (MultiValuedMap). But does just extending a collection mean that the job is considered complete? Often it is not enough. Nikhil will explain the audience the basics of creating a new collection, adding new APIs, the salient aspects of the new collection, and the various knobs and controls required in order to make it safe and usable. This talk is 100% hands-on demo with no slides and using TDD approach. All the implementations done using only the JDK data structures and no external libraries. After this talk, the audience will understand the thought process which needs to be put in while extending and creating new data structures, the helpful API which needs to be added and the safeguards which need to be put in place to help the users.