Good version!
Only Maps and ArrayLists are used.